Произвести синтаксический анализ оператора языка Паскаль WRITELN(согласно условию,оператор может иметь произвольное число пробелов между символами).Записать автоматную грамматику оператора:задать её характеристики, представить дерево синтаксического анализа. По ней построить КА,который будет выполнять роль синтаксического анализатора оператора:начертить его граф-схему и построить таблицу переходов.
Плиз,help!!!
Так тебе надо сделать синтаксический анализ оператора в полной его форме (со списком аргументов и так далее)? Или просто разбор лексемы "WRITELN"? А то я что-то путаюсь. С одной стороны на автоматных грамматиках реализуется обычно именно лексический анализ, с другой у тебя явно написано слово "синтаксический" =) Если это слово написано не по ошибке, то странно, что на вход дается стока: обычно, синтаксический анализ проводится после лексического и имеет дело с лексемами, а не с отдельными терминальными символами.
Синтаксический анализ - разбор выражения. Обычно синтаксический анализ делится на два уровня:
* Лексический анализ — входной поток символов разбивается на линейную последовательность лексем - «слов» языка (напр. целые числа, идентификаторы, строковые константы и т. д.). Реализуется на автоматных грамматиках (регулярных выражениях). Одно из популярных средств для создания лексических анализаторов - LEX.
* Грамматический анализ — из лексем выделяются «предложения» языка, согласно грамматическим правилам, и создаётся дерево разбора. Для этого используются контекстно-свободные грамматики: s-грамматики, q-грамматики, ll(x)-грамматики (автоматы с магазинной памятью)... Популярное средство создания синтаксических анализаторов - YACC.
Это то что я об этом знаю =) Может встретишь знакомые слова? Тогда можно будет определить, что тебе нужно.
Я почему вопрос задал в предыдущем посте... Если делать анализ в полной форме, то неясно что может быть аргументами оператора. В паскале - почти любое выражение. Делать разбор для общего случая? Не слишком ли сложно?
я так думаю,что для общего
Все таки сложно поверить, что полную версию записи оператора WriteLn требуется представить в виде автоматной грамматики. Это возможно, но сложно. Рекомендую перепроверить задание и посмотреть примеры выполнения, которые вы наверняка разбирали на лекциях.
Вот я попытался набросать автоматную грамматику упрощённого оператора WriteLn с поддержкой вывода строковых констант и целых числовых в десятичной форме. Без модификаторов вывода вроде "WriteLn(15:3);". Без арифметических выражений. Для удобства восприятия я исключил из терминальных символов заглавные буквы и использовал их для обозначения нетерминальных символов. Комментарии указаны в С++ стиле (//).
мож скинуть ещё материальчика по этой теме,если таковой в наличии имеется
Честно говоря только мой конспект и Википедия. Ищи по запросу "формальная грамматика" или "синтаксический анализ"
а мож скинуть конспект??
Только если бандеролью, но мне он нужен =)
а по почте никак?
Конспекты я пишу в тетрадях и они мне нужны. Да и немного там по этой теме полезного. Для тебя это не выход. Если возникнут конкретные вопросы - задавай сюда я постараюсь ответить. И не ленись пользоваться поиском. Google по запросу "методы трансляции" выдал интересные ссылки на первой же странице. В том числе и конспекты лекций.
а отсканить и по e-mail отправить?
только,единственный вопрос,числа предусмотрены,а переменные?
вот моё решение