ANTLR4如何分隔Lexer子规则

时间:2018-08-30 16:19:29

标签: parsing antlr antlr4 lex

假设我有这样的Lexer规则:

local-test

和这样的解析器规则:

TEST_ENV

我想获取解析器中没有引号的文字内容。当然,我可以删除引号,但我很有趣地得到不带引号的字符串。

如果我在LITERAL中移动内部规则,则该规则将不正确匹配(仅匹配1个字符)。如果将LITERAL作为解析器规则移动,则可以匹配ESCAPED_SEQ,但这不是我想要的。有没有办法在词法分析器中命名内部规则?

1 个答案:

答案 0 :(得分:2)

  

有没有办法在词法分析器中命名内部规则?

不,没有。无法在ANTLR 4中命名或访问令牌的特定部分,也没有明智的方法将LITERAL转换为解析器规则。

因此,您自己的唯一选择是从令牌的文本中删除引号。