String 如何在规则中排除多个字符?
我正在尝试在ANTLRWorks中编写字符串匹配规则,需要匹配转义引号或任何非引号字符。我可以匹配转义引号,但另一部分有问题:String 如何在规则中排除多个字符?,string,antlr,lexical-analysis,String,Antlr,Lexical Analysis,我正在尝试在ANTLRWorks中编写字符串匹配规则,需要匹配转义引号或任何非引号字符。我可以匹配转义引号,但另一部分有问题:~'\'\'\'\'\'\'\'\'\''将最终匹配所有内容,而~'\'\'\'\'\'\'''似乎被语法生成器忽略(至少是视觉显示)。什么样的字符序列可以满足我的需要?试试下面的方法: StringLiteral : '"' (EscapeSequence | StringChar)* '"' ; EscapeSequence :
~'\'\'\'\'\'\'\'\'\''
将最终匹配所有内容,而~'\'\'\'\'\'\'''
似乎被语法生成器忽略(至少是视觉显示)。什么样的字符序列可以满足我的需要?试试下面的方法:
StringLiteral
: '"' (EscapeSequence | StringChar)* '"'
;
EscapeSequence
: '\\' ('"' | '\\')
;
StringChar
: ~('"' | '\\')
;
我最终选择了非贪婪的anychar消费,但这应该很好地回答了这个问题。