Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 如何在规则中排除多个字符?_String_Antlr_Lexical Analysis - Fatal编程技术网

String 如何在规则中排除多个字符?

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

我正在尝试在ANTLRWorks中编写字符串匹配规则,需要匹配转义引号或任何非引号字符。我可以匹配转义引号,但另一部分有问题:
~'\'\'\'\'\'\'\'\'\''
将最终匹配所有内容,而
~'\'\'\'\'\'\'''
似乎被语法生成器忽略(至少是视觉显示)。什么样的字符序列可以满足我的需要?

试试下面的方法:

StringLiteral
    :    '"' (EscapeSequence | StringChar)* '"'
    ;

EscapeSequence
    :    '\\' ('"' | '\\')
    ;

StringChar
    :    ~('"' | '\\')
    ;

我最终选择了非贪婪的anychar消费,但这应该很好地回答了这个问题。