Упражнение 2.1.25 |
Синтаксический разбор
Определение 13.1.14. Протоколом
вычислительного процесса
МП-Автомата
будем называть последовательность переходов,
примененных в этом вычислительном процессе.
Формально говоря,
протоколом вычислительного процесса
![\lp q_0 , w_0 , \alpha_0 \rp ,\
\lp q_1 , w_1 , \alpha_1 \rp ,\ldots ,\
\lp q_n , w_n , \alpha_n \rp](/sites/default/files/tex_cache/8242d3fe8c2d81036a4089006203e429.png)
![\lp \lp q_0 , x_1 , \beta_1 \rp , \lp q_1 , \gamma_1 \rp \rp ,\ldots ,\
\lp \lp q_{n-1} , x_n , \beta_n \rp , \lp q_n , \gamma_n \rp \rp ,](/sites/default/files/tex_cache/59ae46c9bdac8e5629dab6810240b219.png)
![w_{i-1} = x_i w_i](/sites/default/files/tex_cache/03921e842be8498b11c49b7791b28504.png)
![\beta_i](/sites/default/files/tex_cache/b2b91e24b666373d478b4cd7cbe66060.png)
![\gamma_i](/sites/default/files/tex_cache/53056700f2611636f5fc00cc252594d3.png)
![\Gamma^*](/sites/default/files/tex_cache/d3f82c210d22264b82bef474176e73c5.png)
![\begin{align*}
& \lp \lp q_{i-1} , x_i , \beta_i \rp , \lp q_i , \gamma_i \rp \rp
\in \Delta ,\\
& \alpha_{i-1} = \beta_i \zeta ,\\
& \alpha_i = \gamma_i \zeta
\end{align*}](/sites/default/files/tex_cache/3b1607d5e2c311afee3e4e78fe6964cc.png)
![\zeta \in \Gamma ^*](/sites/default/files/tex_cache/70a36df0cdff55ffc59c23e1bc50822e.png)
Пример 13.1.15. Протоколом вычислительного процесса из примера 13.1.10 является последовательность
![\begin{multiline*}
\lp \lp 1 , b , \varepsilon \rp ,
\lp 2 , D \rp \rp ,\
\lp \lp 2 , a , \varepsilon \rp ,
\lp 1 , D \rp \rp ,\
\lp \lp 1 , b , \varepsilon \rp ,
\lp 2 , D \rp \rp ,\\
\lp \lp 2 , \varepsilon , D \rp ,
\lp 2 , \varepsilon \rp \rp ,\
\lp \lp 2 , \varepsilon , D \rp ,
\lp 2 , \varepsilon \rp \rp ,\
\lp \lp 2 , \varepsilon , D \rp ,
\lp 2 , \varepsilon \rp \rp .
\end{multiline*}](/sites/default/files/tex_cache/90b32e6712c788c0b7b20647eae2e59a.png)
Определение 13.1.16.
Для каждой контекстно-свободной грамматики
обозначим через
контекстно-свободную грамматику
,
где
и
-
два различных новых символа, не принадлежащие множеству
,
и
.
Грамматику
будем называть грамматикой с маркером конца строки.
Терминальный алфавит
грамматики
(то есть множество
)
будем обозначать через
.
Нетерминальный алфавит
будем обозначать через
.
Пример 13.1.17.
Рассмотрим контекстно-свободную грамматику G
с терминальным алфавитом ,
вспомогательным алфавитом N = {S,A,B,C}
и
правилами
![\begin{align*}
A \; & {\to} \; A \trm{+} B , & B \; & {\to} \; B \trm{*} C , & C \; & {\to} \; \trm{(} A \trm{)} , \\
A \; & {\to} \; A \trm{-} B , & B \; & {\to} \; B \trm{/} C , & C \; & {\to} \; \trm{m} , \\
A \; & {\to} \; B , & B \; & {\to} \; C , & C \; & {\to} \; \trm{n} .
\end{align*}](/sites/default/files/tex_cache/269e810c1bf4e974b8f010747b005cfe.png)
![G_\eos](/sites/default/files/tex_cache/537339a66fb1d94b3e5c0368bd1ff512.png)
![\begin{align*}
T \; & {\to} \; A \eos , & B \; & {\to} \; B \trm{*} C , & C \; & {\to} \; \trm{(} A \trm{)} , \\
A \; & {\to} \; A \trm{+} B , & B \; & {\to} \; B \trm{/} C , & C \; & {\to} \; \trm{m} , \\
A \; & {\to} \; A \trm{-} B , & B \; & {\to} \; C , & C \; & {\to} \; \trm{n} . \\
A \; & {\to} \; B ,
\end{align*}](/sites/default/files/tex_cache/c503c7681cb52db1bd2f61af97d00aa7.png)
Замечание 13.1.18.
Очевидно, что .
Лемма 13.1.19. Если , где
и
, то
.
Доказательство.
Очевидно, что если ,
то
слово
не содержит символа
.
Теперь докажем индукцией по длине вывода,
что если ,
то
.
Пусть на последнем шаге в этом выводе применялось правило
.
Если ,
то
,
что невозможно (очевидно, что если
,
то слово
не содержит символа
).
Если ,
то рассмотрим два случая.
При
![S \eos
\overstar{\myunderset{ G_\eos }{\Rightarrow }}
\eta_1 A \eta_2 \eos \theta
\myunderset{ G_\eos }{\Rightarrow }
\eta_1 \alpha \eta_2 \eos \theta](/sites/default/files/tex_cache/d15da5afefbfc551d4bba0c582036213.png)
![\theta = \varepsilon](/sites/default/files/tex_cache/0da90651de0fb66a7d67d9b3fe2f7b99.png)
![S \eos
\overstar{\myunderset{ G_\eos }{\Rightarrow }}
\eta \eos \theta_1 A \theta_2
\myunderset{ G_\eos }{\Rightarrow }
\eta \eos \theta_1 \alpha \theta_2](/sites/default/files/tex_cache/20c8b300c455a8d33f3ae3a022ca9346.png)
![\theta_1 A \theta_2 = \varepsilon](/sites/default/files/tex_cache/0d943f5b7b5b0fec0cd40cec581ed5ae.png)
Определение 13.1.20.
Пусть даны контекстно-свободная грамматика
и МП-автомат
.
Будем говорить, что МП-автомат M - нисходящий магазинный анализатор
(или предсказывающий анализатор,
top-down, left-to-right parser, predictive parser)
для грамматики G,
если
и существует такой
гомоморфизм
,
что
для каждого
вычислительного процесса
(МП-автомата M ),
допускающего слово
,
образ протокола этого вычислительного процесса при гомоморфизме
является протоколом некоторого левостороннего вывода
слова w
в грамматике
.
(При задании гомоморфизма r
конечные множества
и
рассматриваются как два алфавита.)
Пример 13.1.21.
Рассмотрим контекстно-свободную
грамматику
из примера 13.1.17.
Язык
распознается недетерминированным МП-автоматом
,
где
![\Gamma = \{ A , B , C ,
\trm{+} , \trm{-} , \trm{*} , \trm{/} , \trm{)} , \eos \}](/sites/default/files/tex_cache/fe3640e92a21e5fcaf707183343f5c16.png)
![\begin{align*}
{}
\Delta &= \{
\lp \lp 1 , \varepsilon , \varepsilon \rp ,
\lp 2 , A \eos \rp \rp ,\
\\ &\hphantom{ {} = {} \{ } %\}
\lp \lp 2 , \varepsilon , A \rp ,
\lp 2 , A \trm{+} B \rp \rp ,\
\lp \lp 2 , \varepsilon , A \rp ,
\lp 2 , A \trm{-} B \rp \rp ,\
\lp \lp 2 , \varepsilon , A \rp ,
\lp 2 , B \rp \rp ,\
\\ &\hphantom{ {} = {} \{ } %\}
\lp \lp 2 , \varepsilon , B \rp ,
\lp 2 , B \trm{*} C \rp \rp ,\
\lp \lp 2 , \varepsilon , B \rp ,
\lp 2 , B \trm{/} C \rp \rp ,\
\lp \lp 2 , \varepsilon , B \rp ,
\lp 2 , C \rp \rp ,\
\\ &\hphantom{ {} = {} \{ } %\}
\lp \lp 2 , \trm{(} , C \rp ,
\lp 2 , A \trm{)} \rp \rp ,\
\lp \lp 2 , \trm{m} , C \rp ,
\lp 2 , \varepsilon \rp \rp ,\
\lp \lp 2 , \trm{n} , C \rp ,
\lp 2 , \varepsilon \rp \rp ,\
\\ &\hphantom{ {} = {} \{ } %\}
\lp \lp 2 , \trm{+} , \trm{+} \rp ,
\lp 2 , \varepsilon \rp \rp ,\
\\ &\hphantom{ {} = {} \{ } %\}
\lp \lp 2 , \trm{-} , \trm{-} \rp ,
\lp 2 , \varepsilon \rp \rp ,\
\\ &\hphantom{ {} = {} \{ } %\}
\lp \lp 2 , \trm{*} , \trm{*} \rp ,
\lp 2 , \varepsilon \rp \rp ,\
\\ &\hphantom{ {} = {} \{ } %\}
\lp \lp 2 , \trm{/} , \trm{/} \rp ,
\lp 2 , \varepsilon \rp \rp ,\
\\ &\hphantom{ {} = {} \{ } %\}
\lp \lp 2 , \trm{)} , \trm{)} \rp ,
\lp 2 , \varepsilon \rp \rp ,\
\\ &\hphantom{ {} = {} \{ } %\}
\lp \lp 2 , \eos , \eos \rp ,
\lp 2 , \varepsilon \rp \rp
\} .
\end{align*}](/sites/default/files/tex_cache/6d55b41b0663cd4b02f79b2d7250bf24.png)