• 大小: 125KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-07-07
  • 语言: Java
  • 标签: c-minus  java  编译原理  

资源简介

编译原理课程设计--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\Treeframe$1.class

     文件       4602  2007-12-02 00:56  C-minus词法和语法分析器\编译原理源程序\bin\cminus\Treeframe.class

     文件        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\yyobject.class

     文件        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个文件信息

评论

共有 条评论