ВУЗ:
Составители:
ным, динамическая – ее логика изменения транслятору не известна. Кроме об-
ластей для хранения значений локальных и промежуточных переменных,
транслятор должен выделить ячейки для сохранения состояния вычислительно-
го процесса процедур, для приема значений фактических параметров, решать
многие другие вопросы.
6.11 Операторные грамматики
Контекстно свободные грамматики включают в себя так называемые опе-
раторные грамматики /10/. Правила этих грамматик таковы, что никакие два
нетерминала не являются смежными в правой части. В этом случае лежащий
между ними терминал можно представить как оператор. Рассмотрим частный
случай операторных грамматик – грамматику операторного предшествования
(ГОП).
Определим правила:
a
≈b, если A→αaβbγ∈P; здесь α,γ∈V* и β∈N∪{λ};
a
≺ b, если A→ αaBβ∈P; здесь B
⇒
+
γbδ, γ∈N∪{Λ} и α,β,δ∈V*;
a>b, если A→ αBbβ∈P; здесь B
⇒
+
γaδ, δ∈N∪{Λ} и α,β,γ ∈V*;
├ a, если S
⇒
+
αaβ, α∈N∪{Λ}, β∈V*;
a
≻ ┤, если S
⇒
+
αaβ, β∈N∪{Λ}, α∈V*.
Здесь символы
≺ , ≈ и ≻ обозначают отношения предшествования:
«имеет меньшее старшинство», «имеет равное старшинство» и «имеет большее
старшинство» соответственно. Сами отношения определяются на множестве
T
∪{├, ┤}, где и - новые символы, ограничивающие предложения.
Пример
- E→E+T T, T→T*P P, P→(E) x. Для этой грамматики отно-
шения предшествования соответствуют таблице
Таблица
+ * ( ) x
┤
├
≺ ≺ ≺
≺
+ ≻ ≺ ≺ ≻ ≺ ≻
* ≻ ≻ ≺ ≻ ≺ ≻
( ≺ ≺ ≺
≈
≺
) ≻ ≻
≻
≻
x ≻ ≻
≻
≻
Построим вывод предложения
├ x*(x+x) ┤ в этой ГОП. Заменяя x целы-
ми числами, 2, 3, 4, получаем
├2*(3+4) ┤. Записывая отношения предшество-
вания под этим выражением, замечаем , как определяется порядок вычислений.
├ 2 *;
≺ ≻;
ным, динамическая – ее логика изменения транслятору не известна. Кроме об-
ластей для хранения значений локальных и промежуточных переменных,
транслятор должен выделить ячейки для сохранения состояния вычислительно-
го процесса процедур, для приема значений фактических параметров, решать
многие другие вопросы.
6.11 Операторные грамматики
Контекстно свободные грамматики включают в себя так называемые опе-
раторные грамматики /10/. Правила этих грамматик таковы, что никакие два
нетерминала не являются смежными в правой части. В этом случае лежащий
между ними терминал можно представить как оператор. Рассмотрим частный
случай операторных грамматик – грамматику операторного предшествования
(ГОП).
Определим правила:
a≈b, если A→αaβbγ∈P; здесь α,γ∈V* и β∈N∪{λ};
a≺ b, если A→ αaBβ∈P; здесь B ⇒+γbδ, γ∈N∪{Λ} и α,β,δ∈V*;
a>b, если A→ αBbβ∈P; здесь B ⇒+γaδ, δ∈N∪{Λ} и α,β,γ ∈V*;
├ a, если S ⇒+αaβ, α∈N∪{Λ}, β∈V*;
a≻ ┤, если S ⇒+αaβ, β∈N∪{Λ}, α∈V*.
Здесь символы ≺ , ≈ и ≻ обозначают отношения предшествования:
«имеет меньшее старшинство», «имеет равное старшинство» и «имеет большее
старшинство» соответственно. Сами отношения определяются на множестве
T∪{├, ┤}, где и - новые символы, ограничивающие предложения.
Пример - E→E+T T, T→T*P P, P→(E) x. Для этой грамматики отно-
шения предшествования соответствуют таблице
Таблица
+ * ( ) x ┤
├ ≺ ≺ ≺ ≺
+ ≻ ≺ ≺ ≻ ≺ ≻
* ≻ ≻ ≺ ≻ ≺ ≻
( ≺ ≺ ≺ ≈ ≺
) ≻ ≻ ≻ ≻
x ≻ ≻ ≻ ≻
Построим вывод предложения ├ x*(x+x) ┤ в этой ГОП. Заменяя x целы-
ми числами, 2, 3, 4, получаем ├2*(3+4) ┤. Записывая отношения предшество-
вания под этим выражением, замечаем , как определяется порядок вычислений.
├ 2 *;
≺ ≻ ;
Страницы
- « первая
- ‹ предыдущая
- …
- 104
- 105
- 106
- 107
- 108
- …
- следующая ›
- последняя »
