资源简介

1. 设计扫描程序,将任何一种整数运算表达式(无变量,操作数为正整数,允许加减乘除四种运算,允许使用括号和多层括号)识别为单词,并能发现单词的拼写错误 2. 设计自底向上分析程序,在栈上实现对单词token串的自底向上分析 3. 根据算符优先文法的分析步骤,展示分析栈、token串的状态变化、相关量的优先级比较(算符优先分析表)结果输出 、判断当前是否进行规约或移进操作、(若须规约)显示当前应规约的串 4. 展示语法树

资源截图

代码片段和文件信息

package compiler;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Calculate {
public int val;
public  List  table=null;//数据栈
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){ //计算长度
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){  //查字符对应的值
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){  //判断是否为数字
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(){  //输出数据栈
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(“除数不能为零!“);
}

}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           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\Mainframe.class
     文件         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\Mainframe.java
     文件         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

评论

共有 条评论