我尝试创建一个简化语言的编译器,我想知道如何在我的节点中存储线号等元信息。这将允许我逐步解释。所以我需要在指令节点的具体源文本中找到当前指令的行。
有人可以帮我解决这个问题吗?
先谢谢你。
答案 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) {
}