1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
| 1147 |
Сообщение
#1
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 205 Пол: Мужской Реальное имя: Евгений Репутация: 0 |
нужно произвести синтаксический анализ - "вариант". Я сначала думал что нужно создать программу, анализирующую само выражение "вариант", но вскоре понял что это не так. Кроме того непонятно как должен выглядеть алфавит языка записи выражения, соответственно я немогу построить таблицу переходов..
Буду благодарен за любую помошь в этом вопросе Сообщение отредактировано: 1147 - Эскизы прикрепленных изображений |
![]() ![]() |
| Archon |
Сообщение
#2
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 618 Пол: Мужской Репутация: 24 |
Извини, что так долго, только сейчас в интернет вышел.
Цитата Разработать программу, которая выполняет лексический и синтаксический анализ в соответствии с заданной синтаксической диаграммой. Программа должна обеспечивать многократный ввод предложений, их об-работку с выводом на экран результатов лексического и синтаксического анализов и завершать работу при вводе слова "все". С этого надо было начинать. То есть лексический анализ делать надо. Что не понятно, так это в чем заключается результат анализа. Я лично думаю, что надо просто проверить строку на правильность, но я могу ошибаться.Еще не понятно, что из себя представляют константа, тип и идентификатор. С точки зрения правил Паскаля на этапе лексического анализа они идентичны. То есть неразличимы. Цитата В качестве примера я прикрепил картинку с другими заданиями и их входными строками. Там у меня не возникает вопросов по поводу входных строк. все итак ясно. Каким образом верхняя строка соответствует верхней схеме? С нижней вопросов нет.Отложим пока лексический анализ и займемся синтаксическим. Тогда мы имеем дело с последовательностью лексем. Допустим, что мое предположение верно и константа, тип, идентификатор действительно неразличимы. Пусть им всем соответствует одна лексема I. Тогда твоей схеме будет соответствовать такая грамматика: S -> IA(B A -> ,IA A -> : B -> I:IC B -> ) C -> ,IC C -> ) Этой грамматике будет соответствовать следующий мп-автомат (немного нестандартно я его представил, но общий случай нас не интересует, если надо, можешь построить сам): По вертикали отложены возможные лексемы. По горизонтали - символы, которые могут быть в магазине. В самом начале в магазине находится символ S. На каждом шаге автомата мы берем следующую лексему и извлекаем из магазина символ (он при этом удаляется). Далее находим их пересечение в таблице и в зависимости от содержимого ячейки совершаем следующие действия: - - Ошибка, конец проверки. Это значит, что если мы попали в эту клетку, то строка не соответствует грамматике. + - Строка соответствует грамматике, конец проверки. next - Просто идем дальше Последовательность символов - вставить все указанные символы в обратном порядке (начиная с последнего), после чего идем дальше. То есть например если в ячейке написано "A(B", вставляем в магазин символы "B", "(", "A". Устраивает такой автомат? Если есть вопросы давай их сюда =). Если нет, то пойдем дальше. Еще скажи - лексический анализ сам сможешь сделать? -------------------- Close the World...txeN eht nepO
|
| 1147 |
Сообщение
#3
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 205 Пол: Мужской Реальное имя: Евгений Репутация: 0 |
Синтаксические анализаторы регулярных языков на вход получают строку лексем. В процессе синтаксического анализа происходит распознавание конструкций языка в строке токенов. Тоесть в данном случае, на вход будут поступать лексемы, записанные в таблице. Программа должна проверять на ошибки. Последовательность СИМВОЛОВ, а не СЛОВ-нет ли пропусков, местами не перепутаны ли они,правильно ли написаны символы (та ли буква) и т.д. Ошибки в словах искать не нужно-это очень сложно. Так что по-моему лексический анализ здесь ненужен.
Насчет верхней строки и схемы-я опять перепутал. К сообщению прикрепил верный пример. По поводу неразличимости константы и идентификатора я согласен. А вот тип должен быть одним из следующих: integer, word, single, double. Значит и в таблицу, насколько я понимаю, нужно внести изменения. Также я добавляю пример синтаксического анализатора. Там идентификатор представляет собой несколько символов, или символы и цыфры. (тоесть не обязательно что константа и идентификатор-идентичны). Вопрос у меня следующий: на схеме моего задания константа и идентификатор обозначены словами, а в примере синтаксического анализатора который я прикрепил они обозначены V и N. Это одно и тоже, просто разница в обозначении, или всетаки тут имеются ввиду разные вещи? А вообще основная проблема у меня заключается в написании этого задания на паскале. Автомат этот меня вполне устраивает (лишь бы делал все правильно Эскизы прикрепленных изображений |
| 1147 |
Сообщение
#4
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 205 Пол: Мужской Реальное имя: Евгений Репутация: 0 |
Я тут приблизительно составил таблицу с учетом типа и идентификатора. Но мне непонятен принцип построения грамматики, откуда берутся символы: S, A, B, C, и почему тому или иному символу соответствует - ( или IA(B например, почему А,В,С используются по 2 раза, а S-один. Поэтому завершить таблицу несмог...
Еще я хотел бы уточнить насчет того что имеется ввиду под понятием токен... Например, дано выражение: If Sum>5 then pr:=true; Так вот, If, Sum, >, 5, then, pr, :=, true- это все лексемы (кстати, у меня в методичке лексема Sum обозначена как идентификатор). Тогда токен, как я понимаю-это, если взять лексему Sum например, это каждый символ составляющий лексему, т.е. s, u, m. Так? Данная лексема содержит в себе 3 токена, если я правильно понял? Эскизы прикрепленных изображений |
1147 вопрос по синтаксическому анализу 26.11.2008 21:48
Archon Судя по всему тебе нужна программа, принимающая ст… 26.11.2008 23:09
1147 Мне кажется что это контекстно-свободные грамматик… 26.11.2008 23:24
Archon Похоже, ты прикрепил не ту картинку =) Проверь. 27.11.2008 0:09
1147 картинку заменил. писал об одном задании а думал о… 27.11.2008 0:28
Archon Если лексемы уже выделены, то значит в строке прис… 27.11.2008 0:36
Archon Даже не совсем так. По идее тебе нужна функция, ко… 27.11.2008 1:47
Гость Да, помощь с автоматом мне бы не помешала!
И … 28.11.2008 4:11
Archon
А как выглядит задание слово в слово? Может быть … 28.11.2008 20:43
Archon Кстати, прежде чем писать автомат, надо определить… 28.11.2008 21:06
1147 задание выглядит так:
Разработать программу, кото… 28.11.2008 23:54
1147 и еще никак немогу понять, по каким правилам мы ст… 2.12.2008 11:02
1147 ------------ 2.12.2008 14:59
1147 вопрос с литературой можно оставить..
У меня вот ч… 4.12.2008 16:56
Archon Тогда пиши функцию, которая возвращает следующую л… 3.12.2008 5:43
1147 А где можно посмотреть эту грамматику? Не знаешь к… 4.12.2008 1:17
Archon Так через какой автомат делать будешь? МП или как … 3.12.2008 22:23
1147 Если проще сделать как в моем примере, то давай сд… 3.12.2008 23:17
Archon Дак я ее написал в своем посте:
4.12.2008 16:13
Archon Ну, для начала скажи, что с вас будут требовать. У… 5.12.2008 0:24
1147 да вот и я не понимаю зачем вообще нужна эта грамм… 5.12.2008 0:33
1147 А вообще требования к заданию у нас такие же как б… 5.12.2008 0:42
1147 хотя на это уже нет времени... помоги пожалуйста н… 6.12.2008 18:41
Archon Если с вас грамматику не требуют, то просто забудь… 5.12.2008 0:41
Archon const
a: array[1..7, 1..6] of integer… 7.12.2008 3:55
Гость Как должна выглядеть входная строка чтобы программ… 7.12.2008 22:57
Archon Ну конечно. Она реализует строго тот автомат, что … 8.12.2008 1:43
Гость Ты мог бы это сделать?!? сам я точно не успею-… 8.12.2008 2:33
Archon Ну уж нет. И так все уже за тебя сделал. К тому же… 8.12.2008 3:09
Гость Archon, программу я сдал наконец-то. Хочу выразить… 15.12.2008 21:39![]() ![]() |
|
Текстовая версия | 24.12.2025 13:40 |