0

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

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

提前谢谢你。

4

1 回答 1

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) {
}
于 2015-11-30T20:05:19.917 回答