ANTLR - доступ к значениям токена в c / c ++ - PullRequest
2 голосов
/ 20 марта 2010

Я пытаюсь разобрать целые числа и получить доступ к их значению в antlr 3.2.

Я уже узнал, как это сделать в Java:

//token definition

INT :  '0'..'9'+;

//rule to access token value:

start : val=INT           {Integer x = Integer.valueOf( $val.text ).intValue(); }

;

... но я не смог найти решения для этого в C / C ++. Кто-нибудь знает, как это сделать?

1 Ответ

0 голосов
/ 20 марта 2010

Согласно примерам-v3 / C / C.g от http://www.antlr.org/download/examples-v3.tar.gz $ INT.text-> chars должен работать для C, но я не проверял это.

Если вы пересекаете AST снаружи синтаксического анализатора в программе на C и у вас есть узел с именем "node" типа ANTLR3_BASE_TREE, вы можете получить к нему доступ с помощью node-> getText (node) -> chars (протестировано, поскольку я использую это сам).

Помните, что цель C и C ++ - это две совершенно разные вещи. Я использую только цель C, поэтому не могу много рассказать о цели C ++.

Тем не менее, примеры - это отличный ресурс для изучения таких деталей, которые, к сожалению, не очень хорошо документированы.

...