Re[3]: Граматика С++
От: mefrill Россия  
Дата: 27.07.04 09:03
Оценка: 1 (1)
SJA>А можно примеры извесных контекстно свободных языков ?

Самый известный пример, наверное, это язык арифметических выражений без переменных (или можно с переменными, но без их предварительного объявления, скрипт короче).

Выражение --> Число
Выражение --> Число + Число
Выражение --> Число — Число
Выражение --> Число * Число
Выражение --> Число / Число

Число, +, -, * и / — терминалы грамматики, Выражение — ее единственный нетерминал, который также является стартовым (S в определении грамматики).

Конечно, эта грамматика не отражает приоритета операций, чтобы отражала, необходимо ввести еще один нетерминал, заставляющий сначала разбирать умножение и деление но, в принципе, является вполне фунгкциональной. Зависимость от контекста можно выразить как невозможность определить в языке, что данный нетерминал означает ВСЕГДА, где бы он в предложении не встретился, одно и тоже, причем заранее определенное одно и тоже. Выражение в языке выше не означает одно и тоже, а целых пять различных кончтрукций, но, встетив Выражение при разборе предложения языка мы не должны смотреть ни назад, ни заглядывать вперед, чтобы определить какую конструкцию использовать при разборе, т.е. не должны рассматирвать контекст, в котором встретился данный нетерминал.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.