antlr — Использование генерации кода ANTLR3 C ++

Я хочу использовать ANTLR 3.5 в моей программе на C ++, но у меня возникают проблемы с тем, как на самом деле использовать генерируемый синтаксический анализатор и лексер. Используя грамматику, похожую на Вот, Я могу сделать что-то вроде SimpleCalcParser.expr (). Однако, если я хочу сделать что-то более сложное (например, проанализировать язык, который не просто приводит к единственному значению, но что-то более императивное или декларативное), это кажется довольно сложным с целью C ++. Насколько я могу судить, нет возможности вывести AST или шаблон. Без этого я не уверен, как вы можете сделать что-либо, кроме как определить, правильно ли проанализирован ваш ввод или нет. Кто-нибудь знает, как сделать это с целью C ++, или было бы лучше использовать цель C для генерации AST и использовать ее в C ++?

0

Решение

Некоторое время назад я создал несколько патчей для C ++ target (см. github). Должна быть добавлена ​​генерация AST (но не завершена на 100%), а также добавлены некоторые тесты, которые вы можете использовать в качестве примера. В текущем ATLR 3.5 каждое правило должно возвращать некоторый сложный класс в качестве значения. И вы должны «построить» дерево вручную, используя действия правил.

0

Другие решения


По вопросам рекламы [email protected]