编译原理——赋值语句与简单表达式(七)

原创 2012年03月31日 09:28:08

GoTo:

package per.eyuan.util;

public class GoTo {
	/*
	 * SLR的goto表
	 * 接受传递过来的状态和非终结符,
	 * 返回Goto表中对应的转向。
	 */
	private String goTo[][]=new String[15][3];
	String statu;//状态
	String vn;//非终结符
	int rol;//行,goto表中的行,代表状态,
	int col;//列,goto表中的列,代表非终结符,顺序为0"S",1"D"
	
	public GoTo() {
		super();
		init();
	}
	public void init(){
		for(int i=0;i<goTo.length;i++){
			for(int j=0;j<goTo[i].length;j++)
				goTo[i][j]=new String("err");
		}
		goTo[2][0]="3";
		goTo[2][1]="4";
		goTo[2][2]="5";
		goTo[6][0]="11";
		goTo[6][1]="4";
		goTo[6][2]="5";
		goTo[9][1]="12";
		goTo[9][2]="5";
		goTo[10][2]="13";
	}
	public void getCol(){
		//获取终结符对应的列值
		if(vn.equals("E"))
			col=0;
		else if(vn.equals("T"))
			col=1;
		else if(vn.equals("F"))
			col=2;
	}
	public void getRol(){
		//获取状态对应的行值
		rol=Integer.parseInt(statu);
	}
	public void setTable(String s,String v){
		//Syntax调用该函数,传递状态和终结符
		this.statu=s;
		this.vn=v;
		this.getCol();
		this.getRol();
	}
	public String getGoTo(){
		//Syntax调用该函数,获取转向
		return this.goTo[rol][col];
	}

}


 

相关文章推荐

编译原理——赋值语句与简单表达式(五)

语法。 Syntax.java: package per.eyuan.compile; import per.eyuan.util.Action; import per.eyuan.uti...

编译原理——赋值语句和简单表达式(十五)

二元式栈。 TwoItemStack.java: package per.eyuan.util; public class TwoItemStack { private TwoItem tis...

编译原理——变量声明语句(七)

Action动作表。 代码: Action.java package per.eyuan.util; public class Action { /* * SLR的action表...

编译原理——变量声明语句(六)

GoTo表。 代码: GoTo.java package per.eyuan.util; public class GoTo { /* * SLR的goto表 * 接受传递...

编译原理——变量声明语句(四)

语法分析。 代码: Syntax.java package per.eyuan.compile; import per.eyuan.util.Action; import per.eyu...

编译原理——变量声明语句(一)

代码: Compile.java: package per.eyuan.compile; import per.eyuan.util.Id; import per.eyuan.util.I...

编译原理——变量声明语句(三)

词法分析: 代码: Lexical.java: package per.eyuan.compile; import per.eyuan.util.*; public class Le...

编译原理——变量声明语句(十)

常数表。 代码: Constant.java package per.eyuan.util; //常数表 public class Constant { String key="num"...

编译原理之表达式语法分析(一)——自顶向下

表达式语法分析

2016年秋季《编译原理》课程实验(2014级)表达式语法分析——递归子程序法

#include #include #include #include #include using namespace std; int num; stack A; stack B; int f(c...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:编译原理——赋值语句与简单表达式(七)
举报原因:
原因补充:

(最多只允许输入30个字)