ANTLR - 在c / c ++中访问令牌值

时间:2010-03-20 13:31:55

标签: c++ antlr token

我试图解析整数并在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 :(得分:0)

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

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

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

然而,这些例子是了解这些细节的一个很好的资源,遗憾的是,这些细节没有得到很好的记录。