📄 compiler.java
字号:
case 13:
if(styleStr.get(index).equals("{")){
state = 15;
styleStack.add(styleStr.get(index));
stateStack.add(""+state);
index++;
}else{
jmp = false;
error_text.appendText(("Error info: case 13 " + stateStack.get(stateStack.size() - 1) + " " + styleStack.get(styleStack.size() - 1)));
}
break;
case 14:
if(styleStr.get(index).equals(";")){
state = 16;
styleStack.add(styleStr.get(index));
stateStack.add(""+state);
index++;
}else{
jmp = false;
error_text.appendText(("Error info: case 14 " + stateStack.get(stateStack.size() - 1) + " " + styleStack.get(styleStack.size() - 1)));
}
break;
case 15:
if(styleStr.get(index).equals("}")||styleStr.get(index).equals("return")){//规约
/****************************/
/**********M --> 空的规约 *****/
/****************************/
styleStack.add("M");
stateStack.add(""+gotoState(Integer.parseInt((String)stateStack.get(stateStack.size() - 1)) ,"M"));
state = Integer.parseInt(((String)stateStack.get(stateStack.size() - 1)));
}else if(styleStr.get(index).equals("C")){
state = 22;
styleStack.add(styleStr.get(index));
stateStack.add(""+state);
index++;
}else if(styleStr.get(index).equals("type")){
state = 23;
styleStack.add(styleStr.get(index));
stateStack.add(""+state);
index++;
}else if(styleStr.get(index).equals("const")){
state = 24;
styleStack.add(styleStr.get(index));
stateStack.add(""+state);
index++;
}else if(styleStr.get(index).equals("if")){
state = 30;
styleStack.add(styleStr.get(index));
stateStack.add(""+state);
index++;
}else if(styleStr.get(index).equals("for")){
state = 31;
styleStack.add(styleStr.get(index));
stateStack.add(""+state);
index++;
}else if(styleStr.get(index).equals("repeat")){
state = 32;
styleStack.add(styleStr.get(index));
stateStack.add(""+state);
index++;
}else if(styleStr.get(index).equals("while")){
state = 33;
styleStack.add(styleStr.get(index));
stateStack.add(""+state);
index++;
}else if(styleStr.get(index).equals("read")){
state = 34;
styleStack.add(styleStr.get(index));
stateStack.add(""+state);
index++;
}else if(styleStr.get(index).equals("write")){
state = 35;
styleStack.add(styleStr.get(index));
stateStack.add(""+state);
index++;
}else{
jmp = false;
error_text.appendText(("Error info: case 15 " + stateStack.get(stateStack.size() - 1) + " " + styleStack.get(styleStack.size() - 1)));
}
break;
case 16:
if(styleStr.get(index).equals("type")){
state = 12;
styleStack.add(styleStr.get(index));
stateStack.add(""+state);
index++;
}else if(styleStr.get(index).equals(")")){
/****************************/
/**********Z --> 空的规约 *****/
/****************************/
styleStack.add("Z");
stateStack.add(""+gotoState(Integer.parseInt((String)stateStack.get(stateStack.size() - 1)) ,"Z"));
state = Integer.parseInt(((String)stateStack.get(stateStack.size() - 1)));
}else{
jmp = false;
error_text.appendText(("Error info: case 16 " + stateStack.get(stateStack.size() - 1) + " " + styleStack.get(styleStack.size() - 1)));
}
break;
case 17:
if(styleStr.get(index).equals("}")){
state = 37;
styleStack.add(styleStr.get(index));
stateStack.add(""+state);
index++;
}else{
jmp = false;
error_text.appendText(("Error info: case 17 " + stateStack.get(stateStack.size() - 1) + " " + styleStack.get(styleStack.size() - 1)));
}
break;
case 18:
if(styleStr.get(index).equals("return")){
state = 38;
styleStack.add(styleStr.get(index));
stateStack.add(""+state);
index++;
}else if(styleStr.get(index).equals("}")){
styleStack.remove(styleStack.size() - 1);
stateStack.remove(stateStack.size() - 1);
styleStack.add("U");
stateStack.add(""+gotoState(Integer.parseInt((String)stateStack.get(stateStack.size() - 1)) ,"U"));
state = Integer.parseInt(((String)stateStack.get(stateStack.size() - 1)));
}else{
jmp = false;
error_text.appendText(("Error info: case 18 " + stateStack.get(stateStack.size() - 1) + " " + styleStack.get(styleStack.size() - 1)));
}
break;
case 19:
if(styleStr.get(index).equals("}") || styleStr.get(index).equals("return")){
/****************************/
/**********M --> 空的规约 *****/
/****************************/
styleStack.add("M");
stateStack.add(""+gotoState(Integer.parseInt((String)stateStack.get(stateStack.size() - 1)) ,"M"));
state = Integer.parseInt(((String)stateStack.get(stateStack.size() - 1)));
}else if(styleStr.get(index).equals("C")){
state = 22;
styleStack.add(styleStr.get(index));
stateStack.add(""+state);
index++;
}else if(styleStr.get(index).equals("type")){
state = 23;
styleStack.add(styleStr.get(index));
stateStack.add(""+state);
index++;
}else if(styleStr.get(index).equals("const")){
state = 24;
styleStack.add(styleStr.get(index));
stateStack.add(""+state);
index++;
}else if(styleStr.get(index).equals("if")){
state = 30;
styleStack.add(styleStr.get(index));
stateStack.add(""+state);
index++;
}else if(styleStr.get(index).equals("for")){
state = 31;
styleStack.add(styleStr.get(index));
stateStack.add(""+state);
index++;
}else if(styleStr.get(index).equals("repeat")){
state = 32;
styleStack.add(styleStr.get(index));
stateStack.add(""+state);
index++;
}else if(styleStr.get(index).equals("while")){
state = 33;
styleStack.add(styleStr.get(index));
stateStack.add(""+state);
index++;
}else if(styleStr.get(index).equals("read")){
state = 34;
styleStack.add(styleStr.get(index));
stateStack.add(""+state);
index++;
}else if(styleStr.get(index).equals("write")){
state = 35;
styleStack.add(styleStr.get(index));
stateStack.add(""+state);
index++;
}else{
jmp = false;
error_text.appendText(("Error info: case 19 " + stateStack.get(stateStack.size() - 1) + " " + styleStack.get(styleStack.size() - 1)));
}
break;
case 20:
if(styleStr.get(index).equals("}") || styleStr.get(index).equals("return")){
/****************************/
/**********M --> 空的规约 *****/
/****************************/
styleStack.add("M");
stateStack.add(""+gotoState(Integer.parseInt((String)stateStack.get(stateStack.size() - 1)) ,"M"));
state = Integer.parseInt(((String)stateStack.get(stateStack.size() - 1)));
}else if(styleStr.get(index).equals("C")){
state = 22;
styleStack.add(styleStr.get(index));
stateStack.add(""+state);
index++;
}else if(styleStr.get(index).equals("type")){
state = 23;
styleStack.add(styleStr.get(index));
stateStack.add(""+state);
index++;
}else if(styleStr.get(index).equals("const")){
state = 24;
styleStack.add(styleStr.get(index));
stateStack.add(""+state);
index++;
}else if(styleStr.get(index).equals("if")){
state = 30;
styleStack.add(styleStr.get(index));
stateStack.add(""+state);
index++;
}else if(styleStr.get(index).equals("for")){
state = 31;
styleStack.add(styleStr.get(index));
stateStack.add(""+state);
index++;
}else if(styleStr.get(index).equals("repeat")){
state = 32;
styleStack.add(styleStr.get(index));
stateStack.add(""+state);
index++;
}else if(styleStr.get(index).equals("while")){
state = 33;
styleStack.add(styleStr.get(index));
stateStack.add(""+state);
index++;
}else if(styleStr.get(index).equals("read")){
state = 34;
styleStack.add(styleStr.get(index));
stateStack.add(""+state);
index++;
}else if(styleStr.get(index).equals("write")){
state = 35;
styleStack.add(styleStr.get(index));
stateStack.add(""+state);
index++;
}else{
jmp = false;
error_text.appendText(("Error info: case 20 " + stateStack.get(stateStack.size() - 1) + " " + styleStack.get(styleStack.size() - 1)));
}
break;
case 21:
if(styleStr.get(index).equals("}")||styleStr.get(index).equals("return")){
/****************************/
/**********M --> 空的规约 *****/
/****************************/
styleStack.add("M");
stateStack.add(""+gotoState(Integer.parseInt((String)stateStack.get(stateStack.size() - 1)) ,"M"));
state = Integer.parseInt(((String)stateStack.get(stateStack.size() - 1)));
}else if(styleStr.get(index).equals("C")){
state = 22;
styleStack.add(styleStr.get(index));
stateStack.add(""+state);
index++;
}else if(styleStr.get(index).equals("type")){
state = 23;
styleStack.add(styleStr.get(index));
stateStack.add(""+state);
index++;
}else if(styleStr.get(index).equals("const")){
state = 24;
styleStack.add(styleStr.get(index));
stateStack.add(""+state);
index++;
}else if(styleStr.get(index).equals("if")){
state = 30;
styleStack.add(styleStr.get(index));
stateStack.add(""+state);
index++;
}else if(styleStr.get(index).equals("for")){
state = 31;
styleStack.add(styleStr.get(index));
stateStack.add(""+state);
index++;
}else if(styleStr.get(index).equals("repeat")){
state = 32;
styleStack.add(styleStr.get(index));
stateStack.add(""+state);
index++;
}else if(styleStr.get(index).equals("while")){
state = 33;
styleStack.add(styleStr.get(index));
stateStack.add(""+state);
index++;
}else if(styleStr.get(index).equals("read")){
state = 34;
styleStack.add(styleStr.get(index));
stateStack.add(""+state);
index++;
}else if(styleStr.get(index).equals("write")){
state = 35;
styleStack.add(styleStr.get(index));
stateStack.add(""+state);
index++;
}else{
jmp = false;
error_text.appendText(("Error info: case 21 " + stateStack.get(stateStack.size() - 1) + " " + styleStack.get(styleStack.size() - 1)));
}
break;
case 22:
if(styleStr.get(index).equals("=")){
state = 42;
styleStack.add(styleStr.get(index));
stateStack.add(""+state);
index++;
}else{
jmp = false;
error_text.appendText(("Error info: case 22 " + stateStack.get(stateStack.size() - 1) + " " + styleStack.get(styleStack.size() - 1)) + " " + (String)programStr.get(index - 1) + " " + (String)styleStr.get(index) + " " + (String)programStr.get(index + 1) );//容易确定位置
}
break;
case 23:
if(styleStr.get(index).equals("C")){
state = 58;
styleStack.add(styleStr.get(index));
stateStack.add(""+state);
index++;
}else{
jmp = false;
error_text.appendText(("Error info: case 23 " + stateStack.get(stateStack.size() - 1) + " " + styleStack.get(styleStack.size() - 1)));
}
break;
case 24:
if(styleStr.get(index).equals("C")){
state = 44;
styleStack.add(styleStr.get(index));
stateStack.add(""+state);
index++;
}else{
jmp = false;
error_text.appendText(("Error info: case 24 " + stateStack.get(stateStack.size() - 1) + " " + styleStack.get(styleStack.size() - 1)));
}
break;
case 25:
String s = (String)styleStr.get(index);
/**********B -->L 的规约 *****/
if(s.equals("C")||s.equals("type")||s.equals("const")||s.equals("if")||s.equals("for")||s.equals("repeat")||
s.equals("while")||s.equals("read")||s.equals("write")||s.equals("}")||s.equals("return")){
styleStack.remove(styleStack.size() - 1);
stateStack.remove(stateStack.size() - 1);
styleStack.add("B");
stateStack.add(""+gotoState(Integer.parseInt((String)stateStack.get(stateStack.size() - 1)) ,"B"));
state = Integer.parseInt(((String)stateStack.get(stateStack.size() - 1)));
}else{
jmp = false;
error_text.appendText(("Error info: case 25 " + stateStack.get(stateStack.size() - 1) + " " + styleStack.get(styleStack.size() - 1)));
}
break;
case 26:
String st = (String)styleStr.get(index);
/**********B -->I 的规约 *****/
if(st.equals("C")||st.equals("type")||st.equals("const")||st.equals("if")||st.equals("for")||st.equals("repeat")||
st.equals("while")||st.equals("read")||st.equals("write")||st.equals("}")||st.equals("return")){
styleStack.remove(styleStack.size() - 1);
stateStack.remove(stateStack.size() - 1);
styleStack.add("B");
stateStack.add(""+gotoState(Integer.parseInt((String)stateStack.get(stateStack.size() - 1)) ,"B"));
state = Integer.parseInt(((String)stateStack.get(stateStack.size() - 1)));
}else{
jmp = false;
error_text.appendText(("Error info: case 26 " + stateStack.get(stateStack.size() - 1) + " " + styleStack.get(styleStack.size() - 1)));
}
break;
case 27:
String st1 = (String)styleStr.get(index);
/**********L -->F 的规约 *****/
if(st1.equals("C")||st1.equals("type")||st1.equals("const")||st1.equals("if")||st1.equals("for")||st1.equals("repeat")||
st1.equals("while")||st1.equals("read")||st1.equals("write")||st1.equals("}")||st1.equals("return")){
styleStack.remove(styleStack.size() - 1);
stateStack.remove(stateStack.size() - 1);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -