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