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

Министерство науки, высшей школы и технической политики РоссийскойФедера­ции.

Новосибирский Государственный

Техниче­ский Университет.

<img src="/cache/referats/1179/image002.jpg" v:shapes="_x0000_i1025">

<span ER Architect 1251"">Курсовая работа по системномупрограммированию.

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

Факультет: АВТ.

Кафедра: АСУ.

Группа: А-513.

Студент: БорзовАндрей Николаевич.

Преподаватель:Шорников Юрий Владимирович.

Ассистент: ПановаВера Борисовна.

Дата:19 мая1997 года.

Отметка озащите: _______________________________

<span Old-Town",«serif»">

<span Old-Town",«serif»">

<span Old-Town",«serif»">

Новосибирск– 1997.<span Old-Town",«serif»">

<span Arial",«sans-serif»; mso-fareast-font-family:«Times New Roman»;mso-bidi-font-family:«Times New Roman»; mso-font-kerning:14.0pt;mso-ansi-language:RU;mso-fareast-language:RU; mso-bidi-language:AR-SA">
<span Courier New";mso-bidi-font-family:«Times New Roman»">Языкоператора.

<span Courier New";mso-bidi-font-family:«Times New Roman»">Язык вычисляемогооператора перехода языка

<span Courier New"; mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US">FORTRAN.<span Courier New";mso-bidi-font-family:«Times New Roman»">

<span Courier New";mso-bidi-font-family:«Times New Roman»">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">GOTO

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»">МЕТКА½<span Arial",«sans-serif»; mso-bidi-font-family:«Times New Roman»">КОНСТАНТА½<span Arial",«sans-serif»; mso-bidi-font-family:«Times New Roman»">АРИФМЕТИЧЕСКОЕ ВЫРАЖЕНИЕ

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»">МЕТКА           – Идентификатор

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»">КОНСТАНТА– ЦЕЛОЕ БЕЗ ЗНАКА

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»">АРИФМЕТИЧЕСКОЕВЫРАЖЕНИЕ – ВЫРАЖЕНИЕ, СОДЕРЖАЩЕЕ В СЕБЕ ОПЕРАЦИИ *, /, -, +, **, А ТАКЖЕ ( ).

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»">

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»">** –ВОЗВЕДЕНИЕ В СТЕПЕНЬ.

<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»">

<span Arial",«sans-serif»;mso-fareast-font-family: «Times New Roman»;mso-bidi-font-family:«Times New Roman»;mso-font-kerning:14.0pt; mso-ansi-language:RU;mso-fareast-language:RU;mso-bidi-language:AR-SA">
<span Courier New";mso-bidi-font-family:«Times New Roman»">Грамматикаязыка.

<span Courier New";mso-bidi-font-family:«Times New Roman»">

<span Courier New"; mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US">G[<

<span Courier New";mso-bidi-font-family:«Times New Roman»">ОПЕРАТОР<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">>]<span Courier New"; mso-bidi-font-family:«Times New Roman»">:

<span Courier New"; mso-fareast-font-family:«Courier New»">1.

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US"><<span Courier New"; mso-bidi-font-family:«Times New Roman»">ОПЕРАТОР<span Courier New";mso-bidi-font-family:«Times New Roman»;mso-ansi-language: EN-US">><span Courier New"; mso-bidi-font-family:«Times New Roman»"> <span Courier New";mso-hansi-font-family: «Courier New»;mso-ansi-language:EN-US;mso-char-type:symbol;mso-symbol-font-family: Symbol">®<span Courier New";mso-bidi-font-family:«Times New Roman»"><span Courier New"; mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US">GOTO <<span Courier New";mso-bidi-font-family:«Times New Roman»">ВЫРАЖЕНИЕ<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">><span Courier New"; mso-bidi-font-family:«Times New Roman»">

<span Courier New"; mso-fareast-font-family:«Courier New»">2.

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US"><<span Courier New"; mso-bidi-font-family:«Times New Roman»">ВЫРАЖЕНИЕ<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">><span Courier New"; mso-bidi-font-family:«Times New Roman»"> <span Courier New";mso-hansi-font-family: «Courier New»;mso-ansi-language:EN-US;mso-char-type:symbol;mso-symbol-font-family: Symbol">®<span Courier New";mso-bidi-font-family:«Times New Roman»"> Т <span Courier New";mso-hansi-font-family: «Courier New»;mso-char-type:symbol;mso-symbol-font-family:Symbol">ç<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US"><<span Courier New"; mso-bidi-font-family:«Times New Roman»">ВЫРАЖЕНИЕ<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">><span Courier New"; mso-bidi-font-family:«Times New Roman»">+Т <span Courier New";mso-hansi-font-family:«Courier New»; mso-char-type:symbol;mso-symbol-font-family:Symbol">ç<span Courier New";mso-bidi-font-family:«Times New Roman»"> <span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US"><<span Courier New"; mso-bidi-font-family:«Times New Roman»">ВЫРАЖЕНИЕ<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">><span Courier New";mso-hansi-font-family:«Courier New»; mso-ansi-language:EN-US;mso-char-type:symbol;mso-symbol-font-family:Symbol">-<span Courier New";mso-bidi-font-family:«Times New Roman»">Т

<span Courier New"; mso-fareast-font-family:«Courier New»">3.

<span Courier New";mso-bidi-font-family:«Times New Roman»">Т <span Courier New"; mso-hansi-font-family:«Courier New»;mso-ansi-language:EN-US;mso-char-type:symbol; mso-symbol-font-family:Symbol">®<span Courier New"; mso-bidi-font-family:«Times New Roman»"> О <span Courier New";mso-hansi-font-family:«Courier New»; mso-char-type:symbol;mso-symbol-font-family:Symbol">ç<span Courier New";mso-bidi-font-family:«Times New Roman»">Т<span Courier New";mso-hansi-font-family: «Courier New»;mso-char-type:symbol;mso-symbol-font-family:Symbol">*<span Courier New";mso-bidi-font-family:«Times New Roman»">О <span Courier New";mso-hansi-font-family: «Courier New»;mso-char-type:symbol;mso-symbol-font-family:Symbol">ç<span Courier New";mso-bidi-font-family:«Times New Roman»"> Т<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">/<span Courier New"; mso-bidi-font-family:«Times New Roman»">О <span Courier New";mso-hansi-font-family:«Courier New»; mso-char-type:symbol;mso-symbol-font-family:Symbol">ê<span Courier New";mso-bidi-font-family:«Times New Roman»">Т<span Courier New";mso-hansi-font-family: «Courier New»;mso-char-type:symbol;mso-symbol-font-family:Symbol">**<span Courier New";mso-bidi-font-family:«Times New Roman»">О

<span Courier New"; mso-fareast-font-family:«Courier New»">4.

<span Courier New";mso-bidi-font-family:«Times New Roman»">О <span Courier New"; mso-hansi-font-family:«Courier New»;mso-ansi-language:EN-US;mso-char-type:symbol; mso-symbol-font-family:Symbol">®<span Courier New"; mso-bidi-font-family:«Times New Roman»">(<span Courier New";mso-bidi-font-family:«Times New Roman»;mso-ansi-language: EN-US"><<span Courier New"; mso-bidi-font-family:«Times New Roman»">ВЫРАЖЕНИЕ<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">><span Courier New"; mso-bidi-font-family:«Times New Roman»">) <span Courier New";mso-hansi-font-family:«Courier New»; mso-char-type:symbol;mso-symbol-font-family:Symbol">ç<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US"><<span Courier New"; mso-bidi-font-family:«Times New Roman»">ИДЕНТИФИКАТОР<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">> <span Courier New";mso-hansi-font-family:«Courier New»; mso-char-type:symbol;mso-symbol-font-family:Symbol">ç<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US"><<span Courier New"; mso-bidi-font-family:«Times New Roman»">ДБЗ<span Courier New";mso-bidi-font-family:«Times New Roman»;mso-ansi-language: EN-US">><span Courier New"; mso-bidi-font-family:«Times New Roman»">

<span Courier New"; mso-fareast-font-family:«Courier New»">5.

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US"><<span Courier New"; mso-bidi-font-family:«Times New Roman»">ИДЕНТИФИКАТОР<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">><span Courier New"; mso-bidi-font-family:«Times New Roman»"> <span Courier New";mso-hansi-font-family: «Courier New»;mso-ansi-language:EN-US;mso-char-type:symbol;mso-symbol-font-family: Symbol">®<span Courier New";mso-bidi-font-family:«Times New Roman»"> Б<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">{<span Courier New"; mso-bidi-font-family:«Times New Roman»">Б <span Courier New";mso-hansi-font-family:«Courier New»; mso-char-type:symbol;mso-symbol-font-family:Symbol">ç<span Courier New";mso-bidi-font-family:«Times New Roman»">Ц<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">}[<span Courier New";mso-hansi-font-family:«Courier New»; mso-ansi-language:EN-US;mso-char-type:symbol;mso-symbol-font-family:Symbol">L<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">]<span Courier New"; mso-bidi-font-family:«Times New Roman»">

<span Courier New"; mso-fareast-font-family:«Courier New»">6.

<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US"><<span Courier New"; mso-bidi-font-family:«Times New Roman»">ДБЗ<span Courier New";mso-bidi-font-family:«Times New Roman»;mso-ansi-language: EN-US">><span Courier New"; mso-bidi-font-family:«Times New Roman»"> <span Courier New";mso-hansi-font-family: «Courier New»;mso-ansi-language:EN-US;mso-char-type:symbol;mso-symbol-font-family: Symbol">®<span Courier New";mso-bidi-font-family:«Times New Roman»"> Ц<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">{<span Courier New"; mso-bidi-font-family:«Times New Roman»">Ц<span Courier New";mso-bidi-font-family:«Times New Roman»;mso-ansi-language: EN-US">}[<span Courier New"; mso-bidi-font-family:«Times New Roman»">.Ц<span Courier New";mso-bidi-font-family:«Times New Roman»;mso-ansi-language: EN-US">{<span Courier New"; mso-bidi-font-family:«Times New Roman»">Ц<span Courier New";mso-bidi-font-family:«Times New Roman»;mso-ansi-language: EN-US">}][<span Courier New";mso-hansi-font-family:«Courier New»; mso-ansi-language:EN-US;mso-char-type:symbol;mso-symbol-font-family:Symbol">L<span Courier New";mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">]<span Courier New"; mso-bidi-font-family:«Times New Roman»">

<span Courier New";mso-bidi-font-family:«Times New Roman»">

<span Courier New";mso-bidi-font-family:«Times New Roman»">Т

<span Courier New";mso-bidi-font-family:«Times New Roman»">–

<span Courier New"; mso-bidi-font-family:«Times New Roman»">ТЕРМ

<span Courier New";mso-bidi-font-family:«Times New Roman»">О

<span Courier New";mso-bidi-font-family:«Times New Roman»">–

<span Courier New"; mso-bidi-font-family:«Times New Roman»">ОПЕРАНД

<span Courier New";mso-bidi-font-family:«Times New Roman»">Б

<span Courier New";mso-bidi-font-family:«Times New Roman»">–

<span Courier New"; mso-bidi-font-family:«Times New Roman»">БУКВА

<span Courier New";mso-bidi-font-family:«Times New Roman»">Ц

<span Courier New";mso-bidi-font-family:«Times New Roman»">–

<span Courier New"; mso-bidi-font-family:«Times New Roman»">ЦИФРА

<span Courier New";mso-bidi-font-family:«Times New Roman»">ДБЗ

<span Courier New";mso-bidi-font-family:«Times New Roman»">–

<span Courier New"; mso-bidi-font-family:«Times New Roman»">ДРОБНОЕ БЕЗ ЗНАКА

<span Courier New";mso-hansi-font-family: «Courier New»;mso-char-type:symbol;mso-symbol-font-family:Symbol">L

<span Courier New";mso-bidi-font-family:«Times New Roman»">

<span Courier New";mso-bidi-font-family: «Times New Roman»;mso-ansi-language:EN-US">–

<span Courier New";mso-bidi-font-family:«Times New Roman»">

<span Courier New"; mso-bidi-font-family:«Times New Roman»">КОНЕЦ СТРОКИ (пусто)

<span Courier New";mso-bidi-font-family:«Times New Roman»">**

<span Courier New";mso-bidi-font-family:«Times New Roman»">–

<span Courier New"; mso-bidi-font-family:«Times New Roman»">ВОЗВЕДЕНИЕ В СТЕПЕНЬ

<span Courier New";mso-bidi-font-family:«Times New Roman»">

<span Arial",«sans-serif»;mso-fareast-font-family: «Times New Roman»;mso-bidi-font-family:«Times New Roman»;mso-font-kerning:14.0pt; mso-ansi-language:EN-US;mso-fareast-language:RU;mso-bidi-language:AR-SA">
<span Courier New";mso-bidi-font-family:«Times New Roman»">Классификацияграмматики.

Данная грамматика G[<ОПЕРАТОР>],согласно классификации Хомского, является контекстно-свободной, так как праваячасть каждой редукции начинается либо с терминального символа, либо снетерминального, принадлежащего объединённому словарю.

A <span Times New Roman";mso-hansi-font-family:«Times New Roman»; mso-ansi-language:EN-US;mso-char-type:symbol;mso-symbol-font-family:Symbol">®

a, A<span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-ansi-language:EN-US;mso-char-type: symbol;mso-symbol-font-family:Symbol">ÎVn, a<span Times New Roman";mso-hansi-font-family: «Times New Roman»;mso-ansi-language:EN-US;mso-char-type:symbol;mso-symbol-font-family: Symbol">ÎV<span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-ansi-language:EN-US;mso-char-type: symbol;mso-symbol-font-family:Symbol">*.

Грамматика G[<ОПЕРАТОР>]неявляется автоматной, так как не все её редукции начинаются с терминальногосимвола. По этой же причине данная грамматика не является S-грамматикой.

<span Arial",«sans-serif»;mso-fareast-font-family: «Times New Roman»;mso-bidi-font-family:«Times New Roman»;mso-font-kerning:14.0pt; mso-ansi-language:RU;mso-fareast-language:RU;mso-bidi-language:AR-SA">
<span Courier New";mso-bidi-font-family:«Times New Roman»">Методанализа.

Для данной грамматикиреализован разбор методом рекурсивного спуска, поскольку она относится к классуконтекстно-свободных.

        Идеяметода состоит в том, что каждому нетерминальному символу ставится всоответствие определённая программная единица (функция), которая распознаётцепочку, порождаемую этим нетерминалом.

        Этипроцедуры и функции вызываются в соответствии с правилами грамматики и иногдавызывают сами себя.

        Данныйметод реализован на языке C++, поскольку он обладаетрекурсивными возможностями.

<span Arial",«sans-serif»;mso-fareast-font-family: «Times New Roman»;mso-bidi-font-family:«Times New Roman»;mso-font-kerning:14.0pt; mso-ansi-language:RU;mso-fareast-language:RU;mso-bidi-language:AR-SA">
<span Courier New";mso-bidi-font-family:«Times New Roman»">Диагностикаи нейтрализация ошибок.

Для данной грамматикипроизводится только диагностика и нейтрализация ошибок. Исправление ошибок непроизводится.

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

<span Arial",«sans-serif»;mso-fareast-font-family: «Times New Roman»;mso-bidi-font-family:«Times New Roman»;mso-font-kerning:14.0pt; mso-ansi-language:EN-US;mso-fareast-language:RU;mso-bidi-language:AR-SA">
<span Courier New";mso-bidi-font-family:«Times New Roman»">Тестирование.

<span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Symbol">¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾

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

<span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Symbol">¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾

GOTO A+B-DD**(CC/(23+34**R))+Y*((C))

<span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Symbol">¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾

AB    — Проверка наАрифметическое Выражение.

SCAN  — Сканирование.Текущий символ 'A' с кодом 65.

T     — Проверка наТерм.

O     — Проверка наОперанд.

IDENT — Проверка на Идентификатор с символа A.

SCAN  — Сканирование.Текущий символ '+' с кодом 43.

AB    — Проверка наАрифметическое Выражение.

SCAN  — Сканирование.Текущий символ 'B' с кодом 66.

T     — Проверка наТерм.

O     — Проверка наОперанд.

IDENT — Проверка на Идентификатор с символа B.

SCAN  — Сканирование.Текущий символ '-' с кодом 45.

AB    — Проверка наАрифметическое Выражение.

SCAN  — Сканирование.Текущий символ 'D' с кодом 68.

T     — Проверка наТерм.

O     — Проверка наОперанд.

IDENT — Проверка на Идентификатор с символа D.

SCAN  — Сканирование.Текущий символ 'D' с кодом 68.

SCAN  — Сканирование.Текущий символ '*' с кодом 42.

SCAN  — Сканирование.Текущий символ '*' с кодом 42.

SCAN  — Сканирование.Текущий символ '(' с кодом 40.

T     — Проверка наТерм.

O     — Проверка на Операнд.

AB    — Проверка наАрифметическое Выражение.

SCAN  — Сканирование.Текущий символ 'C' с кодом 67.

T     — Проверка наТерм.

O     — Проверка наОперанд.

IDENT — Проверка на Идентификатор с символа C.

SCAN  — Сканирование.Текущий символ 'C' с кодом 67.

SCAN  — Сканирование.Текущий символ '/' с кодом 47.

SCAN  — Сканирование.Текущий символ '(' с кодом 40.

T     — Проверка наТерм.

O     — Проверка наОперанд.

AB    — Проверка наАрифметическое Выражение.

SCAN  — Сканирование.Текущий символ '2' с кодом 50.

T     — Проверка наТерм.

O     — Проверка наОперанд.

IDENT — Проверка на Идентификатор с символа 2.

FLOAT   — Проверка наДробное Без Знака с цифры 2.

SCAN  — Сканирование.Текущий символ '3' с кодом 51.

SCAN  — Сканирование.Текущий символ '+' с кодом 43.

AB    — Проверка наАрифметическое Выражение.

SCAN  — Сканирование.Текущий символ '3' с кодом 51.

T     — Проверка наТерм.

O     — Проверка наОперанд.

IDENT — Проверка на Идентификатор с символа 3.

FLOAT   — Проверка наДробное Без Знака с цифры 3.

SCAN  — Сканирование.Текущий символ '4' с кодом 52.

SCAN  — Сканирование.Текущий символ '*' с кодом 42.

SCAN  — Сканирование.Текущий символ '*' с кодом 42.

SCAN  — Сканирование.Текущий символ 'R' с кодом 82.

T     — Проверка наТерм.

O     — Проверка наОперанд.

IDENT — Проверка на Идентификатор с символа R.

SCAN  — Сканирование.Текущий символ ')' с кодом 41.

SCAN  — Сканирование.Текущий символ ')' с кодом 41.

SCAN  — Сканирование.Текущий символ '+' с кодом 43.

AB    — Проверка наАрифметическое Выражение.

SCAN  — Сканирование.Текущий символ 'Y' с кодом 89.

T     — Проверка наТерм.

O     — Проверка наОперанд.

IDENT — Проверка на Идентификатор с символа Y.

SCAN  — Сканирование.Текущий символ '*' с кодом 42.

SCAN  — Сканирование.Текущий символ '(' с кодом 40.

T     — Проверка наТерм.

O     — Проверка наОперанд.

AB    — Проверка наАрифметическое Выражение.

SCAN  — Сканирование.Текущий символ '(' с кодом 40.

T     — Проверка наТерм.

O     — Проверка наОперанд.

AB    — Проверка наАрифметическое Выражение.

SCAN  — Сканирование.Текущий символ 'C' с кодом 67.

T     — Проверка наТерм.

O     — Проверка наОперанд.

IDENT — Проверка на Идентификатор с символа C.

SCAN  — Сканирование.Текущий символ ')' с кодом 41.

SCAN  — Сканирование.Текущий символ ')' с кодом 41.

SCAN  — Сканирование.Текущий символ NULL скодом 0.

<span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Symbol">¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾

<span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Symbol">¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾

GOTO A

<span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Symbol">¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾

AB    — Проверка наАрифметическое Выражение.

SCAN  — Сканирование.Текущий символ 'A' с кодом 65.

T     — Проверка наТерм.

O     — Проверка наОперанд.

IDENT — Проверка на Идентификатор с символа A.

SCAN  — Сканирование.Текущий символ NULL с кодом 0.

<span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Symbol">¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾

<span Arial",«sans-serif»;mso-fareast-font-family: «Times New Roman»;mso-bidi-font-family:«Times New Roman»;mso-font-kerning:14.0pt; mso-ansi-language:RU;mso-fareast-language:RU;mso-bidi-language:AR-SA">
<span Courier New";mso-bidi-font-family:«Times New Roman»">Листингпрограммы.

//<span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Symbol;mso-no-proof:yes">¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾

//          FILE «KURSOVIK.CPP».

//<span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Symbol;mso-no-proof:yes">¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾

//          ВАРИАHТ № 3.

//<span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Symbol;mso-no-proof:yes">¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾

//          Операторперехода вычисляемый языка FORTRAN.

//<span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Symbol;mso-no-proof:yes">¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾

//             Кафедра: АСУ.

//             Группа: А-513.

//             Студент: Борзов Андрей Hиколаевич.

//             Преподаватели:кандидат технических наук, доцент Шорников ЮрийВладимирович,

//                                             ассистентПанова Вера Борисовна.

//             Дата: 29 апреля 1997г.

//<span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Symbol;mso-no-proof:yes">¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾

//             Подключаемые файлы.

//<span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Symbol;mso-no-proof:yes">¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾

#include<string.h>

#include<conio.h>

#include<stdio.h>

#include<dos.h>

#include<stdlib.h>

#include<ctype.h>

#include<time.h>

#include«keyboard.h»

//<span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Symbol;mso-no-proof:yes">¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾

//             Макроопределения.

//<span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Symbol;mso-no-proof:yes">¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾

#define  ERROR                                 0                              //Код ошибки.

#define  COL_STR                             20                           // Максимальноеколичество строк.

#define  STR_LEN                             35                           // Длина строки.

#define  MAX_STR_LEN                255                         //Максимальная длина строки.

#define  FILENAME                          «TEST.TXT»         // Имя файла, открываемого поумолчанию.

#define  YES                                        1

#define  NO                                          2

#define  OK                                          3

//#defineTEST                                    //Определено, если включен отладочный режим.

//<span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Symbol;mso-no-proof:yes">¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾

//             Прототипы функций.

//<span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Symbol;mso-no-proof:yes">¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾

int           I_ReadKey(void);                                               //Опрос клавиатуры.

void        Welcome(void);                                                   // Экран пристарте программы.

void        Menu(void);                                                         // Меню.

void        Help(void);                                                           // Помощь.

void        MyExit(int=0);                                                     // Корректныйвыход из программы.

void        Beep(int=500,int=100);                                      //Звуковой сигнал.

void        Usage(void);                                                         //Использование программы.

int           OpenFile(void);                                                    //Открытие файла.

void        DrawBox(int,int,int,int,char*);                          // Рисует рамку сзаголовком.

void        PrintText(void);                                                   // Печатаетосновной текст.

void        Screen(void);                                                        //Перерисовка экрана.

void        Compile(void);                                                     // Компиляция.

void        Message(int);                                                        // Выводсообщений об ошибках.

void        MyPuts(char*,int);                                              //Аналог puts(char*);.

void        Language(void);                                                  // Язык оператора.

void        Grammar(void);                                                  // Грамматикаязыка.

void        GetFilename(void);                                             //Запрос имени файла для открытия.

int           ScanStr(char*);                                                    //Поиск GOTO.

int           Scaner(char*);                                                     // Обработкастроки.

void        Scan(void);                                                           //Сканирование следующего символа.

void        Delspace(char*);                                                 //Удаление ненужных пробелов в строке.

int           AB(void);                                                              //Реализация нетерминала <АВ>.

int           T(void);                                                                 // Реализациянетерминала <Т>.

int           O(void);                                                                 // Реализация нетерминала<О>.

int           IDENT(void);                                                       // Реализациянетерминала .

int           FLOAT(void);                                                      // Реализациянетерминала .

void        Error(int=0,char* ="");                                        //Обработка ошибки.

//<span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Symbol;mso-no-proof:yes">¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾

//             Глобальные переменные.

//<span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Symbol;mso-no-proof:yes">¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾

char        filename[MAX_STR_LEN];                             // Имя файла.

char        *text[COL_STR+1];                                           // Массив указателей настроки текста.

char        screen[4096];                                                       // Буфер подкопию экрана.

char        mes[21][20][80];                                                 //Массив под сообщения об ошибках.

char        nx;                                                                          //Текущий символ.

int           pos;                                                                        //Текущая позиция в строке.

char        STR[80];                                                               //Сканируемая строка.

int           ERR1;                                                                    //Счетчик страниц в массиве ошибок.

int           ERR2;                                                                    //Счетчик строк в массиве ошибок.

FILE       *errors;                                                                  //Дескриптор файла.

//<span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Symbol;mso-no-proof:yes">¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾

//             Функция MAIN.

//<span Times New Roman"; mso-hansi-font-family:«Times New Roman»;mso-char-type:symbol;mso-symbol-font-family: Symbol;mso-no-proof:yes">¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾

voidmain(int argc,char* argv[])

                {

                textcolor(LIGHTGRAY);

                textbackground(BLACK);

                _setcursortype(_NOCURSOR);

                clrscr();

                if(argc>2)

                                {

                                Usage();

                                MyExit();

                                }

                if(argc==2)

                                strcpy(filename,argv[1]);

                else

                                {

                                Welcome();

<span

еще рефераты
Еще работы по программированию, базе данных