Разработка синтаксического распознавателя вычисляемого оператора перехода языка FORTRAN

  • Просмотров 2069
  • Скачиваний 165
  • Размер файла 23
    Кб

Министерство науки, высшей школы и технической политики Российской Федера­ции. Новосибирский Государственный Техниче­ский Университет. Курсовая работа по системному программированию. Разработка синтаксического распознавателя вычисляемого оператора перехода языка FORTRAN. Факультет: АВТ. Кафедра: АСУ. Группа: А-513. Студент: Борзов Андрей Николаевич. Преподаватель: Шорников Юрий Владимирович. Ассистент: Панова Вера Борисовна.

Дата: 19 мая 1997 года. Отметка о защите: _______________________________ Новосибирск – 1997. Язык оператора. Язык вычисляемого оператора перехода языка FORTRAN. GOTO МЕТКА½КОНСТАНТА½АРИФМЕТИЧЕСКОЕ ВЫРАЖЕНИЕ МЕТКА – Идентификатор КОНСТАНТА – ЦЕЛОЕ БЕЗ ЗНАКА АРИФМЕТИЧЕСКОЕ ВЫРАЖЕНИЕ – ВЫРАЖЕНИЕ, СОДЕРЖАЩЕЕ В СЕБЕ ОПЕРАЦИИ *, /, -, +, **, А ТАКЖЕ ( ). ** – ВОЗВЕДЕНИЕ В СТЕПЕНЬ. Грамматика языка. G[<ОПЕРАТОР>]: 1.<ОПЕРАТОР> ® GOTO <ВЫРАЖЕНИЕ>

2.<ВЫРАЖЕНИЕ> ® Т ç<ВЫРАЖЕНИЕ>+Т ç <ВЫРАЖЕНИЕ>-Т 3.Т ® О çТ*О ç Т/О êТ**О 4.О ®(<ВЫРАЖЕНИЕ>) ç<ИДЕНТИФИКАТОР> ç<ДБЗ> 5.<ИДЕНТИФИКАТОР> ® Б{Б çЦ}[L] 6.<ДБЗ> ® Ц{Ц}[.Ц{Ц}][L] Т – ТЕРМ О – ОПЕРАНД Б – БУКВА Ц – ЦИФРА ДБЗ – ДРОБНОЕ БЕЗ ЗНАКА L – КОНЕЦ СТРОКИ (пусто) ** – ВОЗВЕДЕНИЕ В СТЕПЕНЬ Классификация грамматики. Данная грамматика G[<ОПЕРАТОР>], согласно классификации Хомского, является

контекстно-свободной, так как правая часть каждой редукции начинается либо с терминального символа, либо с нетерминального, принадлежащего объединённому словарю. A ® a, AÎVn, aÎV*. Грамматика G[<ОПЕРАТОР>] не является автоматной, так как не все её редукции начинаются с терминального символа. По этой же причине данная грамматика не является S - грамматикой. Метод анализа. Для данной грамматики реализован разбор методом

рекурсивного спуска, поскольку она относится к классу контекстно-свободных. Идея метода состоит в том, что каждому нетерминальному символу ставится в соответствие определённая программная единица (функция), которая распознаёт цепочку, порождаемую этим нетерминалом. Эти процедуры и функции вызываются в соответствии с правилами грамматики и иногда вызывают сами себя. Данный метод реализован на языке C++, поскольку он обладает