0

シーケンスを文字列として取得する際に問題があります。次のような文字列を含むファイルがあります。

{TEXT="<div itemprop=\"content\"><div>some text</div>"}

最初の引用符と最後の引用符の間にあるテキストを取得して使用したい。最初に試しました:

parse : line+;
line : '{TEXT="' SEQUENCE '"}' {System.out.println($SEQUENCE.getText())};
SEQUENCE : .+?;

しかし、それは失敗しました。SEQUENCE は、その方法で 1 つのシンボルしか取得しません。私は試した:

parse : line+;
line : '{TEXT="' (a+=SEQUENCE)*? '"}' {System.out.println($a.getText())};
SEQUENCE : .;

そして、トークンのリストを取得したので、getText を使用できません。

4

1 に答える 1

1

このようにしたい場合は、次のようにすることができます。

grammar Sequence;

parse : line+;
line : '{TEXT="' a=sequence '"}' {System.out.println(((LineContext)_localctx).a.getText());};
sequence : .+?;

ANY:.;

しかし、ANTLR4 には、リスナーやビジターなどの他のメカニズムもあります。

于 2013-09-12T15:54:13.830 に答える