![]() |
![]() |
Дашустрик |
![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 12 Пол: Женский Реальное имя: Даша Репутация: ![]() ![]() ![]() |
Произвести синтаксический анализ оператора языка Паскаль WRITELN(согласно условию,оператор может иметь произвольное число пробелов между символами).Записать автоматную грамматику оператора:задать её характеристики, представить дерево синтаксического анализа. По ней построить КА,который будет выполнять роль синтаксического анализатора оператора:начертить его граф-схему и построить таблицу переходов.
Плиз,help!!! -------------------- <...>
|
![]() ![]() |
Archon |
![]()
Сообщение
#2
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 618 Пол: Мужской Репутация: ![]() ![]() ![]() |
Все таки сложно поверить, что полную версию записи оператора WriteLn требуется представить в виде автоматной грамматики. Это возможно, но сложно. Рекомендую перепроверить задание и посмотреть примеры выполнения, которые вы наверняка разбирали на лекциях.
Вот я попытался набросать автоматную грамматику упрощённого оператора WriteLn с поддержкой вывода строковых констант и целых числовых в десятичной форме. Без модификаторов вывода вроде "WriteLn(15:3);". Без арифметических выражений. Для удобства восприятия я исключил из терминальных символов заглавные буквы и использовал их для обозначения нетерминальных символов. Комментарии указаны в С++ стиле (//). Код S->writeln(A Надеюсь я нигде не ошибся.A->); A->'B // начало строки B->aB B->bB B->cB ... // Перечисляем все буквы B->zB B->!B // Пошли символы B->''B // Одинарная кавычка только в экранированном варианте (2 раза подряд) ... // Все остальные символы B->',C // Конец строки с пробелами после запятой B->',E // Без пробелов C->_C // Под подчёркиванием я имел ввиду пробел C->_E A->0D // Начало числа A->1D ... // Все остальные цифры A->9D A->-D // Для отрицательного числа A->+D // Можно указывать и + D->0D D->1D ... // Все остальные цифры D->9D D->,C // Конец числа с пробелами D->,E // Конец числа без пробелов после запятой E->'B // E аналогично A, но не может заканчивать оператор (нет правила E->);) E->0D E->1D ... E->9D E->-D E->+D Сильно упрощённый вариант записи оператора и уже такие сложности в грамматике... Устраивает такой вариант? -------------------- Close the World...txeN eht nepO
|
![]() ![]() |
![]() |
Текстовая версия | 20.06.2025 3:59 |