ANTLR字符串LEXER令牌

时间:2014-11-20 21:52:12

标签: antlr antlrworks

我正在尝试做一个STRING词法分析器。我的问题是除了\ n,\ r,\ t 任何角色都是他自己(例如\ c是c)。话虽如此,我有以下例子:

"This is a valid \
string."
"This is
not valid."
"This is al\so a valid string"

在互联网上搜索无效后,我得出结论,我必须使用@after子句。不幸的是,我不明白该怎么做。如果我没有误会我不能使用句法谓词,因为这不是解析器规则,它是词法分析器规则。

1 个答案:

答案 0 :(得分:1)

这样的事情怎么样:

STRING
 : '"' ( '\\' ('\\'|'\t'|'\r\n'|'\r'|'\n'|'"') | ~('\\'|'\t'|'\r'|'\n'|'"') )* '"'
 ;

其中'\\' ('\\'|'\t'|'\r\n'|'\r'|'\n'|'"')是转义斜杠,制表符,换行符或引号。并且~('\\'|'\t'|'\r'|'\n'|'"')匹配任何字符而不是斜杠,制表符,换行符或引号。