Максимальный балл: | 10 | Ограничение времени: | 1 сек | |
Ограничение памяти: | 512 Мб |
Требуется разработать лексический анализатор. Анализатор должен представлять утилиту командной строки, принимающую в качестве параметра имя файла с исходным кодом и ключ (для отличения от будущих режимов работы).
Анализатор должен определить последовательность лексем согласно выбранному вами языку программирования.
Исходный код анализатора должен быть выделен в отдельный класс/модуль, имеющий интерфейс типа итератора (т.е. функция "получить лексему" должна считывать и возвращать одну лексему без чтения остатка входного файла).
Набор лексем зависит от языка программирования, но обычно включает:
Репозиторий с анализатором должен содержать автоматические тесты, каждый тест должен включать входной и выходной файл.
Отправьте ссылку на конкретный коммит в репозитории на Github, например
https://github.com/klenin/cats-main/commit/dce22c8348808959881ed7d6852c520a41e47c9a
В качестве среды разработки укажите Answer text
.
В файле README укажите свои ФИО, вуз, направление подготовки, год, анализируемый язык программирования, инструкции по запуску как самого анализатора, так и автоматических тестов.
Выходные данные должны содержать описание лексем, по одному в строке. Каждое описание должно состоять из: номера строки, номера символа в строке, класса лексемы, значения лексемы и исходного кода лексемы. Поля описания должны быть разделены табуляцией.
В случае обнаружения ошибки должны выводиться строка, номер символа и текст сообщения об ошибке. После этого анализатор может завершать работу.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб | |
Максимальный балл: | 10 |
Требуется написать программу, проводящую синтаксический анализ простейших выражений.
Простейшие выаржения включают числовые литералы, идентификаторы переменных,
операции +
, -
, *
, /
и скобки для группировки операций.
Анализатор должен представлять доработку утилиты командной строки из предыдущего задания,
принимающую в качестве параметра имя файла с исходным кодом и ключ для отличения от прочих режимов работы.
Анализатор должен определить абстрактное синтаксическое дерево.
Исходный код анализатора должен быть выделен в отдельный класс/модуль, имеющий.
Репозиторий с анализатором должен содержать автоматические тесты, каждый тест должен включать входной и выходной файл.
Отправьте ссылку на конкретный коммит в репозитории на Github, например
https://github.com/klenin/cats-main/commit/dce22c8348808959881ed7d6852c520a41e47c9a
В качестве среды разработки укажите Answer text.
Выходные данные должны содержать абстрактное синтаксическое дерево, изображённое с помощью отступов и, возможно, ASCII графики.
В случае обнаружения ошибки вместо дерева должна выводиться строка, номер символа и текст сообщения об ошибке. После этого анализатор может завершать работу.
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб | |
Максимальный балл: | 10 |
Требуется написать программу, проводящую синтаксический анализ подмножества выбранного вами языка программирования. Подмножество зависит от конкретного языка, но обычно включает следующие ограничения:
Репозиторий должен содержать файл с грамматикой реализованного подмножества. Грамматика должна быть получена путём удаления части стандартной грамматики для выбранного языка. Реализованное подмножество должно быть строгим, то есть стандартный компилятор / интерпретатор должен принимать любую программу, которую принимает ваш анализатор.
Анализатор должен представлять доработку утилиты командной строки из предыдущего задания, принимающую в качестве параметра имя файла с исходным кодом и ключ для отличения от прочих режимов работы.
Анализатор должен определить абстрактное синтаксическое дерево.
Репозиторий с анализатором должен содержать автоматические тесты, каждый тест должен включать входной и выходной файл.
Отправьте ссылку на конкретный коммит в репозитории на Github, например
https://github.com/klenin/cats-main/commit/dce22c8348808959881ed7d6852c520a41e47c9a
В качестве среды разработки укажите Answer text.
Выходные данные должны содержать абстрактное синтаксическое дерево, изображённое с помощью отступов и, возможно, ASCII графики.
В случае обнаружения ошибки вместо дерева должна выводиться строка, номер символа и текст сообщения об ошибке. После этого анализатор может завершать работу.
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб | |
Максимальный балл: | 10 |
Требуется написать программу, которая
Отправьте ссылку на конкретный коммит в репозитории на Github, например
https://github.com/klenin/cats-main/commit/dce22c8348808959881ed7d6852c520a41e47c9a
В качестве среды разработки укажите Answer text.
Выходные данные должны содержать абстрактное синтаксическое дерево и таблицы символов, изображённые с помощью отступов и, возможно, ASCII графики.
В случае обнаружения ошибки вместо дерева должна выводиться строка, номер символа и текст сообщения об ошибке. После этого анализатор может завершать работу.
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб | |
Максимальный балл: | 10 |
Требуется написать программу, которая
Отправьте ссылку на конкретный коммит в репозитории на Github, например
https://github.com/klenin/cats-main/commit/dce22c8348808959881ed7d6852c520a41e47c9a
В качестве среды разработки укажите Answer text.