資源簡介
可用于編譯原理的課設和平時作業,程序比較簡單,結構清晰,程序從文件讀入
代碼片段和文件信息
package?huhcun;
import?java.io.BufferedReader;
import?java.io.File;
import?java.io.FileInputStream;
import?java.io.InputStreamReader;
import?java.util.ArrayList;
import?java.util.List;
public?class?MiddleCode?{
static?int?num?=?1;//四元式序列長度
public?static?List?keyWord?=?new?ArrayList<>();//關鍵字
public?static?List?four?=?new?ArrayList<>();//四元式
static?int?T?=?0;
public?MiddleCode()?{
keyWord.add(“if“);
keyWord.add(“and“);
keyWord.add(“then“);
keyWord.add(“while“);
keyWord.add(“do“);
keyWord.add(“for“);
keyWord.add(“to“);
}
public?static?ArrayList?getFile()?{
try?{
String?temp?=?null;
File?f?=?new?File(“te.txt“);
InputStreamReader?read?=?new?InputStreamReader(new?FileInputStream(f)?“GBK“);
BufferedReader?reader?=?new?BufferedReader(read);
ArrayList?readList?=?new?ArrayList();
while?((temp?=?reader.readLine())?!=?null?&&?!““.equals(temp))?{
readList.add(temp);
}
read.close();
return?readList;
}?catch?(Exception?e)?{
System.out.println(“讀取文件失??!文件路徑錯誤或者文件不存在“);
e.printStackTrace();
return?null;
}
}
public?static?ArrayList?change(String?a)?{//?將字符串轉換成字符數組,提取單個單詞
String[]?b?=?a.split(“?“);
ArrayList?b1?=?new?ArrayList();
for?(String?c?:?b)?{
if?(!c.equals(““))?{
b1.add(c);
}
}
//System.out.println(b1);
return?b1;
}
public?static?void?addfour(String?op?String?arg1?String?arg2?String?result)?{
String?str?=?(“(“?+?op?+?““?+?arg1?+?““?+?arg2?+?““?+?result?+?“)“);
num++;
four.add(str);
}
public?static?ArrayList?bexp(ArrayList?d)?{//?分析表達式
for?(int?i?=?1;?i? if?(d.get(i).equals(“*“)?||?d.get(i).equals(“/“))?{
addfour(d.get(i)?d.get(i?-?1)?d.get(i?+?1)?(“t“?+?T));
String?newcode?=?(“t“?+?T);
//System.out.println(d);
d.set(i?newcode);
//System.out.println(d);
d.remove(i?-?1);
//System.out.println(d);
d.remove(i);
//System.out.println(d);
T++;
bexp(d);
}?else?if?(d.get(i).equals(“+“)?||?d.get(i).equals(“-“))?{
addfour(d.get(i)?d.get(i?-?1)?d.get(i?+?1)?(“t“?+?T));
String?newcode?=?(“t“?+?T);
d.set(i?newcode);
d.remove(i?-?1);
d.remove(i);
T++;
bexp(d);
}?else?if?(d.get(i).equals(“<“)?||?d.get(i).equals(“>“)?||?d.get(i).equals(“<=“)?||?d.get(i).equals(“>=“))?{
addfour((“j“?+?d.get(i))?d.get(i?-?1)?d.get(i?+?1)?(““?+?(num?+?2)));
d.set(i?“j“);
d.set(i?-?1?“12“);
d.set(i+1?“?“);
bexp(d);
}
}
return?d;
}
public?static?ArrayList?bexp1(ArrayList?d)?{//?分析表達式
for?(int?i?=?1;?i? if?(d.get(i).equals(“*“)?||?d.get(i).equals(“/“))?{
addfour(d.get(i)?d.get(i?-?1)?d.get(i?+?1)?(“t“?+?T));
String?newcode?=?(“t“?+?T);
//System.out.println(d);
d.set(i?newcode);
//Sys
- 上一篇:集成“3S”技術的森林防火決策支持系統研究
- 下一篇:會員管理系統UML設計
評論
共有 條評論