tma писал(а):Писать такое На C++, perl. Но не Си. Си для парсера не подходит.
tma, парсер можно писать на чём угодно, я высказал идею использовать готовые куски, которые написаны не на с++ и не на перле а на си.
На первый взгляд взять ast_expr2.c (используется bison) и ф-ю static int pbx_load_config(const char *config_file) из pbx_config.c. Да, придётся заменить или добавить несколько специфичных астериск ф-й для работы со строками и вот готовый парсер, но по мне так это гораздо проще чем писать парсер с 0 а потом вылавливать тучу несоответствий когда парсер говорит что всё ок а астериск ругается. Плюс если что нить поменяется в обработке выражений, придётся всего лишь заново скопировать ast_expr2.c.
З.Ы. И кстати с учётом использования переменных, часть кода возможно будет норм проверить только на этапе выполнения! Увы.