如何使用JJTree JavaCC在节点中存储行号

时间:2015-11-30 15:15:04

标签: compiler-construction javacc interpretation

我尝试创建一个简化语言的编译器,我想知道如何在我的节点中存储线号等元信息。这将允许我逐步解释。所以我需要在指令节点的具体源文本中找到当前指令的行。

有人可以帮我解决这个问题吗?

先谢谢你。

1 个答案:

答案 0 :(得分:1)

创建课程SourceCoords以保存您想要的信息。

将字段添加到SimpleNode类

  private SourceCoords myCoords ;
  public void setCoords( SourceCoords toSet ) { myCoords = toSet ; }
  public SourceCoords getCoords() { return myCoords ; }

在选项中添加

NODE_SCOPE_HOOK=true;

在解析器类中添加以下声明

void jjtreeOpenNodeScope(Node n) {
    ((SimpleNode)n).setCoords( new SourceCoords( file, getToken(1).beginLine ) ) ;
}
void jjtreeCloseNodeScope(Node n) {
}