ANTLR:AST,Java

时间:2011-10-06 15:19:03

标签: java antlr abstract-syntax-tree

我正在尝试在解析HTML文件后生成AST

grammar XHTML2CSV;

options {
    output=AST;
    ASTLabelType=CommonTree;
}

tokens {
    CELLULE;
    LIGNE;
    CELLULEG    =  '<td>';                                              
    CELLULED    =  '</td>';
    DEBUTCOL    =  '<tr>';
    FINCOL      =  '</tr>';
    DTAB        =  '<table';
    STAB        =  ' align=\"center\"';
    FTAB        =  ' border=\"1\">';
    FINTAB      ='</table>';                                


ligne 
    : DEBUTCOL cellule+ FINCOL -> ^(LIGNE cellule);

cellule : CELLULEG CHAINE CELLULED            
        -> ^(CELLULE CHAINE);   

当我解析像:

这样的东西时
  <tr>
    <td>"Cellule 1"</td>
    <td>"Cellule 2"</td>
    <td>"Cellule 3"</td>
  </tr>

我刚拿到树:nil ---&gt; LIGNE ---&gt; CELLULE ---&gt; “Cellule 1”
我怎样才能让所有的孩子都进入AST? 谢谢

1 个答案:

答案 0 :(得分:1)

您的重写规则似乎忘记了+

ligne 
  :  DEBUTCOL cellule+ FINCOL -> ^(LIGNE cellule+)
  ;                                       //    ^
                                          //    |
                                          //    +--- ici!

仅供参考:ANTLR网站上有一个HTML语法:http://www.antlr.org/grammar/HTML