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