2014-05-03 44 views
1

我在JavaCC中構建了一個解析器,例如:let a:int = 5 + 4; 它顯示:使用JavaCC解析樹表示法

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中有一些功能?

+1

JavaCC不會爲你做這件事。你必須走過AST並自己吐出XML。你可以在另一個工具看到類似的結果:http://stackoverflow.com/a/7882118/120163 [我注意到你展示的輸出不是XML]。 –

回答

1

它看起來像我在使用JJT。以下是使用JavaCC或JJT將輸入文件轉換爲XML文件的三種方法。

  1. 很容易使其輸出XML編輯生成SimpleNode類 - 或任何格式你想要的。

  2. 另一種方法是使用JavaCC而不是JJT並進行SAX調用,以便解析器構造一個XML文檔。然後很容易輸出XML文檔。

  3. 第三個選項是堅持使用JJT並修改SimpleNode類以生成XML文檔(使用SAX或DOM)。然後可以輸出XML文檔。

+0

選項1和3有什麼不同? –

+0

我不能使用這種格式? void Identifier()#MyID: – user3599420

+0

@IraBaxter我的意思是(1)是他/她可以直接產生一個字符串或打印到文件中。我的意思是(2)和(3),他/她可以先生成一個XML對象,然後使用標準方法將其輸出到文件中。 –