我有一个小的c语言,我已经生成了一个解析器,并使用jjtree创建了一个printVisitor。现在,我希望能够更改AST并打印新修改的AST。
例如,我有一个名为“污点”的构造的产生,它将定义包装在其中。我希望在解析时将AST更改为直接指向声明并忽略污点构造。 那个
taint(int x) ====becomes after parsing===> int x
怎么可能?我不确定我是否需要访问者,或者我可以直接更改jjtree以包含它。
以下是制作代码。非常感谢您的帮助。
void Taint() #Taint: {Token t; String varname; }
{
t = <TAINT>< LPAREN> varname=Primitive()< RPAREN>
{
ST.put(varname, new STC(varname, true, true));
jjtThis.value=t.image;
}
}
String Primitive() #Primitive: { String type; String name;}
{
type=Type() name=Id()
{
ST.put(name, new STC(name, false, true) );
return name;
}
}