Читать другое по информатике, вычислительной технике, телекоммуникациям: "Построение формального языка 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

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

WHILEa

(b

)c

;d

Цf

Бg

,h

G[Z]:

    ZabAc[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();

    ZabAc[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 |

Za bAc D

B A ECB g{g} b G cECgEgWhile (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--- ;Найден While проверка началась с символа - (

Проверка на AB

Проверка на TERM

Проверка на O

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

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

Проверка на AB

Проверка на TERM

Проверка на O

Проверка на IDENT,


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