使用JavaCC解析树表示
我用JavaCC构建了一个解析器,例如:let a:int=5+4; 它显示:使用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
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或任何您想要的格式SimpleNode
类以生成XML文档(使用SAX或DOM)。然后可以输出XML文档JavaCC不会为您这样做。您必须遍历AST并自己吐出XML。您可以在以下位置看到另一个工具的类似结果:[我注意到您展示的输出不是XML]。选项1和3是否不同?例如,我不能使用此格式?void Identifier()。我所说的(2)和(3)的意思是,他/她可以先生成一个XML对象,然后使用标准方法将其输出到文件。@user3599420我想你是在问是否可以使用JJT。如果是,是的。选项(1)和(3)使用JJT。唯一的选择(2)是避免JJT。我开始做这个了,谢谢!请看我这里的问题