Antlr4 ---語法規則

設計原則

 語法規則的設計遵循“自頂向下”的原則,即由宏觀到具體。比如,CSV的語法規則,一個CSV文件由多行組成,每行由多個字段組成,每個字段組成規則等等,如下所示,這種方式更貼近人類的思維和表達方式。

csvFile: hdr row+ ;
hdr : row ;
row : field (',' field)* '\r'? '\n' ;
field
    : TEXT
    | STRING
    |
    ;

TEXT   : ~[,\n\r"]+ ;
STRING : '"' ('""'|~'"')* '"' ; // quote-quote is an escaped quote

規則元素

  • Token序列;
  • 字符串;//‘literal’ 單引號
  • 規則;
  • 規則參數;//向規則函數中傳遞的參數,參數的書寫規則是目標語言,用逗號分隔
  • 通配符;
  • {action} 動作,在元素的間隔中執行;
  • {p} 謂詞;

通配符

  • | 表示或
  • * 表示出現0次或以上
  • ? 表示出現0次或1次
  • + 表示出現1次或以上
  • ~ 表示取反

規則文件與解析器的對應關係

 規則文件中的每條規則對應解析器的一個方法和對應的上下文,如下圖所示:
在這裏插入圖片描述

可選標籤

  • 含義:爲規則中的某個分支打標;
  • 作用:更精準的控制解析過程,分支粒度;如果不用標籤,則只能到規則粒度;
    在這裏插入圖片描述

參考:

  1. https://liangshuang.name/2017/08/20/antlr/
  2. http://yijun1171.github.io/2015/03/30/ANTLR4學習筆記-語法字典-Grammar-Lexicon/
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章