ВУЗ:
Составители:
Рубрика:
если = vxw = vyw и существует некоторое правило p: x::= y,
где v,w, V
*
, х V
N
, у = V
*
\ {}
Строка порождает строку и обозначается
*
, когда от строки можно перейти к
строке с помощью последовательности непосредственных порождений.
Продолжая пример:
<прог> <оп> ; <прог> <оп> ; <оп> <пер> := <выр> ; <оп>
*
a := b + c; c := a + b - c;
Грамматика, использующая процедуры (непосредственного) порождения – порождающая
грамматика.
Строка непосредственно свертывается в строку и обозначается: ,
если = vxw = vyw и существует некоторое правило p: x::= y,
где v,w, V
*
, х V
N
, у = V
*
\ {}
Строка свертывается в строку и обозначается
*
, когда от строки можно перейти
к строке с помощью последовательности непосредственных свертываний.
Грамматика, использующая процедуры (непосредственного) свертывания –распознающая
грамматика.
Строки символов из обобщенного словаря, получающиеся в процессе порождения или
свертывания, называются сентенциальными формами.
Язык L, порождаемый данной грамматикой G - множество нетерминальных цепочек,
порождаемых из начального нетерминального символа. Такие терминальные цепочки
называются предложениями данного языка.
L(G) = { x V
*
N
| S
*
x }
Аналогично можно определить язык L через свертывание.
L(G) = { x V
*
N
| S
*
x }
Замечание. Другой вариант метаязыка
вместо ::= используется стрелка , терминальные символы записываются маленькими
(строчными) буквами, а нетерминальные – большими (прописными) буквами.
Такой вариант мета языка чаще используется в математической литературе. Первый
предпочитают использовать в литературе для программистов. Так что мы будем
пользоваться и тем и другим вариантами…
7.2. Деревья вывода
Порождение и свертывание можно также представлять с помощью деревьев вывода.
Пусть дана грамматика.
I T
I I + T
I I - T
T M
T T*M
T T/M
M (I)
M K
K a
K b
— 73 —
если = vxw = vyw и существует некоторое правило p: x::= y,
где v,w, V* , х VN, у = V* \ {}
Строка порождает строку и обозначается * , когда от строки можно перейти к
строке с помощью последовательности непосредственных порождений.
Продолжая пример:
<прог> <оп> ; <прог> <оп> ; <оп> <пер> := <выр> ; <оп> *
a := b + c; c := a + b - c;
Грамматика, использующая процедуры (непосредственного) порождения – порождающая
грамматика.
Строка непосредственно свертывается в строку и обозначается: ,
если = vxw = vyw и существует некоторое правило p: x::= y,
где v,w, V* , х VN, у = V* \ {}
Строка свертывается в строку и обозначается * , когда от строки можно перейти
к строке с помощью последовательности непосредственных свертываний.
Грамматика, использующая процедуры (непосредственного) свертывания –распознающая
грамматика.
Строки символов из обобщенного словаря, получающиеся в процессе порождения или
свертывания, называются сентенциальными формами.
Язык L, порождаемый данной грамматикой G - множество нетерминальных цепочек,
порождаемых из начального нетерминального символа. Такие терминальные цепочки
называются предложениями данного языка.
L(G) = { x V*N | S * x }
Аналогично можно определить язык L через свертывание.
L(G) = { x V*N | S * x }
Замечание. Другой вариант метаязыка
вместо ::= используется стрелка , терминальные символы записываются маленькими
(строчными) буквами, а нетерминальные – большими (прописными) буквами.
Такой вариант мета языка чаще используется в математической литературе. Первый
предпочитают использовать в литературе для программистов. Так что мы будем
пользоваться и тем и другим вариантами…
7.2. Деревья вывода
Порождение и свертывание можно также представлять с помощью деревьев вывода.
Пусть дана грамматика.
IT
II+T
I I - T
TM
T T*M
T T/M
M (I)
MK
Ka
Kb
— 73 —
Страницы
- « первая
- ‹ предыдущая
- …
- 71
- 72
- 73
- 74
- 75
- …
- следующая ›
- последняя »
