在jjtree / javacc中更新AST

时间:2017-05-21 14:14:37

标签: parsing compiler-construction javacc

我有一个小的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;
  }  
}

0 个答案:

没有答案