Язык содержит следующие конструкции:
пустой оператор: ;
объявление переменных: declare V TYPE; до любых других операторов
цикл while: while T: O
цикл с параметром: for each V in E: O
условный оператор: if T: O [else: O]
оператор ввода: load(V, V, ...);
оператор вывода: put(E, E, ...);
метка: L:
переход к метке: goto L;
множественное ветвление: switch E: case C, C, ...: O case C, C, ...: O ... [default: O] end switch; выполняется только оператор с соответствующей меткой
генерация исключений: fail;
комментарии: rem - первое слово строки и далее комментарий до конца строки
составной оператор: { P };
Здесь заглавными буквами обозначены: L - имя метки (идентификатор), P - программа, O - оператор, V - имя переменной (идентификатор), E - выражение, T - тест, TYPE - название типа данных, С - константа. Маленькими буквами записаны ключевые слова. В квадратных скобках записаны части операторов, которые могут отсутствовать .
Нужно реализовать лексический анализатор (автомат + программа) и синтаксический анализатор языка с помощью грамматики простого предшествования. В программе это 2 отдельных класса.
Программа на C++. Запрещено использовать стандартные библиотеки, кроме ввода/вывода.
| Гарантия на работу | 1 год |
| Средний балл | 4.54 |
| Стоимость | Назначаете сами |
| Эксперт | Выбираете сами |
| Уникальность работы | от 70% |