在词法分析器文件中解析问题

时间:2014-05-20 09:47:44

标签: parsing antlr4 lexer

我的词法分析器中有以下行:

LITERAL_STRING  
    : '"' .*? '"' ( ('@' LETTER+) | ('^^' HTML_STRING))?
    ;

在解析字符串时,Lexer只获取字符串的某些部分。

例如:以下是其中一个字符串文字的示例:"Manuel Ben\u00EDtez \"El Cordob\u00E9s\""@es。我想得到整个字符串,但它只能得到:"Manuel Ben\u00EDtez \"

如何清楚地显示整个字符串(在这种情况下:"Manuel Ben\u00EDtez \"El Cordob\u00E9s\""@es)?

1 个答案:

答案 0 :(得分:0)

而不是.*?,请( ~[\\"] | \\ . )*

LITERAL_STRING  
    : '"' ( ~[\\"] | \\ . )* '"' ( ('@' LETTER+) | ('^^' HTML_STRING))?
    ;

说明:

~[\\"]       # any char other than a backslash and double quote
|            # OR 
\\ .         # a backslash followed by any char