ANTLR4 语法正则表达式和代字号
ANTLR4 grammar regex and tilde
我想要 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;
在词法分析器规则中,方括号内的字符定义了一个字符集。所以["]
是单个字符"
的集合。作为一个集合,每个字符要么在集合中,要么不在集合中,所以定义一个字符两次,如 [""]
没有区别,它与 ["]
.
相同
~
取反集合,所以 ~["]
表示 除 "
之外的任何字符。
我想要 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;
在词法分析器规则中,方括号内的字符定义了一个字符集。所以["]
是单个字符"
的集合。作为一个集合,每个字符要么在集合中,要么不在集合中,所以定义一个字符两次,如 [""]
没有区别,它与 ["]
.
~
取反集合,所以 ~["]
表示 除 "
之外的任何字符。