GoTo表。
代码:
GoTo.java
package per.eyuan.util;
public class GoTo {
/*
* SLR的goto表
* 接受传递过来的状态和非终结符,
* 返回Goto表中对应的转向。
*/
private String goTo[][]=new String[10][2];
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[0][0]="1";
goTo[0][1]="2";
}
public void getCol(){
//获取终结符对应的列值
if(vn=="S")
col=0;
else if(vn=="D")
col=1;
}
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];
}
}