⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 compiler.java

📁 上海复旦大学计算机系学子写的JAVA版本编译原理词法、语法分析程序(LR0)
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
						styleStack.add("L");
						stateStack.add(""+gotoState(Integer.parseInt((String)stateStack.get(stateStack.size() - 1)) ,"L"));
						state = Integer.parseInt(((String)stateStack.get(stateStack.size() - 1)));
					}else{
						jmp = false;
						error_text.appendText(("Error info: case 27 " + stateStack.get(stateStack.size() - 1) + " " +  styleStack.get(styleStack.size() - 1)));
					}
					break;
				case 28:
					String st2 = (String)styleStr.get(index);
					/**********L -->R 的规约 *****/
					if(st2.equals("C")||st2.equals("type")||st2.equals("const")||st2.equals("if")||st2.equals("for")||st2.equals("repeat")||
							st2.equals("while")||st2.equals("read")||st2.equals("write")||st2.equals("}")||st2.equals("return")){
						styleStack.remove(styleStack.size() - 1);
						stateStack.remove(stateStack.size() - 1);
						styleStack.add("L");
						stateStack.add(""+gotoState(Integer.parseInt((String)stateStack.get(stateStack.size() - 1)) ,"L"));
						state = Integer.parseInt(((String)stateStack.get(stateStack.size() - 1)));
					}else{
						jmp = false;
						error_text.appendText(("Error info: case 28 " + stateStack.get(stateStack.size() - 1) + " " +  styleStack.get(styleStack.size() - 1)));
					}
					break;
				case 29:
					String st3 = (String)styleStr.get(index);
					/**********L -->W 的规约 *****/
					if(st3.equals("C")||st3.equals("type")||st3.equals("const")||st3.equals("if")||st3.equals("for")||st3.equals("repeat")||
							st3.equals("while")||st3.equals("read")||st3.equals("write")||st3.equals("}")||st3.equals("return")){
						styleStack.remove(styleStack.size() - 1);
						stateStack.remove(stateStack.size() - 1);
						styleStack.add("L");
						stateStack.add(""+gotoState(Integer.parseInt((String)stateStack.get(stateStack.size() - 1)) ,"L"));
						state = Integer.parseInt(((String)stateStack.get(stateStack.size() - 1)));
					}else{
						jmp = false;
						error_text.appendText(("Error info: case 29 " + stateStack.get(stateStack.size() - 1) + " " +  styleStack.get(styleStack.size() - 1)));
					}
					break;
				case 30:
					if(styleStr.get(index).equals("(")){
						state = 45;
						styleStack.add(styleStr.get(index));
						stateStack.add(""+state);
						index++;
					}else{
						jmp = false;
						error_text.appendText(("Error info: case 30 " + stateStack.get(stateStack.size() - 1) + " " +  styleStack.get(styleStack.size() - 1)));
					}	
					break;
				case 31:
					if(styleStr.get(index).equals("(")){
						state = 46;
						styleStack.add(styleStr.get(index));
						stateStack.add(""+state);
						index++;
					}else{
						jmp = false;
						error_text.appendText(("Error info: case 31 " + stateStack.get(stateStack.size() - 1) + " " +  styleStack.get(styleStack.size() - 1)));
					}	
					break;
				case 32:
					if(styleStr.get(index).equals("{")){
						state = 47;
						styleStack.add(styleStr.get(index));
						stateStack.add(""+state);
						index++;
					}else{
						jmp = false;
						error_text.appendText(("Error info: case 32 " + stateStack.get(stateStack.size() - 1) + " " +  styleStack.get(styleStack.size() - 1)));
					}	
					break;
				case 33:
					if(styleStr.get(index).equals("(")){
						state = 48;
						styleStack.add(styleStr.get(index));
						stateStack.add(""+state);
						index++;
					}else{
						jmp = false;
						error_text.appendText(("Error info: case 33 " + stateStack.get(stateStack.size() - 1) + " " +  styleStack.get(styleStack.size() - 1)));
					}	
					break;
				case 34:
					if(styleStr.get(index).equals("(")){
						state = 49;
						styleStack.add(styleStr.get(index));
						stateStack.add(""+state);
						index++;
					}else{
						jmp = false;
						error_text.appendText(("Error info: case 34 " + stateStack.get(stateStack.size() - 1) + " " +  styleStack.get(styleStack.size() - 1)));
					}	
					break;
				case 35:
					if(styleStr.get(index).equals("(")){
						state = 50;
						styleStack.add(styleStr.get(index));
						stateStack.add(""+state);
						index++;
					}else{
						jmp = false;
						error_text.appendText(("Error info: case 35 " + stateStack.get(stateStack.size() - 1) + " " +  styleStack.get(styleStack.size() - 1)));
					}	
					break;
				case 36:
					/********** Z --> type X;Z ********/
					if(styleStr.get(index).equals(")")){//规约
						styleStack.remove(styleStack.size() - 1);
						stateStack.remove(stateStack.size() - 1);
						
						styleStack.remove(styleStack.size() - 1);
						stateStack.remove(stateStack.size() - 1);
						
						styleStack.remove(styleStack.size() - 1);
						stateStack.remove(stateStack.size() - 1);
						
						styleStack.remove(styleStack.size() - 1);
						stateStack.remove(stateStack.size() - 1);
						
						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 36 " + stateStack.get(stateStack.size() - 1) + " " +  styleStack.get(styleStack.size() - 1)));
					}	
					break;
				case 37:
					if(styleStr.get(index).equals("type")){
						state = 5;
						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.remove(styleStack.size() - 1);
						stateStack.remove(stateStack.size() - 1);
						
						styleStack.remove(styleStack.size() - 1);
						stateStack.remove(stateStack.size() - 1);
						
						styleStack.remove(styleStack.size() - 1);
						stateStack.remove(stateStack.size() - 1);
						
						styleStack.remove(styleStack.size() - 1);
						stateStack.remove(stateStack.size() - 1);
						
						styleStack.remove(styleStack.size() - 1);
						stateStack.remove(stateStack.size() - 1);
						
						styleStack.remove(styleStack.size() - 1);
						stateStack.remove(stateStack.size() - 1);
						
						styleStack.remove(styleStack.size() - 1);
						stateStack.remove(stateStack.size() - 1);
						
						styleStack.add("P");
						stateStack.add(""+gotoState(Integer.parseInt((String)stateStack.get(stateStack.size() - 1)) ,"P"));
						state = Integer.parseInt(((String)stateStack.get(stateStack.size() - 1)));
						
					}else{
						jmp = false;
						error_text.appendText(("Error info: case 37 " + stateStack.get(stateStack.size() - 1) + " " +  styleStack.get(styleStack.size() - 1)));
					}
					break;
				case 38:
					if(styleStr.get(index).equals("(")){
						state = 54;
						styleStack.add(styleStr.get(index));
						stateStack.add(""+state);
						index++;
					}else if(styleStr.get(index).equals("C")){
						state = 55;
						styleStack.add(styleStr.get(index));
						stateStack.add(""+state);
						index++;
					}else if(styleStr.get(index).equals("K")){
						state = 56;
						styleStack.add(styleStr.get(index));
						stateStack.add(""+state);
						index++;
					}else{
						jmp = false;
						error_text.appendText(("Error info: case 38 " + stateStack.get(stateStack.size() - 1) + " " +  styleStack.get(styleStack.size() - 1)));
					}
					break;
				case 39:
					/**************** M --> AM ****************/
					if(styleStr.get(index).equals("}")||styleStr.get(index).equals("return")){
						styleStack.remove(styleStack.size() - 1);
						stateStack.remove(stateStack.size() - 1);
						
						styleStack.remove(styleStack.size() - 1);
						stateStack.remove(stateStack.size() - 1);
						
						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{
						jmp = false;
						error_text.appendText(("Error info: case 39 " + stateStack.get(stateStack.size() - 1) + " " +  styleStack.get(styleStack.size() - 1)));
					}
					break;
				case 40:
					/**************** M --> BM ****************/
					if(styleStr.get(index).equals("}")||styleStr.get(index).equals("return")){
						styleStack.remove(styleStack.size() - 1);
						stateStack.remove(stateStack.size() - 1);
						
						styleStack.remove(styleStack.size() - 1);
						stateStack.remove(stateStack.size() - 1);
						
						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{
						jmp = false;
						error_text.appendText(("Error info: case 40 " + stateStack.get(stateStack.size() - 1) + " " +  styleStack.get(styleStack.size() - 1)));
					}
					break;
				case 41:
					/**************** M --> OM ****************/
					if(styleStr.get(index).equals("}")||styleStr.get(index).equals("return")){
						styleStack.remove(styleStack.size() - 1);
						stateStack.remove(stateStack.size() - 1);
						
						styleStack.remove(styleStack.size() - 1);
						stateStack.remove(stateStack.size() - 1);
						
						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{
						jmp = false;
						error_text.appendText(("Error info: case 41 " + stateStack.get(stateStack.size() - 1) + " " +  styleStack.get(styleStack.size() - 1)));
					}
					break;
				case 42:
					/***************************************/
					if(styleStr.get(index).equals("(")){
						state = 54;
						styleStack.add(styleStr.get(index));
						stateStack.add(""+state);
						index++;
					}else if(styleStr.get(index).equals("C")){
						state = 55;
						styleStack.add(styleStr.get(index));
						stateStack.add(""+state);
						index++;
					}else if(styleStr.get(index).equals("K")){
						state = 56;
						styleStack.add(styleStr.get(index));
						stateStack.add(""+state);
						index++;
					}else{
						jmp = false;
						error_text.appendText(("Error info: case 42 " + stateStack.get(stateStack.size() - 1) + " " +  styleStack.get(styleStack.size() - 1)));
					}
					break;
				case 44:
					if(styleStr.get(index).equals("C")){
						state = 59;
						styleStack.add(styleStr.get(index));
						stateStack.add(""+state);
						index++;
					}else{
						jmp = false;
						error_text.appendText(("Error info: case 44 " + stateStack.get(stateStack.size() - 1) + " " +  styleStack.get(styleStack.size() - 1)));
					
					}
					break;
				case 45:
					if(styleStr.get(index).equals("(")){
						state = 54;
						styleStack.add(styleStr.get(index));
						stateStack.add(""+state);
						index++;
					}else if(styleStr.get(index).equals("C")){
						state = 55;
						styleStack.add(styleStr.get(index));
						stateStack.add(""+state);
						index++;
					}else if(styleStr.get(index).equals("K")){
						state = 56;
						styleStack.add(styleStr.get(index));
						stateStack.add(""+state);
						index++;
					}else{
						jmp = false;
						error_text.appendText(("Error info: case 45 " + stateStack.get(stateStack.size() - 1) + " " +  styleStack.get(styleStack.size() - 1)));
					}
					break;
				case 46:
					if(styleStr.get(index).equals("C")){
						state = 63;
						styleStack.add(styleStr.get(index));
						stateStack.add(""+state);
						index++;
					}else{
						jmp = false;
						error_text.appendText(("Error info: case 46 " + stateStack.get(stateStack.size() - 1) + " " +  styleStack.get(styleStack.size() - 1)));
					
					}
					break;
				case 47:
					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 47 " + stateStack.get(stateStack.size() - 1) + " " +  styleStack.get(styleStack.size() - 1)));
					}
					
					break;
				case 48:
					if(styleStr.get(index).equals("(")){
						state = 54;
						styleStack.add(styleStr.get(index));
						stateStack.add(""+state);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -