ANTLR4 语法正则表达式和波浪号

Naz*_*din 2 grammar antlr4

我想要一个用于 CSV 输入的 ANTLR 语法。

  1. (~["])+和 和有(~['"'])+什么区别?

  2. 为什么~重要?

这是我的语法:

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)

Luc*_*ski 5

在词法分析器规则中,方括号内的字符定义了一个字符集。["]带有单个字符的集合也是如此"。作为一个集合,每个字符要么在集合中,要么不在集合中,所以定义一个字符两次,因为 in[""]没有区别,它与["].

~否定集合,因此~["]意味着".