IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> вопрос по синтаксическому анализу
1147
сообщение 26.11.2008 17:48
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 205
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


нужно произвести синтаксический анализ - "вариант". Я сначала думал что нужно создать программу, анализирующую само выражение "вариант", но вскоре понял что это не так. Кроме того непонятно как должен выглядеть алфавит языка записи выражения, соответственно я немогу построить таблицу переходов..
Буду благодарен за любую помошь в этом вопросе

Сообщение отредактировано: 1147 - 26.11.2008 20:26


Эскизы прикрепленных изображений
Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Archon
сообщение 6.12.2008 23:55
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 618
Пол: Мужской

Репутация: -  24  +


Код
const
    a: array[1..7, 1..6] of integer = (
        (2, 8, 8, 8, 8, 8),
        (8, 8, 3, 1, 8, 8),
        (8, 8, 8, 8, 4, 8),
        (8, 5, 8, 8, 8, 9),
        (8, 8, 6, 8, 8, 8),
        (7, 8, 8, 8, 8, 8),
        (8, 8, 8, 6, 8, 9)
    );

function Decode(c: char): integer;
begin
    case c of
        'I': Decode := 1;
        'T': Decode := 2;
        ':': Decode := 3;
        ',': Decode := 4;
        '(': Decode := 5;
        ')': Decode := 6;
    end;
end;

var
    s: string;
    state, i: integer;
begin
    Write('Введите строку для анализа: ');
    ReadLn(s);
    state := 1;
    for i := 1 to Length(s) do begin
        state := a[state, Decode(s[i])];
        if state = 8 then Break;
    end;
    if state = 9 then
        WriteLn('Строка верна')
    else
        WriteLn('Строка ошибочна');
end.


--------------------
Close the World...txeN eht nepO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Гость
сообщение 7.12.2008 18:57
Сообщение #3


Гость






Как должна выглядеть входная строка чтобы программа выдала сообщение что она верна?? Вот например я ввожу корректную строку: a:(), но программа считает ее невернойsad.gif
 К началу страницы 
+ Ответить 

Сообщений в этой теме
1147   вопрос по синтаксическому анализу   26.11.2008 17:48
Archon   Судя по всему тебе нужна программа, принимающая ст...   26.11.2008 19:09
1147   Мне кажется что это контекстно-свободные грамматик...   26.11.2008 19:24
Archon   Похоже, ты прикрепил не ту картинку =) Проверь.   26.11.2008 20:09
1147   картинку заменил. писал об одном задании а думал о...   26.11.2008 20:28
Archon   Если лексемы уже выделены, то значит в строке прис...   26.11.2008 20:36
Archon   Даже не совсем так. По идее тебе нужна функция, ко...   26.11.2008 21:47
Гость   Да, помощь с автоматом мне бы не помешала! И ...   28.11.2008 0:11
Archon   А как выглядит задание слово в слово? Может быть ...   28.11.2008 16:43
Archon   Кстати, прежде чем писать автомат, надо определить...   28.11.2008 17:06
1147   задание выглядит так: Разработать программу, кото...   28.11.2008 19:54
Archon   Извини, что так долго, только сейчас в интернет вы...   1.12.2008 21:35
1147   Синтаксические анализаторы регулярных языков на вх...   2.12.2008 0:10
1147   Я тут приблизительно составил таблицу с учетом тип...   2.12.2008 6:00
1147   и еще никак немогу понять, по каким правилам мы ст...   2.12.2008 7:02
1147   ------------   2.12.2008 10:59
1147   вопрос с литературой можно оставить.. У меня вот ч...   4.12.2008 12:56
Archon   Тогда пиши функцию, которая возвращает следующую л...   3.12.2008 1:43
1147   А где можно посмотреть эту грамматику? Не знаешь к...   3.12.2008 21:17
Archon   Так через какой автомат делать будешь? МП или как ...   3.12.2008 18:23
1147   Если проще сделать как в моем примере, то давай сд...   3.12.2008 19:17
Archon   Дак я ее написал в своем посте:   4.12.2008 12:13
Archon   Ну, для начала скажи, что с вас будут требовать. У...   4.12.2008 20:24
1147   да вот и я не понимаю зачем вообще нужна эта грамм...   4.12.2008 20:33
1147   А вообще требования к заданию у нас такие же как б...   4.12.2008 20:42
1147   хотя на это уже нет времени... помоги пожалуйста н...   6.12.2008 14:41
Archon   Если с вас грамматику не требуют, то просто забудь...   4.12.2008 20:41
Archon   const a: array[1..7, 1..6] of integer...   6.12.2008 23:55
Гость   Как должна выглядеть входная строка чтобы программ...   7.12.2008 18:57
Archon   Ну конечно. Она реализует строго тот автомат, что ...   7.12.2008 21:43
Гость   Ты мог бы это сделать?!? сам я точно не успею-...   7.12.2008 22:33
Archon   Ну уж нет. И так все уже за тебя сделал. К тому же...   7.12.2008 23:09
Гость   Archon, программу я сдал наконец-то. Хочу выразить...   15.12.2008 17:39


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 23:11
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"