Распознаватель цепочек Бэкуса-Наура

 Распознаватель заданной символьной цепочки. Символьная цепочка задается с помощью формул Бэкуса-Наура. В моем варианте (J): <цепочка>::=<описание типа>

 

 <тип>::=array[<нижняя граница>..<верхняя граница>] of <строковый тип>

<нижняя граница>::=<целая константа>

<верхняя граница>::=<целая константа>

<длина>::=<идентификатор>

Программа эта написана на Turbo Pascal.


Структура программы

Распознаватель состоит из 3 блоков :

  1. Лексический блок - подпрограмма, преобразующая цепочку лексем, полученную от транслитератора, в цепочку лексем вида ("символ входного языка", "класс символа входного языка").
  2. Блок идентификации кчючевых слов - подпрограмма, которая устанавливает, какое из ключевых слов языка Pascal соответствует заданному идентификатору, либо сообщает, что заданный идентификатор не является ключевым словом языка Pascal. Идентификация ключевых слов может быть выделена в отдельный проход распознавателя символьной цепочки, то есть идентифицирующий блок будет запускаться после того, как лексический блок полностью подготовит всю цепочку лексем. Другим подходом является объединение в один проход распознавателя символьной цепочки лексического блока и блока идентификации. В этом случае идентификация ключевого слова осуществляется каждый раз, когда лексический
  3. Синтаксический блок — подпрограмма, которая получает цепочку лексем вида ("символ входного языка", "класс символа входного языка") и устанавливает, 'соответствует ли она заданным формулам Бэкуса-Наура. Поскольку задание предполагает только распознавание исходной цепочки, фактически данный блок использует для работы только классы символов входного языка.

 

 

 

Работа программы

Вот как работает эта программа:

1. Считывается цепочка не длиннее 80 символов из файла input.txt 

2. На втором этапе цепочка разбивается на символы. И проверяется на наличие ТОЛЬКО допустимых символов. Если все символы допустимы идем дальше...

3. На третьем шаге проверяется присутствие недопустимых комбинаций знаков. Если таких нет - окей. Идем дальше.

4. На этом шаге цепочка разбивается на ключевые слова, типы данных и переменные.

5. Синтаксический анализ. (Правильно ли употреблены и в нужном ли порядке ключевые слова и переменные, а так же правильно ли указан диапазон)

6. И долгожданное слово АЦЦЕПТ! ))) Цепочка то правильная! Если вкралась какая то ошибка то на определенном этапе (в зависимости от характера ошибки) ввывелось бы красное слово Reject! , а в файл output.txt соответственно Reject

Скачать исходник бесплатно прямо с сервера: скачать

dle

Помоги проекту! Расскажи друзьям об этом сайте: