我想拥有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;
在lexer规则中,方括号内的字符定义一个字符集。因此,["]
是具有单个字符"
的集合。作为一个集合,每个字符都在集合中是否在集合中,因此定义一个字符两次,因为在[""]
中没有区别,它与["]
相同。
~
否定了该集合,因此~["]
表示除了"
以外的任何字符。