資源簡(jiǎn)介
1. 設(shè)計(jì)掃描程序,將任何一種整數(shù)運(yùn)算表達(dá)式(無變量,操作數(shù)為正整數(shù),允許加減乘除四種運(yùn)算,允許使用括號(hào)和多層括號(hào))識(shí)別為單詞,并能發(fā)現(xiàn)單詞的拼寫錯(cuò)誤
2. 設(shè)計(jì)自底向上分析程序,在棧上實(shí)現(xiàn)對(duì)單詞token串的自底向上分析
3. 根據(jù)算符優(yōu)先文法的分析步驟,展示分析棧、token串的狀態(tài)變化、相關(guān)量的優(yōu)先級(jí)比較(算符優(yōu)先分析表)結(jié)果輸出 、判斷當(dāng)前是否進(jìn)行規(guī)約或移進(jìn)操作、(若須規(guī)約)顯示當(dāng)前應(yīng)規(guī)約的串
4. 展示語(yǔ)法樹

代碼片段和文件信息
package?compiler;
import?java.util.ArrayList;
import?java.util.List;
import?java.util.Scanner;
public?class?Calculate?{
public?int?val;
public??List??table=null;//數(shù)據(jù)棧
public?List?Re=null;
private?static?int?count=0;
public?double?[]?T;
public?Calculate(){
table=new?ArrayList();
Re=new?ArrayList();
}
public?void?calculate(String?aString?b){??
int?len=0;
Scanner?s1=new?Scanner(b);
Scanner?s2=new?Scanner(b);
while(s1.hasNext()==true){?//計(jì)算長(zhǎng)度
s1.next();
len++;
}
ArrayList??arr=new?ArrayList();
for(int?i=0;i if(s2.hasNext()==true)
arr.add(s2.next());
else
arr.add(“_“);
}
if(len==1){
TableElement?V=new?TableElement(countab);
this.table.add(V);
}else{
if(!arr.get(0).equals(“(“)){
if(Re.size()==0){
double?n2=table.get(table.size()-1).val;
table.remove(table.size()-1);
double?n1=table.get(table.size()-1).val;
table.remove(table.size()-1);
operation(an1arr.get(1)n2);
}
}
}
}
public?String?check(int?noString?b){??//查字符對(duì)應(yīng)的值
Double?r?=?null;
for(int?i=0;i if(table.get(i).no==no?&&?table.get(i).result.equals(b))
r=table.get(i).val;
System.out.println(b+“的值是:“+r);
return?Double.toString(r);
}
public?static?boolean?isNum(String?str){??//判斷是否為數(shù)字
return?str.matches(“^[-+]?(([0-9]+)([.]([0-9]+))?|([.]([0-9]+))?)$“);
}
public??void?operation(String?adouble?xString?opdouble?y){
if(op.equals(“+“))
x=x+y;
else?if(op.equals(“-“))
x=x-y;
else?if(op.equals(“*“))
x=x*y;
else?if(op.equals(“/“)){
if(y==0.0)
Re.add(“ERROR!“);
else
x=x/y;
}
else{
double?sum=Math.pow(x?y);
x=sum;
}
if(y!=0.0){
TableElement?V=new?TableElement(countaDouble.toString(x));
this.table.add(V);
count++;
}
}
public?void?show(){??//輸出數(shù)據(jù)棧
String?result=new?String(“Result:“);
if(Re.size()==0){
result+=Double.toString(table.get(table.size()-1).val);
Mainframe.noticeTextField.setText(result);
}
else
System.out.println(“除數(shù)不能為零!“);
}
}
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2012-07-04?17:33??Compiler\
?????文件?????????301??2012-07-04?17:31??Compiler\.classpath
?????文件?????????384??2012-07-05?00:26??Compiler\.project
?????目錄???????????0??2012-07-04?17:31??Compiler\.settings\
?????文件?????????635??2012-07-04?17:31??Compiler\.settings\org.eclipse.jdt.core.prefs
?????目錄???????????0??2012-07-05?00:26??Compiler\bin\
?????目錄???????????0??2012-07-05?00:26??Compiler\bin\compiler\
?????文件????????3857??2012-07-05?00:26??Compiler\bin\compiler\Calculate.class
?????文件?????????530??2012-07-05?00:26??Compiler\bin\compiler\GenerateTable$table_item.class
?????文件????????2424??2012-07-05?00:26??Compiler\bin\compiler\GenerateTable.class
?????文件????????9605??2012-07-05?00:26??Compiler\bin\compiler\Grammar.class
?????文件????????4630??2012-07-05?00:26??Compiler\bin\compiler\Mainfr
?????文件?????????509??2012-07-05?00:26??Compiler\bin\compiler\Node.class
?????文件????????3330??2012-07-05?00:26??Compiler\bin\compiler\Semantic.class
?????文件????????1553??2012-07-05?00:26??Compiler\bin\compiler\TableElement.class
?????文件????????4302??2012-07-05?00:26??Compiler\bin\compiler\Token.class
?????文件?????????771??2012-07-05?00:26??Compiler\bin\compiler\TokenItem.class
?????文件?????????746??2012-07-05?19:10??Compiler\res.txt
?????目錄???????????0??2012-07-04?17:31??Compiler\src\
?????目錄???????????0??2012-07-05?00:25??Compiler\src\compiler\
?????文件????????2319??2012-07-05?00:24??Compiler\src\compiler\Calculate.java
?????文件????????1729??2012-07-05?00:23??Compiler\src\compiler\GenerateTable.java
?????文件????????9461??2012-07-05?00:25??Compiler\src\compiler\Grammar.java
?????文件????????5280??2012-07-05?00:25??Compiler\src\compiler\Mainfr
?????文件?????????294??2012-07-05?00:23??Compiler\src\compiler\Node.java
?????文件????????2033??2012-07-05?00:25??Compiler\src\compiler\Semantic.java
?????文件?????????884??2012-07-05?00:24??Compiler\src\compiler\TableElement.java
?????文件????????4704??2012-07-05?00:24??Compiler\src\compiler\Token.java
?????文件?????????380??2012-07-05?00:24??Compiler\src\compiler\TokenItem.java
評(píng)論
共有 條評(píng)論