資源簡介
編譯原理課設作業,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? 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? 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? 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? 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個文件信息
- 上一篇:基于JSP的團購系統源碼+數據庫
- 下一篇:Android 音樂播放器源碼
評論
共有 條評論