私は ANTLR が初めてで、ANTLRWorks1.4.3 で次の文法を試しています。
grammar TextGra;
element : starttag (element)* endtag
;
starttag: '<' TAGNAME '>';
endtag : '</' TAGNAME '>';
TAGNAME : ('a'..'z')|('A'..'Z')|('0'..'9');
WS : (' '|'\r'|'\n')+ {skip();} ;
このような単純なxmlフラグメントを解析しようとすると
<a><b><c></c></b></a>
最後の 2 つの endtag 要素が失われました。この状況を処理するにはどうすればよいですか? またはそれは間違った方法ですか?私の状況ではタグ名を制約することはできません 他の xml 解析コードと比較してください。または、文法は $0 を使用して以前に一致したトークンを参照できますか?(正規表現のように)。この場合、前に一致した開始タグによって終了タグのタグ名を決定します。回答ありがとうございます。