Книга: Системное программное обеспечение. Лабораторный практикум
Таблица 5.7. Матрица операторного предшествования
Таблица 5.7. Матрица операторного предшествования
В таком случае проблематично выполнить преобразования грамматики и привести ее к виду грамматики операторного предшествования без добавления в язык новых ключевых слов. Поскольку приведенный выше синтаксис оператора while соответствует языкам C и C++, можно проиллюстрировать, как указанная проблема решается в этих языках [13, 25, 32, 39]. Тогда в грамматику надо включить сразу два новых нетерминальных символа (обозначим их Р и R), а блок правил грамматики G для нетерминальных символов L и О будет выглядеть следующим образом:
L ? Р| L;P | L;
О ? if(B) О; else Р | if(B) R else Р | if(B) Р | while(B) Р | а:=Е
R ? begin L end
Р ? О | R
И показанный выше оператор будет выглядеть так:
if (а<0) while (а<10) а:=а+1; else а:=1;
В языках C и C++ операторным скобкам begin и end соответствуют лексемы { и }, а оператор присваивания обозначается одним символом: =. Но суть подхода этот пример иллюстрирует верно: в этих языках для условного оператора правила различны в зависимости от того, входит в него составной оператор или одиночный оператор (точка с запятой ставится перед else для одиночных операторов в отличие от языка Pascal, где этой проблемы нет, так как конфликт между then и else может быть разрешен указанным выше способом, как в табл. 5.7). Желающие могут построить для такого языка матрицу операторного предшествования и убедиться, что она строится без конфликтов.
- Построение распознавателя
- Таблица 5.3. Множества крайних левых и крайних правых символов. Шаг 1
- Таблица 5.4. Множества крайних левых и крайних правых символов. Результат
- Таблица 5.5. Множества крайних левых и крайних правых терминальных символов. Шаг 1
- Таблица 5.6. Множества крайних левых и крайних правых терминальных символов. Результат
- Преобразование грамматики, модификация языка и другие способы разрешения конфликтов
- Таблица 5.7. Матрица операторного предшествования
- Построение остовной грамматики
- Реализация синтаксического распознавателя
- Таблица 5.6. Множества крайних левых и крайних правых терминальных символов. Результат
- Таблица 3.8. Матрица операторного предшествования
- Таблица 3.7. Множества крайних левых и крайних правых терминальных символов. Результат
- Таблица 3.4. Множества крайних левых и крайних правых символов. Шаг 3
- Таблица 5.4. Множества крайних левых и крайних правых символов. Результат
- Безопасная работа с внешними таблицами
- Можно ли сделать командную строку цветной (как в фильме «Матрица»)?
- Урок 5.6. Работа с таблицами
- Общее понятие об электронных таблицах
- Итоговые вычисления в таблицах
- Практическая работа 52. Итоговые вычисления в таблицах
- Режимы работы с таблицами