Лексический анализатор #
Нужно написать и покрыть тестами модуль лексического анализа.
Соответствие спецификации #
Лексический анализатор и его тесты должны соответствовать спецификации вашего языка:
- Спецификация должна появиться до начала кодирования — так же, как и в реальных проектах.
- Вы можете составлять спецификацию совместно или доверить это одному человеку.
- Ждать проверки спецификации преподавателем не нужно.
Требования к коду #
Требования к реализации лексера #
- Лексер следует писать без генераторов лексических анализаторов (таких как GNU Flex, lexertl и так далее)
- Весь код, связанный с лексическим анализом, должен располагаться в отдельной модуле программы
- Лексер должен загружать файл в память и обрабатывать посимвольно, при этом:
- следует хранить исходный текст и позицию чтения (целое число)
- допускается предпросмотр на сколько угодно символов вперёд и сдвиг позиции чтения вперёд (увеличение позиции чтения)
- возврат назад (уменьшение позиции чтения) не допускается
Требования к лексике языка #
- Минимум один тип комментариев
- Продуман набор операторов
- Выбраны ключевые слова
- Продуманы разделители блоков и инструкций
- Обозначены правила для идентификаторов: какие символы содержат
- Указано, важен ли регистр символов для идентификаторов и ключевых слов
- Есть литералы для числового типа — целочисленного либо типа с плавающей точкой
- Есть литералы для строк
- Для литералов строк выбран способ экранирования символов, чтобы можно внутри литерала задать любой текст, включая текст с кавычками и переносами строк
Требования к тестам лексера #
Вы должны убедиться, что:
- Лексер покрыт тестами на 90% и выше.
- На разбор каждой лексемы есть хотя бы один тест.
- На лексемы со сложной структурой (идентификаторы, литералы строк) есть тесты на все нюансы этих лексем.
- Есть тесты на пропуск комментариев и всех видов пробельных символов.