我试图在解析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>


我刚得到那棵树:无---> LIGNE --->纤维素--->“ Cellule 1”
我怎样才能让LIGNE的所有孩子都进入AST?
谢谢

最佳答案

看来您在重写规则中忘记了+

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


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

10-07 17:10