語法分析 詞法識別 工具 ANTLR3.x 的安裝(windows)與使用

最近,項目中需要用到做一個小的編譯系統。
 
熟悉編譯原理的人一定知道lex和yacc。他們就是俗稱的編譯器的編譯器。
如果需要做詞法分析和語法分析,可以使用這兩個工具。
但是lex和yacc都是基於c語言的,而且自動生成的語言有很多宏定義十分難懂。
(lex的開源實現有flex,yacc的開源實現有bison).
我使用flex和bison自動生成了一下,生成的代碼在vc中使用有很多問題,需要修正。
(網上有些兄弟介紹了修正的方法)。
 
後來發現了ANTLR這個工具。ANTLR是開源的工具。
ANTLR具有面向對象的特點,自動生成的代碼易於讀懂,而且能生成c# ,java,c++等很多代碼。我個人認爲是一個比較好的,可以取代lex和yacc的工具。
 
下面介紹ANTLR的安裝步驟,然後用一個小的例子來結束:
1。ANTLR需要java的支持,首先安裝jdk。
       安裝完畢JDK後需要設置好系統的環境變量,(熟悉java的哥們可以估計很熟悉下面)
       如下:
                     (1)新建一個環境變量 JAVA_HOME=D:\Java\jdk1.6.0_03
                      (2)爲Path環境變量添加 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
                      (3)新建環境變量 CLASSPATH=.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;
 
2。開始安裝ANTLR,我使用時的最新版本爲3.0.1
      我下載的爲 ANTLR 3.0.1 source distribution
      ANTLR也提供了工具 ANTLRWorks 可以編輯語法文件。
      安裝完畢後就需要設置環境變量
        爲  CLASSPATH 添加:D:antlr-3.0.1\lib\antlr-3.0.1.jar;D:antlr-3.0.1\lib\antlr-runtime-3.0.1.jar;D:\antlr-3.0.1\lib\stringtemplate-3.1b1.jar;D:\antlr-3.0.1\lib\antlr-2.7.7.jar;
       其中 D:antlr-3.0.1爲我安裝ANTLR的目錄。你要修改爲你的安裝目錄。
       因爲 ANTLR v3是使用v2和stringtemplate寫的,所以這兩個jar都得加入CLASSPATH。
 
3。可以開始編輯語法文件了。編輯語法文件的過程在後面介紹。
      這裏介紹生成的命令:
        java  org.antlr.Tool  SimpleC.g
       其中 SimpleC.g爲你的語法文件的名稱。
 
ANTLR v3的語法與v2有所不同。我也研究了好久。
你也可以直接下載ANTLR v3的例子,自己研究,
如果你有V2的語法文件,ANTLR的網站上也有v2到v3的轉換程序可以使用。
 
有一點需要注意的是,當你使用ANTLRWorks時,將x.g文件放在中文目錄下,
如果x.g中定義了一個grammar,他會自動生成一個詞法x__.g的文件。中間會有
文件註釋,ANTLRWorks會報錯。
 
下面介紹一個簡單的加法計算的語法文件:(V3)
 
grammar Caculator;
options
{
 language = CSharp;
 output=AST;
 ASTLabelType=CommonTree;
}
@header
{
}
expr :  INT PLUS INT;
PLUS : '+'
 ;
INT : ('0'..'9')+
 ;

切記文件名稱也要爲 Caculator.g
自動會生成兩個文件,分別是兩個類 CaculatorLexer和CaculatorParser
 
更復雜的應用,我正在研究。
最後推薦一個資料:
 
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章