资源简介
编译原理课设作业,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个文件信息
评论
共有 条评论