Задача B. Лексический анализ

Максимальный балл:10   Ограничение времени:1 сек
  Ограничение памяти:512 Мб

Условие

Требуется разработать лексический анализатор. Анализатор должен представлять утилиту командной строки, принимающую в качестве параметра имя файла с исходным кодом и ключ (для отличения от будущих режимов работы).

Анализатор должен определить последовательность лексем согласно выбранному вами языку программирования.

Исходный код анализатора должен быть выделен в отдельный класс/модуль, имеющий интерфейс типа итератора (т.е. функция "получить лексему" должна считывать и возвращать одну лексему без чтения остатка входного файла).

Набор лексем зависит от языка программирования, но обычно включает:

Репозиторий с анализатором должен содержать автоматические тесты, каждый тест должен включать входной и выходной файл.

Формат входных данных

Отправьте ссылку на конкретный коммит в репозитории на Github, например

https://github.com/klenin/cats-main/commit/dce22c8348808959881ed7d6852c520a41e47c9a

В качестве среды разработки укажите Answer text.

В файле README укажите свои ФИО, вуз, направление подготовки, год, анализируемый язык программирования, инструкции по запуску как самого анализатора, так и автоматических тестов.

Формат выходных данных

Выходные данные должны содержать описание лексем, по одному в строке. Каждое описание должно состоять из: номера строки, номера символа в строке, класса лексемы, значения лексемы и исходного кода лексемы. Поля описания должны быть разделены табуляцией.

В случае обнаружения ошибки должны выводиться строка, номер символа и текст сообщения об ошибке. После этого анализатор может завершать работу.

Примеры тестов

Стандартный вход Стандартный выход
1
0x11
1 1 Integer 17 0x11

0.074s 0.012s 15