ANTLR3:如何将AST中的指令映射到其java源文件中的行号

时间:2013-08-12 04:53:26

标签: antlr3

如何从AST中找到指令的行号(源文件)。

示例:

以下代码

24每个void foo(){

25> System.out.println(“hi”);

26> }

与print语句对应的ast是

         METHOD_CALL
              .
                 .
                    System
                    out
                 println
              ARGUMENT_LIST
                 EXPR
                    " hi "

我想从生成的树中检索“System”的行号。 “系统”的答案应为25(源代码中的行号)。

1 个答案:

答案 0 :(得分:1)

如果Tree令牌的System实际上是CommonTree,那么您可以使用CommonTree.getToken()方法获取Token Token.getLine() 1}}。然后,您可以致电{{3}}获取行号。