Формальный язык, компилятор, ...
От: Аноним  
Дата: 28.09.06 04:03
Оценка:
Есть правила записанные на формальном языке, типа:
ПУТЬ = ПАПКА1 \ ПАПКА2 \ ПАПКА3 ...
ПАПКА1 = А | Б | В
ПАПКА2 = ИМЯ
ИМЯ = СТРОКА_СИМВОЛОВ
СТРОКА_СИМВОЛОВ = СИМВОЛ | СИМВОЛ СТРОКА_СИМВОЛОВ
СИМВОЛ = А | Б | В | ...
ПАПКА3 = ЧИСЛО | ЧИСЛО,ПАПКА3
...

Нужно проверить конкретную строку на соответствие данному правилу.
Т.е., насколько я понимаю — это классическая задача компилятора.

Вопрос:
Существуют ли простенькие компиляторы общего назначения в виде библиотеки (класса, функции), которые бы позволяли "компилировать" (не знаю как сказать ещё) простые выражения (наподобие выше описанных).
Re: Формальный язык, компилятор, ...
От: Tilir Россия http://tilir.livejournal.com
Дата: 28.09.06 05:34
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Есть правила записанные на формальном языке, типа:

А>ПУТЬ = ПАПКА1 \ ПАПКА2 \ ПАПКА3 ...
А>ПАПКА1 = А | Б | В
А>ПАПКА2 = ИМЯ
А>ИМЯ = СТРОКА_СИМВОЛОВ
А>СТРОКА_СИМВОЛОВ = СИМВОЛ | СИМВОЛ СТРОКА_СИМВОЛОВ
А>СИМВОЛ = А | Б | В | ...
А>ПАПКА3 = ЧИСЛО | ЧИСЛО,ПАПКА3
А>...

А>Нужно проверить конкретную строку на соответствие данному правилу.

А>Т.е., насколько я понимаю — это классическая задача компилятора.

А>Вопрос:

А>Существуют ли простенькие компиляторы общего назначения в виде библиотеки (класса, функции), которые бы позволяли "компилировать" (не знаю как сказать ещё) простые выражения (наподобие выше описанных).


boost::spirit уже пробовали?
Re: Формальный язык, компилятор, ...
От: denaturat  
Дата: 28.09.06 05:36
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Есть правила записанные на формальном языке, типа:

А>ПУТЬ = ПАПКА1 \ ПАПКА2 \ ПАПКА3 ...
А>ПАПКА1 = А | Б | В
А>ПАПКА2 = ИМЯ
А>ИМЯ = СТРОКА_СИМВОЛОВ
А>СТРОКА_СИМВОЛОВ = СИМВОЛ | СИМВОЛ СТРОКА_СИМВОЛОВ
А>СИМВОЛ = А | Б | В | ...
А>ПАПКА3 = ЧИСЛО | ЧИСЛО,ПАПКА3
А>...

А>Нужно проверить конкретную строку на соответствие данному правилу.

А>Т.е., насколько я понимаю — это классическая задача компилятора.

Попробуй YACC, правда, сие не простое решение, но и не особо сложное. Грамматику ты уже нарисовал.
Re[2]: Формальный язык, компилятор, ...
От: Аноним  
Дата: 28.09.06 05:49
Оценка:
T>boost::spirit уже пробовали?

С boost вообще не знаком.
Интересует, что-нибудь такое маленькое, во что можно быстро въехать.
Re[2]: Формальный язык, компилятор, ...
От: Аноним  
Дата: 28.09.06 06:15
Оценка:
D>Попробуй YACC, правда, сие не простое решение, но и не особо сложное. Грамматику ты уже нарисовал.

Почиталь, вроде мне подходит, особенно Visual Yacc.
Не могу ни где скачать, то ссылка битая, то скачивается только HLP-файл.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.