Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++] Синтаксический анализатор


Автор: Tester123 30.5.2012, 19:08
Нужно написать синтаксический анализатор для одного маленького фрагмента программы, т.е. проверка правильности грамматического построения предложений исходного текста программы.
Текст программы:

Код
if (CEdit1.Text='') and (Kedit2.Text='') then 
begin ShowMessage('Please enter data');exit end;


Это должно быть просто окно, куда я вставляю код и при нажатии кнопки либо выдаётся сообщение что всё отлично, либо (если я ввожу какую-то синтаксическую ошибку) говорит что возникла ошибка у указывается какого рода (хорошо бы ещё показать в каком месте, но не обязательно).
Написать можно на любом языке.

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

P.S анализатор только для этого конкретного кода, для этих слов, т.е. если тут нет оператора if, значит если я введу его (пусть даже корректно), то это должна быть ошибка.

Автор: wester 30.5.2012, 20:50
можно регулярными выражениями если правильно понял вопрос.

Автор: Tester123 30.5.2012, 21:42
А как это делается? 

Автор: math64 31.5.2012, 08:15
Какие изменения могут быть в коде? Если никаких - можно просто сравнить с образцом.
Для написания нормального анализатора можно воспользоваться bison 'ом.
Если можно воспользоваться regexp - сначала потренируйся просто на поиске в редакторе.
В большинстве сред разработки, в т.ч. Visual Studio, есть флажок поиска с регулярными выражениями, в Visual Studio есть ещё подсказки как их вводить. Полученное регулярное выражение использовать в программе.

Автор: Tester123 31.5.2012, 21:40
Что-то я не догоняю... Может кто-то помочь с написанием?

Автор: bsa 31.5.2012, 23:29
Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 

Автор: Tester123 1.6.2012, 07:23
Спасибо.
Для понимания, что такое синтаксический анализатор и как это понял я:
Должен вводиться тот фрагмент кода, который в моём первом посте. И должно проверяется что всё синтаксически написано правильно, т.е. в моём случае, раз есть бегин, то должен быть и end, если есть открывающая скобка, должна быть и закрывающая, раз есть if, значит проверить что есть и then, проверить что всё это синтаксически правильно написано, и остальные ключевые слова тоже, пробелы, точка с запятой. Т.е. проверить на синтаксис этот кусок кода.

Автор: math64 1.6.2012, 09:32
Значит, тебе нужен настоящий синтаксический анализатор. RegExp не поможет. Используй bison или другой подобный инструмент.

Автор: Tester123 1.6.2012, 17:41
Я не имею представления что это...
Да нужен настоящий анализатор, но только для моего кускакода, а не для всего языка программирования. Использовать можно что угодно, преподу нужен только экзешник. Но мне самому было бы интересно и на код посмотреть. Может кто-то помочь написать?

Автор: Tester123 2.6.2012, 17:48
Помогите пожалуйста написать программу.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)