• 大小: 1.52MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-10-30
  • 语言: Java
  • 标签:

资源简介

编译原理课设作业,java实现,附上实验报告以及答辩ppt 实现词法分析,语法分析,语义分析

资源截图

代码片段和文件信息

package Main;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Stack;

/*词法分析器 */
public class CFFX {

public ArrayList WL = new ArrayList();// 单词表
public ArrayList EL = new ArrayList();// 错误信息列表
public static ArrayList IL = new ArrayList();// int集合
public static ArrayList CL = new ArrayList();// char集合
public static ArrayList TL = new ArrayList();// char集合
public int wcnt = 0;// 统计单词个数
public int ecnt = 0;// 统计错误个数
public boolean noteFlag = false;// 多行注释标志
public boolean ErrorFlag = false;// 词法分析出错标志
public Stack  typestack=new Stack();//类型栈
public CFFX(String str) {
CFFX(str);
}
/*数字字符判断*/
private static boolean isDigit(char ch) {
boolean flag = false;
if (‘0‘ <= ch && ch <= ‘9‘)
flag = true;
return flag;
}

/*判断单词是否为int常量*/
private static boolean isInteger(String word) {
int i;
boolean flag = false;
for (i = 0; i < word.length(); i++) {
if (Character.isDigit(word.charAt(i))) {
continue;
} else {
break;
}
}
if (i == word.length()) {
flag = true;
}
return flag;
}

/*判断单词是否为char常量*/
private static boolean isChar(String word) {
boolean flag = false;
int i = 0;
char temp = word.charAt(i);
if (temp == ‘\‘‘) {
for (i = 1; i < word.length(); i++) {
temp = word.charAt(i);
if (0 <= temp && temp <= 255)
continue;
else
break;
}
if (i + 1 == word.length() && word.charAt(i) == ‘\‘‘)
flag = true;
} else
return flag;

return flag;
}

/*判断字符是否为字母*/
private static boolean isLetter(char ch) {
boolean flag = false;
if ((‘a‘ <= ch && ch <= ‘z‘) || (‘A‘ <= ch && ch <= ‘Z‘))
flag = true;
return flag;
}

/*判断单词是否为合法标识符*/
private static boolean isID(String word) {
boolean flag = false;
int i = 0;
if (Word.isKey(word))
return flag;
char temp = word.charAt(i);
if (isLetter(temp) || temp == ‘_‘) {
for (i = 1; i < word.length(); i++) {
temp = word.charAt(i);
if (isLetter(temp) || temp == ‘_‘ || isDigit(temp))
continue;
else
break;
}
if (i >= word.length())
flag = true;
} else
return flag;

return flag;
}

/*判断词法分析是否通过*/
public boolean isFail() {
return ErrorFlag;
}

public void analyse(String str int line) {
int beginIndex;
int endIndex;
int index = 0;
int length = str.length();
Word word = null;
Typeword typeword=null;
Error error;
char temp;
while (index < length) {
temp = str.charAt(index);
if (!noteFlag) {
if (isLetter(temp) || te

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        301  2017-05-09 12:57  编译原理课设\MiniC\.classpath

     文件        381  2017-05-09 12:57  编译原理课设\MiniC\.project

     文件        598  2017-05-09 12:57  编译原理课设\MiniC\.settings\org.eclipse.jdt.core.prefs

     文件         87  2017-05-09 13:39  编译原理课设\MiniC\a.txt

     文件      13537  2017-05-09 17:23  编译原理课设\MiniC\bin\Main\CFFX.class

     文件        505  2017-05-09 16:31  编译原理课设\MiniC\bin\Main\Error.class

     文件        596  2017-05-09 17:22  编译原理课设\MiniC\bin\Main\FOUR.class

     文件       2807  2017-05-09 17:22  编译原理课设\MiniC\bin\Main\Node.class

     文件        694  2017-05-09 13:15  编译原理课设\MiniC\bin\Main\Typeword.class

     文件       2814  2017-05-09 17:23  编译原理课设\MiniC\bin\Main\Word.class

     文件      24011  2017-05-09 17:22  编译原理课设\MiniC\bin\Main\YFFX.class

     文件       1868  2017-05-09 17:48  编译原理课设\MiniC\bin\VIEW\VIEW$1.class

     文件       2054  2017-05-09 17:48  编译原理课设\MiniC\bin\VIEW\VIEW$2.class

     文件       1753  2017-05-09 17:48  编译原理课设\MiniC\bin\VIEW\VIEW$3.class

     文件       1778  2017-05-09 17:48  编译原理课设\MiniC\bin\VIEW\VIEW$4.class

     文件        685  2017-05-09 17:48  编译原理课设\MiniC\bin\VIEW\VIEW$5.class

     文件       6186  2017-05-09 17:48  编译原理课设\MiniC\bin\VIEW\VIEW.class

     文件        131  2017-05-13 10:18  编译原理课设\MiniC\ifelse.txt

     文件         64  2017-05-09 18:10  编译原理课设\MiniC\result\FOUR.txt

     文件        191  2017-05-09 18:10  编译原理课设\MiniC\result\LL1.txt

     文件        115  2017-05-09 18:10  编译原理课设\MiniC\result\WL.txt

     文件         96  2017-05-09 16:31  编译原理课设\MiniC\result\wordList.txt

     文件      17002  2017-05-09 17:22  编译原理课设\MiniC\src\Main\CFFX.java

     文件        272  2017-05-09 16:31  编译原理课设\MiniC\src\Main\Error.java

     文件        349  2017-05-09 17:22  编译原理课设\MiniC\src\Main\FOUR.java

     文件       2669  2017-05-09 17:22  编译原理课设\MiniC\src\Main\Node.java

     文件        319  2017-05-09 13:15  编译原理课设\MiniC\src\Main\Typeword.java

     文件       3096  2017-05-09 17:23  编译原理课设\MiniC\src\Main\Word.java

     文件      31012  2017-05-09 17:22  编译原理课设\MiniC\src\Main\YFFX.java

     文件       7249  2017-05-09 17:48  编译原理课设\MiniC\src\VIEW\VIEW.java

............此处省略18个文件信息

评论

共有 条评论