Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2012, 20:05   #1
Arturko
Пользователь
 
Регистрация: 09.02.2009
Сообщений: 35
По умолчанию Синтаксический анализатор

Нужно написать синтаксический анализатор для одного маленького фрагмента программы, т.е. проверка правильности грамматического построения предложений исходного текста программы.
Текст программы:
Код:
if (CEdit1.Text='') and (Kedit2.Text='') then 
begin ShowMessage('Please enter data');exit end;
Это должно быть просто окно, куда я вставляю код и при нажатии кнопки либо выдаётся сообщение что всё отлично, либо (если я ввожу какую-то синтаксическую ошибку) говорит что возникла ошибка у указывается какого рода (хорошо бы ещё показать в каком месте, но не обязательно).
Написать можно на любом языке.

Скажите пожалуйста, сложно ли это сделать? Может кто-то поможет? Хоть чем-то. Любым фрагментам кода буду рад (но сам я знаю только object pascal).

P.S анализатор только для этого конкретного кода, для этих слов, т.е. если тут нет оператора if, значит если я введу его (пусть даже корректно), то это должна быть ошибка.
Arturko вне форума Ответить с цитированием
Старый 30.05.2012, 21:40   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Он описан в одном журнале, если надо пиши в личку я дам ссылку. Писал я на c#
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 02.06.2012, 18:49   #3
Arturko
Пользователь
 
Регистрация: 09.02.2009
Сообщений: 35
По умолчанию

Помогите пожалуйста написать программу.
Arturko вне форума Ответить с цитированием
Старый 02.06.2012, 20:02   #4
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Я так понимаю, программа на первом этапе должна определять, идентичен ли текст, введенный пользователем, тексту, хранящемуся в качестве образца.
Это так?
s-andriano вне форума Ответить с цитированием
Старый 02.06.2012, 20:04   #5
Arturko
Пользователь
 
Регистрация: 09.02.2009
Сообщений: 35
По умолчанию

Да, можно конечно сравнить каждый символ строки, if s[1]<>i then.... но это будет очень много ифов, не думаю что это верно, да и не определю какая ошибка, а надо выдать что-то например "; expected" и т.д
Arturko вне форума Ответить с цитированием
Старый 02.06.2012, 21:19   #6
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от Arturko Посмотреть сообщение
но это будет очень много ифов
Мсье не знает, что такое цикл?
s-andriano вне форума Ответить с цитированием
Старый 02.06.2012, 21:39   #7
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от s-andriano Посмотреть сообщение
Мсье не знает, что такое цикл?
Мисье не знает, что такое while(){}.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 02.06.2012, 22:28   #8
Arturko
Пользователь
 
Регистрация: 09.02.2009
Сообщений: 35
По умолчанию

Этот вариант не поможет, если в код добавить пробел, то будет выдавать ошибку. И там ещё много других нюансов. Нужен другой способ..
Arturko вне форума Ответить с цитированием
Старый 02.06.2012, 22:37   #9
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

В моем варианте идет сканирование не по символам, а по лексемам. Символами быстрей, но и писать дольше.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 02.06.2012, 22:59   #10
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от Arturko Посмотреть сообщение
Этот вариант не поможет, если в код добавить пробел, то будет выдавать ошибку. И там ещё много других нюансов. Нужен другой способ..
Почему это вдруг не поможет?
Просто текст между чтением из поля ввода и подачей на вход анализатора нужно немного преобразовать. В частности, удалить лишние пробелы, концы строк и т.п.
s-andriano вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
синтаксический анализатор(LL) Legato Общие вопросы Delphi 2 25.12.2011 18:29
Синтаксический анализатор Lisёноk Помощь студентам 2 12.12.2011 09:51
Синтаксический анализатор Jeka57 Помощь студентам 1 05.06.2011 22:47
Синтаксический анализатор Ita Фриланс 0 29.03.2011 01:37
Синтаксический анализатор Douglas Помощь студентам 0 28.12.2010 18:01