2017-01-02 523 views
1

我想要一个用于CSV输入的ANTLR语法。ANTLR4语法正则表达式和波浪号

  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; 
+0

1)应该没有区别2)'〜'否定下列项目 – Lucero

回答

1

在词法规则,在方括号中的字符定义的字符集。所以["]是带有单个字符"的集合。作为一个集合,每个角色都在集合中或不在集合中,因此定义一个字符两次,如[""]没有区别,它与["]相同。

~否定集,因此~["]意味着除了"任何字符。