2010-03-20 49 views
2

我想解析整数并在antlr 3.2中访问它们的值。ANTLR - 在c/C++中访问令牌值

我已经发现了如何在Java中做到这一点:

//token definition 

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

//rule to access token value: 

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

; 

...但我无法找到这在C/C++的解决方案。有人知道如何做到这一点?

+1

这并不回答你的问题,但是在那段代码中,你将一个字符串解析成一个'Integer',将其转换为一个'int',然后将它自动装箱回到一个'Integer'中。你可以跳过'intValue'步骤,或者将'x'改成'int'。 – 2010-03-20 13:40:02

回答

0

根据示例-v3/C/C.g从http://www.antlr.org/download/examples-v3.tar.gz $ INT.text-> chars应该适用于C,但我没有测试它。

如果您在C程序中从解析器外部遍历AST,并且您有一个类型为ANTLR3_BASE_TREE的名为“节点”的节点,则可以使用node-> getText(node) - > chars来访问它(由于我使用这是我自己)。

请记住,C和C++目标是两个完全不同的东西。我只使用C目标,所以我不能多说C++的目标。

尽管如此,这些例子是一个很好的资源,可以了解这些细节,但遗憾的是没有很好的记录。

+0

感谢您的快速回复$ INT.text-> chars返回一个字符指针并解决问题。 – 2010-03-20 14:47:32