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

    Дисциплина: Программирование
    Тип работы: Курсовая
    Тема: Построение формального языка L

    Построение формального языка
    WHILE
    AB )
    WHILE -
    входной терминальный символ
    - условное выражение
    - некоторая функция, которая может отсутствовать
    параметры функции, которые тоже могут отсутствовать
    Пример правильного синтаксиса:
    WHILE(A
    Ab=56+67 -
    условное выражение
    clrscr()
    - функция, без параметров
    Подбор грамматики
    G[Z]
    по языку
    Любая грамматика, к примеру
    G[Z]
    содержит следующие базисные элементы
    t, V
    n, Z, P
    где:
    словарь терминальных символов
    словарь нетерминальных символов
    начальный нетерминальный символ
    множество правил вывода
    оператор
    Оператор
    while
    Функция
    != T
    O | T*O | T**O | T+O | T-O | T/O
    ЦБЗ
    ЦБЗ
    Функция
    ЦБЗ
    Классификация
    G[Z]
    оператор
    Оператор
    while
    Функция
    != T
    O | T*O | T**O | T+O | T-O | T/O
    ЦБЗ
    ЦБЗ
    Функция
    ЦБЗ
    Сделаем замену
    нетерминальных символов:
    Оператор
    Функция
    ЦБЗ
    Сделаем замену
    терминальных символов:
    WHILE
    G[Z]
    abAc[D]d
    B|A= B |A != B
    C | B*C | B**C | B+C | B-C | B/C
    bAc | E | F
    g{g|f}
    f{f}
    Eb[G{hG}]c
    E | F |
    Вывод :
    G[Z] -
    контекстно-свободная грамматика.
    Выбор метода анализа
    Хотя однозначность в общем случае для контекстно-зависимых грамматик не доказана, ее использование возможно для грамматик в которых однозначность очевидна. Наиболее хорошо
    разработанным методом анализа, для данного типа грамматик является, метод рекурсивного спуска.
    Диагностика и нейтрализация ошибок
    Разработанный алгоритм относится к общеизвестному методу синтаксического разбора, предложенный Айронсом.
    Основная идея метода состоит в том, что по контексту без возврата отбрасываются те символы, которые привели в тупиковую ситуацию и разбор продолжается.
    Приведем пример синтаксического разбора:
    While (A
    abAc[D]d
    B|A= B |A != B
    C | B*C | B**C | B+C | B-C | B/C
    bAc | E | F
    g{g|f}
    f{f}
    Eb[G{hG}]c
    E | F |
    g{g} b
    While (
    тупиковая ситуация
    Тестирование на цепочках
    Протокол работы синтаксического распознавателя оператора цикла
    while
    языка С.
    _____________________________________________________________________
    Обрабатываем строчку - While(a
    Найден While проверка началась с символа - (
    Проверка на AB
    Проверка на TERM
    Проверка на O
    Проверка на IDENT, текущий символ - a
    Проверка на AB
    Проверка на TERM
    Проверка на O
    Проверка на IDENT, текущий символ - )
    Проверка на ЦБЗ,
    текущий символ - )
    Проверка на FUNC,
    текущий символ - c
    Проверка на IDENT, текущий символ - c
    Предупреждение: Отсутствует условие ()
    Не найден идентификатор или ЦБЗ
    _____________________________________________________________________
    Обрабатываем строчку - while(1
    Найден While проверка началась с символа - (
    Проверка на AB
    Проверка на TERM
    Проверка на O
    Проверка на IDENT, текущий символ - 1
    Проверка на ЦБЗ,
    текущий символ - 1
    Проверка на AB
    Проверка на TERM
    Проверка на O
    Проверка на AB
    Проверка на TERM
    Проверка на O
    Проверка на IDENT, текущий символ - 3
    Проверка на ЦБЗ,
    текущий символ - 3
    Проверка на TERM
    Проверка на O
    Проверка на AB
    Проверка на TERM
    Проверка на O
    Проверка на IDENT, текущий символ - 4
    Проверка на ЦБЗ,
    текущий символ - 4
    Проверка на TERM
    Проверка на O
    Проверка на IDENT, текущий символ - 5
    Проверка на ЦБЗ,
    текущий символ - 5
    Проверка на TERM
    Проверка на O
    Проверка на AB
    Проверка на TERM
    Проверка на O
    Проверка на IDENT, текущий символ - 3
    Проверка на ЦБЗ,
    текущий символ - 3
    Проверка на TERM
    Проверка на O
    Проверка на IDENT, текущий символ - 4
    Проверка на ЦБЗ,
    текущий символ - 4
    Проверка на TERM
    Проверка на O
    Проверка на AB
    Проверка на TERM
    Проверка на O
    Проверка на IDENT, текущий символ - 4
    Проверка на ЦБЗ,
    текущий символ - 4
    Проверка на AB
    Проверка на TERM
    Проверка на O
    Проверка на IDENT, текущий символ - 4
    Проверка на ЦБЗ,
    текущий символ - 4
    Проверка на FUNC,
    Проверка на IDENT, текущий символ - ;
    Отсутствует )
    Предупреждение: отсутствует имя функции
    _____________________________________________________________________
    Обрабатываем строчку - 435 4 whilei3t*(ewqw++()*we) rscr(456,345,rtgrt,345444rtr,,,)
    Найден While проверка началась с символа - i
    Проверка на AB
    Проверка на TERM
    Проверка на O
    Проверка на IDENT, текущий символ - i
    Проверка на AB
    Проверка на TERM
    Проверка на O
    Проверка на IDENT, текущий символ - 3
    Проверка на ЦБЗ,
    текущий символ - 3
    Проверка на TERM
    Проверка на O
    Проверка на AB
    Проверка на TERM
    Проверка на O
    Проверка на IDENT, текущий символ - e
    Проверка на TERM
    Проверка на O
    Проверка на IDENT, текущий символ - +
    Проверка на ЦБЗ,
    текущий символ - +
    Проверка на TERM
    Проверка на O
    Проверка на TERM
    Проверка на O
    Проверка на IDENT, текущий символ - w
    Проверка на FUNC,
    текущий символ - r
    Проверка на IDENT, текущий символ - r
    Проверка на PAR,
    текущий символ - 4
    Проверка на IDENT, текущий символ - 4
    Проверка на ЦБЗ,
    текущий символ - 4
    Проверка на PAR,
    текущий символ - 3
    Проверка на IDENT, текущий символ - 3
    Проверка на ЦБЗ,
    текущий символ - 3
    Проверка на PAR,
    текущий символ - r
    Проверка на IDENT, текущий символ - r
    Проверка на PAR,
    текущий символ - 3
    Проверка на IDENT, текущий символ - 3
    Проверка на ЦБЗ,
    текущий символ - 3
    Проверка на PAR,
    текущий символ - ,
    Проверка на IDENT, текущий символ - ,
    Проверка на ЦБЗ,
    текущий символ - ,
    3t*(ewqw++()*we) rscr(456,345,rtgrt,345444rtr,,,)
    Отсутствует (
    Отсутствует )
    Предупреждение: Отсутствует условие ()
    после функции
    Параметр функции не может начинатся с цифры
    Неизвестный идентификатор(ы) -
    435, 4,
    Не найден идентификатор или ЦБЗ
    Идентификатор не может начинаться с цифры
    Не найден или не верный параметр
    Неизвестная знаковая конструкция
    _____________________________________________________________________
    Обрабатываем строчку - whiLE(43-(sss233)fewfew) sd(we)
    Найден While проверка началась с символа - (
    Проверка на AB
    Проверка на TERM
    Проверка на O
    Проверка на IDENT, текущий символ - 4
    Проверка на ЦБЗ,
    текущий символ - 4
    Проверка на TERM
    Проверка на O
    Проверка на AB
    Проверка на TERM
    Проверка на O
    Проверка на IDENT, текущий символ - s
    Проверка на AB
    Проверка на TERM
    Проверка на O
    Проверка на IDENT, текущий символ - 2
    Проверка на ЦБЗ,
    текущий символ - 2
    Проверка на AB
    Проверка на TERM
    Проверка на O
    Проверка на IDENT, текущий символ - f
    Проверка на FUNC,
    текущий символ -
    Проверка на IDENT, текущий символ - s
    Проверка на PAR,
    текущий символ - w
    Проверка на IDENT, текущий символ - w
    233)fewfew) sd(we)
    после функции
    Пропущено / или * или ** или + или -
    _____________________________________________________________________
    Обрабатываем строчку - while(i23*232) clrscr(,)
    Найден While проверка началась с символа - (
    Проверка на AB
    Проверка на TERM
    Проверка на O
    Проверка на IDENT, текущий символ - i
    Проверка на AB
    Проверка на TERM
    Проверка на O
    Проверка на IDENT, текущий символ - 3
    Проверка на ЦБЗ,
    текущий символ - 3
    Проверка на AB
    Проверка на TERM
    Проверка на O
    Проверка на AB
    Проверка на TERM
    Проверка на O
    Проверка на IDENT, текущий символ - 5
    Проверка на ЦБЗ,
    текущий символ...

    Забрать файл

    Похожие материалы:


    Добавить комментарий
    Старайтесь излагать свои мысли грамотно и лаконично

    Введите код:
    Включите эту картинку для отображения кода безопасности
    обновить, если не виден код



ПИШЕМ УНИКАЛЬНЫЕ РАБОТЫ
Заказывайте напрямую у исполнителя!


© 2006-2016 Все права защищены