ANTLR4 - 如何解析相同字符串值之间的内容

时间:2015-11-09 06:22:06

标签: antlr4

我试图编写一个antlr4解析器规则,该规则可以匹配某些相同的任意字符串值之间的内容。到目前为止,我无法找到一种方法来实现它。

例如,在下面的输入中,我需要一个规则来提取 Hello Bye 。我对提取 xyz 并不感兴趣。

TEXT 您好 TEXT

TEXT1 再见 TEXT1

TEXT5 xyz TEXT8

由于它非常类似于XML元素语法,我尝试了ANTLR4 XML Grammar中给出的XML解析器的示例,但它解析了像<ABC> ... </XYZ>这样的输入而没有错误,这不是我想要的。

我也尝试过使用语义谓词而没有太大的成功。

有人可以帮忙提一下如何匹配嵌入在相同字符串之间的内容吗?

谢谢!

Satheesh

1 个答案:

答案 0 :(得分:0)

由于解析器必须执行许多检查,因此不确定这在性能方面如何有效,但您可以尝试以下方法:

token:
    start = IDENTIFIER WORD* end = IDENTIFIER { start == end }?
;

花括号之间的部分是validating semantic predicate。我相信词霸标记是不言自明的。

我想的越多,你可能会更好地标记输入并编写一个处理输入并相应操作的所有者解析器。当然取决于语法的复杂性。