A. 如何使用JFlex、javaCUP(詳細代碼模版) by 踏雪赤兔
編譯原理的實驗要求我們用JFlex和JavaCUP來對語言進行分析處理,JavaCUP有一個User's Manual教你怎樣做,上面還有一個簡單的計算器作為例子,但一試之下,卻發現那個例子有不少錯誤,結果改了我n久才完成~當然馬上就決定寫一篇博客告訴大家怎樣做才是正確的,以免像我那樣白走許多彎路。我也不知是不是我找的那份不好,如果你有更好的manual,記得告訴我。
撰寫本文的目的:給出使用JFlex、JavaCUP來為一個計算器建立分析器的示例的完整代碼,使讀者能充分領會JavaCUP的使用方法。雖然本文僅僅給出了計算器的代碼,但只要你會寫你的語言的翻譯模式,則只要照抄這個模版,並改改相應動作就可以了。
引用到的資料:
《CUP User's Manual》,作者:
Scott E. Hudson
地址為李老師那裡下載下來的JavaCUP-11a.rar\CUP-develop.tar.gz\develop\manual.html,有詳細的英文說明和示例代碼,但有很多錯。本文中簡稱為《手冊》。
《使用CUP進行語法分析》
詳細步驟:1、准備工作。
JavaCUP和JFlex一樣,壓縮包里邊有許多的文件夾和文件,我不知道正統的做法是否要求使用javaCUP也像Jflex一樣要設置一堆path啊、classpath啊、jflex_home之類的環境變數,但如果你像我一樣只打算用它幾次,你只要執行下述的兩個簡單步驟就可以了,它並不需要你設置任何的環境變數(以下假設你的工作目錄是work\):
1)將JavaCUP壓縮包里的java-cup-11a.jar解壓到work\下。
2)將JavaCUP壓縮包里的CUP-develop.tar.gz\develop\src下的java_cup文件夾整個解壓到work\下。
現在你可以使用JavaCUP了。
2、為這個計算器寫一個詞法分析器。或者用JFlex生成一個詞法分析器
兩種方法都可以生成詞法分析器,其中,直接寫分析器的代碼如下:
B. 關於JFlex,CUP高手指點拜託各位大神
我是那天給你回答問題的,你說在你別的問題上留言會把分轉來的。 可是為什麼我回復的你的那個問題給刪除了呢?
滿意請採納
C. 一個關於JFlex和CUP的問題
最後一句,直接java paser input.in
D. jflex 配置
1.首先確保java jdk已經設置好環境變數
2.下載jflex,解壓到c:\
3.修改C:\jflex\bin\jflex.bat里的JFLEX_HOME=c:\jflex和JAVA_HOME=...(jdk的安裝目錄),修改環境變
量path,在後面加上;c:\jflex\bin
4.下載java-cup-11a.jar到目錄C:\jflex\examples\cup
5.在命令行模式下編譯C:\jflex\examples\cup里的lcalc.flex:jflex lcalc.flex
將java-cup-11a.jar 文件里的java-cup文件夾放到外層目錄中。
6.在目錄C:\jflex\examples\cup執行命令java -jar java-cup-11a.jar ycalc.cup
7.編譯Lexer.java:javac Lexer.java
8.編譯Main:javac Main.java
9.執行Main:java Main test.txt
10.完成