資源簡介
編譯原理課程設計--C-minus詞法和語法分析器,用lex做的詞法分析,包含輸入文件;LL(1)語法分析;JTree輸出分析樹

代碼片段和文件信息
package?cminus;
/**
?*?控制整個編譯流程的主類
?*?
?*?@author?Administrator
?*?
?*/
import?java.io.*;
public?class?Controller?{
private?static?BufferedReader?stdIn?=?new?BufferedReader(
new?InputStreamReader(System.in));
private?Parser?scanner?;//?詞法分析器類
private?String?grammarfilename;//文法文件名
private?String?programfilename;//程序文件名
private?ParsingTree?tree;//分析樹類
private?Treeframe?treeframe;//圖形化顯示分析樹的類
/***
?*?構造函數
?*/
public?Controller()?{
scanner?=?new?Parser();
try?{
System.out.print(“Enter?the?grammar?file?path:\t“);
this.grammarfilename?=?stdIn.readLine();
tree?=?new?ParsingTree(this.grammarfilename);
treeframe?=?new?Treeframe(tree);
System.out
.print(“Enter?the?program?file?path?which?is?wrote?in?c-minus:\t“);
this.programfilename?=?stdIn.readLine();
}?catch?(IOException?e)?{
System.out.println(“I/O?error:?“?+?e.getMessage());
}
}
public?void?doScannerWork()?{
try?{
scanner.setSourceFile(programfilename);
scanner.getToken();
scanner.showTokens();
}?catch?(Exception?e)?{
System.err.println(“Scanning?error:?“?+?e.getMessage());
}
}
public?void?doFirstSetWork()?{
try?{
tree.addToList();?//?將文法文件裝入數據結構
tree.validateGrammar();//?檢查文法有無語法錯誤
tree.getFirstSet();?//?得到初期存儲在多個鏈表中的first集合
tree.constructFirstSet();?//?將多個鏈表存儲的first集合裝入vector中。
tree.printFirstSet();
}?catch?(Exception?e)?{
System.err.println(“Generating?first?set?error:?“?+?e.getMessage());
}
}
public?void?doFollowSetWork()?{
try?{
tree.getFollowSet();
tree.constructFollowSet();
tree.printFollowSet();
tree.isLL1();
}?catch?(Exception?e)?{
System.err
.println(“Generating?follow?set?error:?“?+?e.getMessage());
}
}
public?void?doParsingTableWork()?{
try?{
tree.initParsingTable();
tree.constructParsingTable();
tree.printParsingTable();
}?catch?(Exception?e)?{
System.err.println(“Generating?parsing?table?error:“
+?e.getMessage());
}
}
public?void?doParsingTreeWork()?{
try?{
tree.setStackToken();
tree.setStackTokenType();
tree.parsingAction();
treeframe.init();
treeframe.displayParsingTree();
}?catch?(Exception?e)?{
System.err.println(“Generating?parsing?tree?error:“
+?e.getMessage());
}
}
public?void?displayChoice()?{
System.out.println(“*******************C-minus?simple?compiler?V1.0******************“);
System.out.println(“ scan ?--execute?the?scann?work.“);
System.out.println(“ first ?--display?the?first?set?of?grammar.“);
System.out.println(“ follow ?--display?the?follow?set?of?grammar.“);
System.out.println(“ table ?--display?the?parsing?table?of?grammar.“);
System.out.println(“ tree? ?--show?the?parsing?tree?for?the?program?with?c-minus.“);
System.out.println(“ exit? ?--exit?the??program.“);
System.out.println(“*****************************************************************“);
System.out.pri
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????3824??2007-12-03?21:30??C-minus詞法和語法分析器\Lex輸入文件\C-minus.l
?????文件????????248??2007-11-15?14:23??C-minus詞法和語法分析器\編譯原理源程序\.classpath
?????文件????????344??2007-12-02?20:58??C-minus詞法和語法分析器\編譯原理源程序\.fatjar
?????文件????????388??2007-11-14?17:51??C-minus詞法和語法分析器\編譯原理源程序\.project
?????文件???????5226??2007-12-03?20:29??C-minus詞法和語法分析器\編譯原理源程序\bin\cminus\Controller.class
?????文件???????9553??2007-12-03?21:22??C-minus詞法和語法分析器\編譯原理源程序\bin\cminus\FirstSet.class
?????文件???????6679??2007-12-03?21:22??C-minus詞法和語法分析器\編譯原理源程序\bin\cminus\FollowSet.class
?????文件???????9346??2007-12-03?21:27??C-minus詞法和語法分析器\編譯原理源程序\bin\cminus\Parser.class
?????文件???????4858??2007-12-03?21:23??C-minus詞法和語法分析器\編譯原理源程序\bin\cminus\ParsingTable.class
?????文件????????870??2007-12-03?20:30??C-minus詞法和語法分析器\編譯原理源程序\bin\cminus\ParsingTree$ParsingTreeNode.class
?????文件???????6336??2007-12-03?20:30??C-minus詞法和語法分析器\編譯原理源程序\bin\cminus\ParsingTree.class
?????文件???????1731??2007-12-02?01:32??C-minus詞法和語法分析器\編譯原理源程序\bin\cminus\TokenProcess.class
?????文件???????1092??2007-12-02?00:56??C-minus詞法和語法分析器\編譯原理源程序\bin\cminus\TokenType.class
?????文件???????1296??2007-12-02?00:56??C-minus詞法和語法分析器\編譯原理源程序\bin\cminus\Treefr
?????文件???????4602??2007-12-02?00:56??C-minus詞法和語法分析器\編譯原理源程序\bin\cminus\Treefr
?????文件????????414??2007-12-02?00:56??C-minus詞法和語法分析器\編譯原理源程序\bin\yl\yyflexer$yyftables.class
?????文件????????474??2007-12-02?00:56??C-minus詞法和語法分析器\編譯原理源程序\bin\yl\yyflexer$yytransition.class
?????文件???????2921??2007-12-02?00:56??C-minus詞法和語法分析器\編譯原理源程序\bin\yl\yyflexer.class
?????文件????????507??2007-12-02?00:56??C-minus詞法和語法分析器\編譯原理源程序\bin\yl\yylexer$yystate.class
?????文件????????478??2007-12-02?00:56??C-minus詞法和語法分析器\編譯原理源程序\bin\yl\yylexer$yytables.class
?????文件???????8652??2007-12-02?00:56??C-minus詞法和語法分析器\編譯原理源程序\bin\yl\yylexer.class
?????文件???????2009??2007-12-02?00:56??C-minus詞法和語法分析器\編譯原理源程序\bin\yl\yyob
?????文件????????457??2007-12-02?00:56??C-minus詞法和語法分析器\編譯原理源程序\bin\yl\yyparser$yyattribute.class
?????文件????????538??2007-12-02?00:56??C-minus詞法和語法分析器\編譯原理源程序\bin\yl\yyparser$yyreduction.class
?????文件????????494??2007-12-02?00:56??C-minus詞法和語法分析器\編譯原理源程序\bin\yl\yyparser$yysymbol.class
?????文件????????578??2007-12-02?00:56??C-minus詞法和語法分析器\編譯原理源程序\bin\yl\yyparser$yytables.class
?????文件??????11862??2007-12-02?00:56??C-minus詞法和語法分析器\編譯原理源程序\bin\yl\yyparser.class
?????文件??????47292??2007-12-03?21:28??C-minus詞法和語法分析器\編譯原理源程序\c-minus-compiler.jar
?????文件?????????38??2007-12-03?20:31??C-minus詞法和語法分析器\編譯原理源程序\c-minus-conpiler.bat
?????文件???????2349??2007-12-03?21:32??C-minus詞法和語法分析器\編譯原理源程序\grammar
............此處省略30個文件信息
- 上一篇:大學生租房系統項目可行性報告
- 下一篇:java模擬編譯器實現詞法語法分析生成語法樹
評論
共有 條評論