Итак, нам нужно создать массивы, в которых будут наши ключевые слова, операторы, пунктуаторы и их описание. Вы можете создать уже заполненные массивы в самой программе, но я, лично, что бы не перегружать код и упростить редактирование данных, делал выгрузку из 3х файлов и буду объяснять именно на этом примере.
Этап 1. Заполняем массивы данных
И второй, более простой способ, использование регулярных выражений. Просто, быстро и удобно. Лично я использовал библиотеку RegExpr с сайта .
При помощи оператора case. Долго, нудно и не интересно. А если серьезно, то способ слишком объемен и сложен в реализации. То есть для каждого токена Вам нужно будет составить отдельное значение для переменной. Для одних только ключевых слов придется делать 52 (!) блока проверки условия. Я молчу о проверке ошибок литералов и комментариев. Вердикт отсеиваем.
Каким же образом мы можем распарсить наш текст? Вообще метода 2:
Определимся с выбором
4) Вывести данные в таблицу.
3) Занести данные о токенах в массив и отсортировать его.
2) Распарсить заданный текст на токены и определить их классы. (Распарсить то же самое, что и разобрать, т.е. выбрать эти элементы из текста в переменные)
1) Загрузить массив данных о наших ключевых словах, операторах и пунктуаторах, так как они уникальны.
0) Изначально я бы посоветовал изучить спецификацию языка, для которого вы будете писать анализатор. Далее нам нужно:
Вроде бы задание понятно. Теперь разобьем его на подзадачи.
Ну описание, позицию и длину описывать, я думаю, не стоит.
Спецификатор описывает к какому классу относится токен. То есть, например, для токена «boolean» в таблице выведется «Keywords».
Напомню, что токен это последовательности символов в лексическом анализе в информатике, соответствующий лексеме.
Итак, давайте же рассмотрим техническое задание подробнее. Что нам требуется? А требуется нам создать анализатор, который будет разбивать заданный текст на языке Java по классам ключевым словам, идентификаторам, операторам, пунктуаторам (сепараторам) и т.п., и выводить результат работы в таблицу. Таблица будет содержать следующие столбцы:
Данный пост будет, как правило, интересен студентам, так как подобное задание было получено в качестве лабораторной работы по дисциплине «Лингвистические основы информатики».
ТЗ или о чем пойдет речь
Лексический анализатор языка Java, созданный в среде Delphi
Лексический анализатор языка Java, созданный в среде Delphi / Хабрахабр
Комментариев нет:
Отправить комментарий