Описание: |
Работа делится на 4 последовательных этапа.
Необходимо написать программу/программы, которые:
Выполняет лексический анализ (Парсинг кода по служебным словам, идентификаторам(названиям переменных) и составить табличку). Пример: int a = 1; (id: 0, lex: TYPE_WORD, value: "int")(id: 1, lex: ID, value: "a") (id: 2, type: EQUAL, value: "=" ), и тд. Выполняет синтаксический анализ - построить дерево разбора по результатам предыдущей работы. Преподаватель рекомендует использовать узел как класс или структуру, содержащие описание конструкции языка - оператор, переменные, над которыми он выполняется, какие-то атрибуты, и, возможно, список из таких же структур, если это, например, цикл, чтобы отобразить вложенность.Выполняет семантический анализ - Анализ дерева и поиск необъявленных переменныхСинтезирует код. Анализ дерева и построение кода на выходном языке.
По требованиям:
Вы можете выбрать язык реализации по своему усмотрению (JS/PHP/JAVA/C++/C#/PYTHON).Код входного ЯПнаВУ си-подобный.Код выходного ЯПнаВУ можно выбрать попроще(Паскаль/python/JS). Подробные и осмысленные комментарии в коде лишними не будут.Оцените бюджет и сроки, пожалуйста. |