0

我在将序列作为字符串时遇到问题。我有一个包含如下字符串的文件:

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

我想获取和使用正好在第一个引号和最后一个引号之间的文本。首先我试过:

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

但它失败了, SEQUENCE 以这种方式只得到一个符号。我试过了:

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 回答