我想要一个用于 CSV 输入的 ANTLR 语法。
(~["])+和 和有(~['"'])+什么区别?
为什么~重要?
这是我的语法:
grammar Exercice4;
csv : ligne+
;
ligne : exp (',' exp)* ('\n' | EOF)
;
exp : ID
| INT
| STRING
;
INT : '0'..'9'+;
ID : ('0'..'9' | 'a'..'z' | 'A'..'Z')+;
STRING : '"' (~["])+ '"';
WS : [ ,\n, \t, \r] -> skip;
Run Code Online (Sandbox Code Playgroud)
在词法分析器规则中,方括号内的字符定义了一个字符集。["]带有单个字符的集合也是如此"。作为一个集合,每个字符要么在集合中,要么不在集合中,所以定义一个字符两次,因为 in[""]没有区别,它与["].
~否定集合,因此~["]意味着除".