ANTLR入门笔记
定義
ANTLR, 語言識別的另一個工具(ANother Tool for Language Recognition ),(前身是PCCTS)是一種語言工具,它提供了一個框架,可以通過包含 Java,C++,或 C#動作(action)的語法描述來構造語言識別器,編譯器和解析器。
關鍵概念
- 前端:定義語法規(guī)則,antlr通過g4文件來定義
- lexer:詞法解規(guī)則,就是將一個句子多個字符進行組裝分成多個單詞的規(guī)則
- parser:語法解析,對分詞后的整個句子進行解析,可以對每個分詞單元做出自定義的處理,從而來實現(xiàn)自己的語法解析功能。
g4文件
g4文件是antlr生成詞法解析規(guī)則和語法解析規(guī)則的基礎。該文件是我們自定義的,文件名后綴需要是.g4。
rule
rule是antlr生成詞法語法解析的基礎。包括了lexer與parser,每條規(guī)則都是key:value的形式,以分號結尾。lexer首字母大寫,parser小寫。
Tokens
詞法原子單元會生成一個tokens文件,文件里為每個原子單元定義了一個序號(記號)
fragment詞法規(guī)則
ANTLR文法中語法規(guī)則是在詞法規(guī)則基礎上建立的。但不一定每個詞法規(guī)則都會被語法規(guī)則直接使用。這就象一個類的公有成員和私有成員,公有成員是對外公開的會被外界直接調用。而私有成員不對外公開是由公有成員間接調用的。在詞法規(guī)則中那些不會被語法規(guī)則直接調用的詞法規(guī)則可以用一個fragment關鍵字來標識,fragment標識的規(guī)則只能為其它詞法規(guī)則提供基礎。
//正確用法
a : INT;
INT : DIGIT+;
fragment DIGIT : '0' .. '9';
//錯誤用法
a : DIGIT;
INT : DIGIT+;
fragment DIGIT : '0' .. '9';
工作流程
核心標記
常見模式
核心詞法規(guī)則總結
總結
- 上一篇: 中国中医药产业发展状况分析及未来市场竞争
- 下一篇: linux Fcitx5