antlr4词法分析器令牌无效

时间:2018-07-17 21:42:29

标签: antlr antlr4 powerbuilder antlr3

试图解析下面的句子,但是词法分析器生成不正确的令牌

输入

column(propName="~~" abc="hi")

Lexer

DOUBLEQUOTED: '"' (E_TILDE | ~ ('"') | E_DOUBLE_QUOTE)* '"';
fragment E_TILDE  : '~~'   ;
fragment E_DOUBLE_QUOTE   : '~"'   ;

试图解析输入句子,但词法分析器生成令牌

'"~~" abc="' as double quoted string

预期输出

'"~~"' as Double quoted string.
'"hi"' as Double quoted string

任何帮助表示赞赏

1 个答案:

答案 0 :(得分:0)

ANTLR Lexer在确定下一个标记时会匹配最长的子序列。由于"~~" abc="是有效的DOUBLEQUOTED令牌,并且比"~~"长,因此将被匹配。