Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JavaCC解析树表示_Java_Xml_Parsing_Tree_Javacc - Fatal编程技术网

使用JavaCC解析树表示

使用JavaCC解析树表示,java,xml,parsing,tree,javacc,Java,Xml,Parsing,Tree,Javacc,我用JavaCC构建了一个解析器,例如:let a:int=5+4; 它显示: Start Sxl Statement VariableDecl Identifier Type Expression SimpleExpression Term Factor Literal IntegerLiteral AdditiveOp Term Factor

我用JavaCC构建了一个解析器,例如:let a:int=5+4; 它显示:

Start
 Sxl
  Statement
   VariableDecl
    Identifier
    Type
    Expression
     SimpleExpression
      Term
       Factor
        Literal
         IntegerLiteral
      AdditiveOp
      Term
       Factor
        Literal
         IntegerLiteral
 Parsed.
这很好,但是我需要增强此解析器以输出到xml文件,并为上述输入输出以下输出:

letNode( Identier(X), ExprNode( PlusNode( IntegerLiteral(8), IntegerLiteral(2) )))

如何做到这一点,我需要使用普通Java还是JavaCC中有一些功能?

在我看来,您似乎在使用JJT。下面是使用JavaCC或JJT将输入文件转换为XML文件的3种方法

  • 编辑生成的
    SimpleNode
    类很容易,这样它就可以输出XML或任何您想要的格式

  • 另一种方法是使用JavaCC而不是JJT,并进行SAX调用,以便解析器构造XML文档。这样就很容易输出XML文档

  • 第三种选择是坚持使用JJT并修改
    SimpleNode
    类以生成XML文档(使用SAX或DOM)。然后可以输出XML文档


  • JavaCC不会为您这样做。您必须遍历AST并自己吐出XML。您可以在以下位置看到另一个工具的类似结果:[我注意到您展示的输出不是XML]。选项1和3是否不同?例如,我不能使用此格式?void Identifier()。我所说的(2)和(3)的意思是,他/她可以先生成一个XML对象,然后使用标准方法将其输出到文件。@user3599420我想你是在问是否可以使用JJT。如果是,是的。选项(1)和(3)使用JJT。唯一的选择(2)是避免JJT。我开始做这个了,谢谢!请看我这里的问题