我正在尝试在解析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?
谢谢
答案 0 :(得分:1)
您的重写规则似乎忘记了+
:
ligne
: DEBUTCOL cellule+ FINCOL -> ^(LIGNE cellule+)
; // ^
// |
// +--- ici!
仅供参考:ANTLR网站上有一个HTML语法:http://www.antlr.org/grammar/HTML