資源簡介
用于編譯原理課設 或小作業 很有用的主要是三元式四元式 逆波蘭式

代碼片段和文件信息
class?Four?{
public?Four(String?text)?{
sb?=?new?StringBuffer();
this.text?=?text;
str?=?this.text.toCharArray();
toBeSolute?=?str;
}
String?getResult?()?{
return?sb.toString()?;
}
StringBuffer?getStringBuffer()?{
return?sb;
}
public?static?final?int?MAX?=?100;
StringBuffer?sb;
int?m?=?0?sum?=?0;//?sum用于計算運算符的個數
//?m用于標記輸入表達式中字符的個數
String?text?=?new?String(““);
char?JG?=?‘A‘;
char[]?toBeSolute;
char[]?str?=?new?char[MAX];//?用于存輸入表達式
int?token?=?0;//?左括號的標志
/**?*********用于更改計算后數組中的值*************?*/
void?change(int?e)?{
int?f?=?e?+?2;
char?ch?=?str[f];
if?(ch?>=?‘A‘?&&?ch?<=?‘Z‘)?{
for?(int?l?=?0;?l? if?(str[l]?==?ch)
str[l]?=?JG;
}
}
if?(str[e]?>=?‘A‘?&&?str[e]?<=?‘Z‘)?{
for?(int?i?=?0;?i? if?(str[i]?==?str[e])
str[i]?=?JG;
}
}
}
void?chengchuchuli(int?i?int?m)?{
i++;
for?(;?i?<=?m?-?1;?i++)//?處理乘除運算
{
if?(str[i]?==?‘*‘?||?str[i]?==?‘/‘)?{
System.out.println(“(“+(char)(JG+32)+“)“+“(“?+?str[i]?+?“??“?+?str[i?-?1]?+?“??“
+?str[i?+?1]?+?“??“?+?JG?+?“)“);
sb.append(“(“+(char)(JG+32)+“)“+“(“?+?str[i]?+?“??“?+?str[i?-?1]?+?“??“
+?str[i?+?1]?+?“??“?+?JG?+?“)“+“\n“);
change(i?-?1);
str[i?-?1]?=?str[i]?=?str[i?+?1]?=?JG;
sum--;
JG++;
}
}
}
void?jiajianchuli(int?j?int?m)?{
j++;
for?(;?j?<=?m?-?1;?j++)//?處理加減運算
{
if?(str[j]?==?‘+‘?||?str[j]?==?‘-‘)?{
System.out.println(“(“+(char)(JG+32)+“)“+“(“?+?str[j]?+?“??“?+?str[j?-?1]?+?“??“
+?str[j?+?1]?+?“??“?+?JG?+?“)“);
sb.append(“(“+(char)(JG+32)+“)“+“(“?+?str[j]?+?“??“?+?str[j?-?1]?+?“??“
+?str[j?+?1]?+?“??“?+?JG?+?“)“+“\n“);
change(j?-?1);
str[j?-?1]?=?str[j]?=?str[j?+?1]?=?JG;
sum--;
JG++;
}
}
}
/*?掃描一遍從文件中讀入表達式?*/
void?scan()?{
int[]?p?=?new?int[MAX];
char?ch?=?‘a‘;
int?c?=?-1?q?=?0;
for?(int?i?=?0;?i?
ch?=?toBeSolute[i];
str[m++]?=?ch;
if?(ch?==?‘=‘?||?ch?==?‘+‘?||?ch?==?‘-‘?||?ch?==?‘*‘?||?ch?==?‘/‘)
sum++;
else?if?(ch?==?‘(‘)?{
p[++c]?=?m?-?1;
}?else?if?(ch?==?‘)‘)?{
q?=?m?-?1;
chengchuchuli(p[c]?q);//?從左括號處理到又括號
jiajianchuli(p[c]?q);
JG--;
str[p[c]]?=?str[m?-?1]?=?JG;
c--;
JG++;
}
}
}
/*?對表達是進行處理并輸出部分四元式?*/
void?siyuanshi()?{
for?(int?i?=?0;?i?<=?m?-?1;?i++)//?處理乘除運算
{
if?(str[i]?==?‘*‘?||?str[i]?==?‘/‘)?{
System.out.println(“(“+(char)(JG+32)+“)“+“(“?+?str[i]?+?“??“?+?str[i?-?1]?+?“??“
+?str[i?+?1]?+?“??“?+?JG?+?“)“);
sb.append(“(“+(char)(JG+32)+“)“+“(“?+?str[i]?+?“??“?+?str[i?-?1]?+?“??“
+?str[i?+?1]?+?“??“?+?JG?+?“)“+“\n“);
change(i?-?1);
str[i?-?1]?=?str[i]?=?str[i?+?1]?=?JG;
sum--;
JG++;
}
}
for?(int?j?=?0;?j?<=?m?-?1;?j++)//?處理加減運算
{
if?(str[j]?==?‘+
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????390??2008-09-13?09:18??ZhongJianDaiMa\.project
?????文件????????226??2008-09-13?09:18??ZhongJianDaiMa\.classpath
?????文件???????4510??2008-09-21?15:20??ZhongJianDaiMa\Four.java
?????文件???????3686??2008-09-21?15:44??ZhongJianDaiMa\JMain.java
?????文件???????4297??2008-09-21?15:20??ZhongJianDaiMa\Three.java
?????文件???????2213??2008-09-21?15:20??ZhongJianDaiMa\ZJMain.java
?????文件???????4324??2008-09-28?08:53??ZhongJianDaiMa\Four.class
?????文件????????600??2008-09-28?08:53??ZhongJianDaiMa\JMain$5.class
?????文件????????578??2008-09-28?08:53??ZhongJianDaiMa\JMain$1.class
?????文件???????3355??2008-09-28?08:53??ZhongJianDaiMa\JMain.class
?????文件???????1021??2008-09-28?08:53??ZhongJianDaiMa\JMain$3.class
?????文件???????1063??2008-09-28?08:53??ZhongJianDaiMa\JMain$4.class
?????文件???????1353??2008-09-28?08:53??ZhongJianDaiMa\JMain$2.class
?????文件???????4191??2008-09-28?08:53??ZhongJianDaiMa\Three.class
?????文件???????2056??2008-09-28?08:53??ZhongJianDaiMa\ZJMain.class
?????目錄??????????0??2008-09-13?09:18??ZhongJianDaiMa
-----------?---------??----------?-----??----
????????????????33863????????????????????16
- 上一篇:飛機票管理系統Java
- 下一篇:傳智播客黑馬班Java企業實戰項目.txt
評論
共有 條評論