Читать реферат по информатике, вычислительной технике, телекоммуникациям: "Построение формального языка L" Страница 1

назад (Назад)скачать (Cкачать работу)

Функция "чтения" служит для ознакомления с работой. Разметка, таблицы и картинки документа могут отображаться неверно или не в полном объёме!

Построение формального языка L

WHILE( ) [];

WHILE - входной терминальный символ

- условное выражение

- некоторая функция, которая может отсутствовать

- параметры функции, которые тоже могут отсутствовать

Пример правильного синтаксиса:

WHILE(A>4444 T| = T | != T  O | T*O | T**O | T+O | T-O | T/O  () | | Б{Б|Ц} Ц{Ц} ([{,}])  | | Ω

Классификация G[Z]

G[]:

     while( ) []; T| < t| > T| = T | != T  O | T*O | T**O | T+O | T-O | T/O  () | | Б{Б|Ц}  Ц{Ц}  ([{,}])  | | Ω

Сделаем замену нетерминальных символов:

 Z

 A

 B

 C

 D

 E

 F

 G

Сделаем замену терминальных символов:

WHILE  a

( b

) c

; d

Цf

Б g

, h

G[Z]:

    Z  abAc[D]dA B|A B|A = B |A != BB  C | B*C | B**C | B+C | B-C | B/CC  bAc | E | F E  g{g|f}F  f{f}D  Eb[G{hG}]cG  E | F | Ω

Вывод : G[Z] - контекстно-свободная грамматика.

Выбор метода анализа

Хотя однозначность в общем случае для контекстно-зависимых грамматик не доказана, ее использование возможно для грамматик в которых однозначность очевидна. Наиболее хорошо разработанным методом анализа, для данного типа грамматик является, метод рекурсивного спуска.

Диагностика и нейтрализация ошибок

Разработанный алгоритм относится к общеизвестному методу синтаксического разбора, предложенный Айронсом.

Основная идея метода состоит в том, что по контексту без возврата отбрасываются те символы, которые привели в тупиковую ситуацию и разбор продолжается.

Приведем пример синтаксического разбора:

While (A > ) cls();

    Z  abAc[D]dA B|A B|A = B |A != BB  C | B*C | B**C | B+C | B-C | B/CC  bAc | E | F E  g{g|f}F  f{f}D  Eb[G{hG}]cG  E | F | Ω

Z

a bAc D

B A ECB g{g} b G cECΩgEg

While (A>)cls();

тупиковая ситуация

Тестирование на цепочках

Протокол работы синтаксического распознавателя оператора цикла while языка С.

_____________________________________________________________________

Обрабатываем строчку - While(a>)cls();

Найден While проверка началась с символа - (

Проверка на AB

Проверка на TERM

Проверка на O

Проверка на IDENT, текущий символ - a

Проверка на AB

Проверка на TERM

Проверка на O

Проверка на IDENT, текущий символ - )

Проверка на ЦБЗ,текущий символ - )

Проверка на FUNC, текущий символ - c

Проверка на IDENT, текущий символ - c

Найденные ошибки в строке While(a>)cls();

Предупреждение: Отсутствует условие ()

Не найден идентификатор или ЦБЗ

_____________________________________________________________________

Обрабатываем строчку - while(13t*(ewqw++()*we) rscr(456,345,rtgrt,345444rtr,,,)

Отсутствует (

Отсутствует )

Предупреждение: Отсутствует условие ()

Отсутствует ; после функции

Параметр функции не может начинатся с цифры

Неизвестный идентификатор(ы) -

435, 4,

Не найден идентификатор или ЦБЗ

Идентификатор не может начинаться с цифры

Не найден или не верный параметр

Неизвестная знаковая конструкция

_____________________________________________________________________

Обрабатываем строчку - whiLE(43-(sss(5445344>(5445r+erhgeerg(e>=rwe+++r+788erwe++)) scr(eee,qee>445--- ;


Интересная статья: Быстрое написание курсовой работы