синтаксический анализ оператора Паскаль |
синтаксический анализ оператора Паскаль |
Дашустрик |
30.10.2008 10:55
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 12 Пол: Женский Реальное имя: Даша Репутация: 0 |
Произвести синтаксический анализ оператора языка Паскаль WRITELN(согласно условию,оператор может иметь произвольное число пробелов между символами).Записать автоматную грамматику оператора:задать её характеристики, представить дерево синтаксического анализа. По ней построить КА,который будет выполнять роль синтаксического анализатора оператора:начертить его граф-схему и построить таблицу переходов.
Плиз,help!!! -------------------- <...>
|
Archon |
3.11.2008 19:51
Сообщение
#2
|
Профи Группа: Пользователи Сообщений: 618 Пол: Мужской Репутация: 24 |
Так тебе надо сделать синтаксический анализ оператора в полной его форме (со списком аргументов и так далее)? Или просто разбор лексемы "WRITELN"? А то я что-то путаюсь. С одной стороны на автоматных грамматиках реализуется обычно именно лексический анализ, с другой у тебя явно написано слово "синтаксический" =) Если это слово написано не по ошибке, то странно, что на вход дается стока: обычно, синтаксический анализ проводится после лексического и имеет дело с лексемами, а не с отдельными терминальными символами.
-------------------- Close the World...txeN eht nepO
|
Дашустрик |
4.11.2008 0:42
Сообщение
#3
|
Новичок Группа: Пользователи Сообщений: 12 Пол: Женский Реальное имя: Даша Репутация: 0 |
Так тебе надо сделать синтаксический анализ оператора в полной его форме (со списком аргументов и так далее)? Или просто разбор лексемы "WRITELN"? А то я что-то путаюсь. С одной стороны на автоматных грамматиках реализуется обычно именно лексический анализ, с другой у тебя явно написано слово "синтаксический" =) Если это слово написано не по ошибке, то странно, что на вход дается стока: обычно, синтаксический анализ проводится после лексического и имеет дело с лексемами, а не с отдельными терминальными символами. я сама не знаю,поэтому и обращаюсь,я не могу понять,что такое синтаксический анализ,и как его сделать согласно моему условию задачи -------------------- <...>
|
Archon |
4.11.2008 8:56
Сообщение
#4
|
Профи Группа: Пользователи Сообщений: 618 Пол: Мужской Репутация: 24 |
Синтаксический анализ - разбор выражения. Обычно синтаксический анализ делится на два уровня:
* Лексический анализ — входной поток символов разбивается на линейную последовательность лексем - «слов» языка (напр. целые числа, идентификаторы, строковые константы и т. д.). Реализуется на автоматных грамматиках (регулярных выражениях). Одно из популярных средств для создания лексических анализаторов - LEX. * Грамматический анализ — из лексем выделяются «предложения» языка, согласно грамматическим правилам, и создаётся дерево разбора. Для этого используются контекстно-свободные грамматики: s-грамматики, q-грамматики, ll(x)-грамматики (автоматы с магазинной памятью)... Популярное средство создания синтаксических анализаторов - YACC. Это то что я об этом знаю =) Может встретишь знакомые слова? Тогда можно будет определить, что тебе нужно. Я почему вопрос задал в предыдущем посте... Если делать анализ в полной форме, то неясно что может быть аргументами оператора. В паскале - почти любое выражение. Делать разбор для общего случая? Не слишком ли сложно? -------------------- Close the World...txeN eht nepO
|
Дашустрик |
4.11.2008 12:04
Сообщение
#5
|
Новичок Группа: Пользователи Сообщений: 12 Пол: Женский Реальное имя: Даша Репутация: 0 |
я так думаю,что для общего
-------------------- <...>
|
Archon |
4.11.2008 13:31
Сообщение
#6
|
Профи Группа: Пользователи Сообщений: 618 Пол: Мужской Репутация: 24 |
Все таки сложно поверить, что полную версию записи оператора 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
|
Дашустрик |
4.11.2008 13:45
Сообщение
#7
|
Новичок Группа: Пользователи Сообщений: 12 Пол: Женский Реальное имя: Даша Репутация: 0 |
мож скинуть ещё материальчика по этой теме,если таковой в наличии имеется
-------------------- <...>
|
Archon |
4.11.2008 13:50
Сообщение
#8
|
Профи Группа: Пользователи Сообщений: 618 Пол: Мужской Репутация: 24 |
Честно говоря только мой конспект и Википедия. Ищи по запросу "формальная грамматика" или "синтаксический анализ"
-------------------- Close the World...txeN eht nepO
|
Дашустрик |
4.11.2008 14:07
Сообщение
#9
|
Новичок Группа: Пользователи Сообщений: 12 Пол: Женский Реальное имя: Даша Репутация: 0 |
а мож скинуть конспект??
-------------------- <...>
|
Archon |
4.11.2008 14:33
Сообщение
#10
|
Профи Группа: Пользователи Сообщений: 618 Пол: Мужской Репутация: 24 |
Только если бандеролью, но мне он нужен =)
-------------------- Close the World...txeN eht nepO
|
Дашустрик |
4.11.2008 14:53
Сообщение
#11
|
Новичок Группа: Пользователи Сообщений: 12 Пол: Женский Реальное имя: Даша Репутация: 0 |
а по почте никак?
-------------------- <...>
|
Archon |
4.11.2008 14:58
Сообщение
#12
|
Профи Группа: Пользователи Сообщений: 618 Пол: Мужской Репутация: 24 |
Конспекты я пишу в тетрадях и они мне нужны. Да и немного там по этой теме полезного. Для тебя это не выход. Если возникнут конкретные вопросы - задавай сюда я постараюсь ответить. И не ленись пользоваться поиском. Google по запросу "методы трансляции" выдал интересные ссылки на первой же странице. В том числе и конспекты лекций.
-------------------- Close the World...txeN eht nepO
|
Дашустрик |
4.11.2008 15:20
Сообщение
#13
|
Новичок Группа: Пользователи Сообщений: 12 Пол: Женский Реальное имя: Даша Репутация: 0 |
а отсканить и по e-mail отправить?
-------------------- <...>
|
Дашустрик |
5.11.2008 15:54
Сообщение
#14
|
Новичок Группа: Пользователи Сообщений: 12 Пол: Женский Реальное имя: Даша Репутация: 0 |
только,единственный вопрос,числа предусмотрены,а переменные?
-------------------- <...>
|
Дашустрик |
6.11.2008 1:50
Сообщение
#15
|
Новичок Группа: Пользователи Сообщений: 12 Пол: Женский Реальное имя: Даша Репутация: 0 |
вот моё решение
Код S->writelnB B->(C C->пробелC C->'D D->любой_симв._кроме_апострофаD D->''D D->'E E->пробелE E->,C C->лат.букваJ C->_J J->лат.букваJ J->_J J->цифраJ J->,C J->пробелK K->пробелK K->,C J->)T K->)T T->пробелT T->;U Сообщение отредактировано: Дашустрик - 6.11.2008 1:50 -------------------- <...>
|
Archon |
7.11.2008 12:24
Сообщение
#16
|
Профи Группа: Пользователи Сообщений: 618 Пол: Мужской Репутация: 24 |
Цитата только,единственный вопрос,числа предусмотрены,а переменные? У меня только числа и строки, переменные - нет.В твоем варианте все на первый взгляд нормально, только есть пара замечаний: 1. Поддерживаются только строки и переменные, а простые числа - нет 2. Не поддерживаются следующие варианты записи оператора WriteLn (а по логике должны бы):
Сообщение отредактировано: Archon - 7.11.2008 12:24 -------------------- Close the World...txeN eht nepO
|
Текстовая версия | 27.04.2024 15:20 |