我正在尝试做一个STRING词法分析器。我的问题是除了\ n,\ r,\ t 任何角色都是他自己(例如\ c是c)。话虽如此,我有以下例子:
"This is a valid \
string."
"This is
not valid."
"This is al\so a valid string"
在互联网上搜索无效后,我得出结论,我必须使用@after子句。不幸的是,我不明白该怎么做。如果我没有误会我不能使用句法谓词,因为这不是解析器规则,它是词法分析器规则。
答案 0 :(得分:1)
这样的事情怎么样:
STRING
: '"' ( '\\' ('\\'|'\t'|'\r\n'|'\r'|'\n'|'"') | ~('\\'|'\t'|'\r'|'\n'|'"') )* '"'
;
其中'\\' ('\\'|'\t'|'\r\n'|'\r'|'\n'|'"')
是转义斜杠,制表符,换行符或引号。并且~('\\'|'\t'|'\r'|'\n'|'"')
匹配任何字符而不是斜杠,制表符,换行符或引号。