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

📄 compiler.java

📁 上海复旦大学计算机系学子写的JAVA版本编译原理词法、语法分析程序(LR0)
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
						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 48 " + stateStack.get(stateStack.size() - 1) + " " +   styleStack.get(styleStack.size() - 1)));
					}
					break;
				case 49:
					if(styleStr.get(index).equals("C")){
						state = 66;
						styleStack.add(styleStr.get(index));
						stateStack.add(""+state);
						index++;
					}else{
						jmp = false;
						error_text.appendText(("Error info: case 49 " + stateStack.get(stateStack.size() - 1) + " " +  styleStack.get(styleStack.size() - 1)));
					
					}
					break;
				case 50:
					if(styleStr.get(index).equals("C")){
						state = 67;
						styleStack.add(styleStr.get(index));
						stateStack.add(""+state);
						index++;
					}else if(styleStr.get(index).equals(new String('"'+""))){
							state = 68;
							styleStack.add(styleStr.get(index));
							stateStack.add(""+state);
							index++;
					}else{
						jmp = false;
						error_text.appendText(("Error info: case 50 " + stateStack.get(stateStack.size() - 1) + " " +  styleStack.get(styleStack.size() - 1)));
					}
					break;
				case 51:
					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.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 51 " + stateStack.get(stateStack.size() - 1) + " " +  styleStack.get(styleStack.size() - 1)));
					}
					break;
				case 52:
					if(styleStr.get(index).equals(";")){
						state = 69;
						styleStack.add(styleStr.get(index));
						stateStack.add(""+state);
						index++;
					}else if(styleStr.get(index).equals("+")){
							state = 117;
							styleStack.add(styleStr.get(index));
							stateStack.add(""+state);
							index++;
						}else if(styleStr.get(index).equals("-")){
							state = 118;
							styleStack.add(styleStr.get(index));
							stateStack.add(""+state);
							index++;
						}else{
						jmp = false;
						error_text.appendText(("Error info: case 52 " + stateStack.get(stateStack.size() - 1) + " " +  styleStack.get(styleStack.size() - 1)));
						}
					break;
				case 53:
					String st4 = (String)styleStr.get(index);
					
					if(styleStr.get(index).equals("*")){
						state = 137;
						styleStack.add(styleStr.get(index));
						stateStack.add(""+state);
						index++;
					}else if(styleStr.get(index).equals("/")){
							state = 138;
							styleStack.add(styleStr.get(index));
							stateStack.add(""+state);
							index++;
					}else if(st4.equals(";")||st4.equals("to")||st4.equals(")")||st4.equals("+")||st4.equals("-")||st4.equals(">")||st4.equals(">=")||
							st4.equals("<")||st4.equals("<=")||st4.equals("==")||st4.equals("!=")||st4.equals("&&")||st4.equals("||")||programStr.get(index).equals("to")){
						/****************************/
						/********T --> V 的规约********/
						/********或者 E-->V************/
						/****************************/
						styleStack.remove(styleStack.size() - 1);
						stateStack.remove(stateStack.size() - 1);
						/**************************************/
						
						String t1 = (String)styleStr.get(index - 2);
						String t2 = (String)styleStr.get(index);

						if(t1.equals("=") && !t2.equals("*") && !t2.equals("/")){
							styleStack.add("E");
							stateStack.add(""+gotoState(Integer.parseInt((String)stateStack.get(stateStack.size() - 1)) ,"E"));
					
						}else {
							styleStack.add("T");
							stateStack.add(""+gotoState(Integer.parseInt((String)stateStack.get(stateStack.size() - 1)) ,"T"));
						}
						state = Integer.parseInt(((String)stateStack.get(stateStack.size() - 1)));
					}else{
						jmp = false;
						error_text.appendText(("Error info: case 53 " + stateStack.get(stateStack.size() - 1) + " " +  styleStack.get(styleStack.size() - 1)));
					}
						
					break;
				case 54:
					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 54 " + stateStack.get(stateStack.size() - 1) + " " +  styleStack.get(styleStack.size() - 1)));
					}
					break;
				case 55:
					
						String st5 = (String)styleStr.get(index);
						if(st5.equals(";")||st5.equals("}")||st5.equals("+")||st5.equals("-")||st5.equals("*")||st5.equals("/")||st5.equals(">")||
								st5.equals(">=")||st5.equals("<")||st5.equals("<=")||st5.equals("==")||st5.equals("!=")||st5.equals("&&")||st5.equals("||")||
								st5.equals(")")||programStr.get(index).equals("to")){
							/*********V --> K 规约*********/
							/****************************/
							styleStack.remove(styleStack.size() - 1);
							stateStack.remove(stateStack.size() - 1);
							
							styleStack.add("V");
							stateStack.add(""+gotoState(Integer.parseInt((String)stateStack.get(stateStack.size() - 1)) ,"V"));
							state = Integer.parseInt(((String)stateStack.get(stateStack.size() - 1)));
							
						}else{
							jmp = false;
							error_text.appendText(("Error info: case 56 " + stateStack.get(stateStack.size() - 1) + " " +  styleStack.get(styleStack.size() - 1)));
						}
					break;
				case 56:
					String st6 = (String)styleStr.get(index);
					if(st6.equals(";")||st6.equals("}")||st6.equals("+")||st6.equals("-")||st6.equals("*")||st6.equals("/")||st6.equals(">")||
							st6.equals(">=")||st6.equals("<")||st6.equals("<=")||st6.equals("==")||st6.equals("!=")||st6.equals("&&")||st6.equals("||")||
							st6.equals(")")||programStr.get(index).equals("to")){
						
						/*********V --> K 规约*********/
						styleStack.remove(styleStack.size() - 1);
						stateStack.remove(stateStack.size() - 1);
						
						styleStack.add("V");
						stateStack.add(""+gotoState(Integer.parseInt((String)stateStack.get(stateStack.size() - 1)) ,"V"));
						state = Integer.parseInt(((String)stateStack.get(stateStack.size() - 1)));
						
					}else{
						jmp = false;
						error_text.appendText(("Error info: case 56 " + stateStack.get(stateStack.size() - 1) + " " +  styleStack.get(styleStack.size() - 1)));
					}
					break;
				case 57:
					/***************************************/
					
					if(styleStr.get(index).equals(";")){
						state = 144;
						styleStack.add(styleStr.get(index));
						stateStack.add(""+state);
						index++;
					}else if(styleStr.get(index).equals("+")){
						state = 117;
						styleStack.add(styleStr.get(index));
						stateStack.add(""+state);
						index++;
					}else if(styleStr.get(index).equals("-")){
						state = 118;
						styleStack.add(styleStr.get(index));
						stateStack.add(""+state);
						index++;
					}else{
						jmp = false;
						error_text.appendText(("Error info: case 57 " + stateStack.get(stateStack.size() - 1) + " " +  styleStack.get(styleStack.size() - 1)));
					}
					break;
				case 58:
					if(styleStr.get(index).equals("=")){
						state = 110;
						styleStack.add(styleStr.get(index));
						stateStack.add(""+state);
						index++;
					}else if(styleStr.get(index).equals("[")){
						state = 111;
						styleStack.add(styleStr.get(index));
						stateStack.add(""+state);
						index++;
					}else if(styleStr.get(index).equals(";")){
						state = 143;
						styleStack.add(styleStr.get(index));
						stateStack.add(""+state);
						index++;
					}else{
						jmp = false;
						error_text.appendText(("Error info: case 58 " + stateStack.get(stateStack.size() - 1) + " " +  styleStack.get(styleStack.size() - 1)));
					}
					break;
				case 59: 
					if(styleStr.get(index).equals("=")){
						state = 70;
						styleStack.add(styleStr.get(index));
						stateStack.add(""+state);
						index++;
					}else{
						jmp = false;
						error_text.appendText(("Error info: case 59 " + stateStack.get(stateStack.size() - 1) + " " +  styleStack.get(styleStack.size() - 1)));
					}
					break;
				case 60: 
					if(styleStr.get(index).equals(")")){
						state = 71;
						styleStack.add(styleStr.get(index));
						stateStack.add(""+state);
						index++;
					}else{
						jmp = false;
						error_text.appendText(("Error info: case 60 " + stateStack.get(stateStack.size() - 1) + " " +  styleStack.get(styleStack.size() - 1)));
					}
					break;
				case 61: 
					if(styleStr.get(index).equals(">")){
						state = 119;
						styleStack.add(styleStr.get(index));
						stateStack.add(""+state);
						index++;
					}else if(styleStr.get(index).equals(">=")){
						state = 120;
						styleStack.add(styleStr.get(index));
						stateStack.add(""+state);
						index++;
					}else if(styleStr.get(index).equals("<")){
						state = 121;
						styleStack.add(styleStr.get(index));
						stateStack.add(""+state);
						index++;
					}else if(styleStr.get(index).equals("<=")){
						state = 122;
						styleStack.add(styleStr.get(index));
						stateStack.add(""+state);
						index++;
					}else if(styleStr.get(index).equals("==")){
						state = 123;
						styleStack.add(styleStr.get(index));
						stateStack.add(""+state);
						index++;
					}else if(styleStr.get(index).equals("!=")){
						state = 124;
						styleStack.add(styleStr.get(index));
						stateStack.add(""+state);
						index++;
					}else if(styleStr.get(index).equals("&&")){
						state = 125;
						styleStack.add(styleStr.get(index));
						stateStack.add(""+state);
						index++;
					}else if(styleStr.get(index).equals("||")){
						state = 126;
						styleStack.add(styleStr.get(index));
						stateStack.add(""+state);
						index++;
					}else if(styleStr.get(index).equals("+")){
						state = 117;
						styleStack.add(styleStr.get(index));
						stateStack.add(""+state);
						index++;
					}else if(styleStr.get(index).equals("-")){
						state = 118;
						styleStack.add(styleStr.get(index));
						stateStack.add(""+state);
						index++;
					}else{
						jmp = false;
						error_text.appendText(("Error info: case 61" + stateStack.get(stateStack.size() - 1) + " " +  styleStack.get(styleStack.size() - 1)));
					}
					break;
				
				case 63: 
					if(styleStr.get(index).equals("=")){
						state = 72;
						styleStack.add(styleStr.get(index));
						stateStack.add(""+state);
						index++;
					}else{
						jmp = false;
						error_text.appendText(("Error info: case 63" + stateStack.get(stateStack.size() - 1) + " " +  styleStack.get(styleStack.size() - 1)));
					}
					break;
			
				case 64:
					if(styleStr.get(index).equals("}")){
						state = 73;
						styleStack.add(styleStr.get(index));
						stateStack.add(""+state);
						index++;
					}else{
						jmp = false;
						error_text.appendText(("Error info: case 64" + stateStack.get(stateStack.size() - 1) + " " +  styleStack.get(styleStack.size() - 1)));
					}
					break;
			
				case 65:
					if(styleStr.get(index).equals(")")){
						state = 74;
						styleStack.add(styleStr.get(index));
						stateStack.add(""+state);
						index++;
					}else{
						jmp = false;
						error_text.appendText(("Error info: case 65" + stateStack.get(stateStack.size() - 1) + " " +  styleStack.get(styleStack.size() - 1)));
					}
					break;
				case 66:
					if(styleStr.get(index).equals(")")){
						state = 75;
						styleStack.add(styleStr.get(index));
						stateStack.add(""+state);
						index++;
					}else{
						jmp = false;
						error_text.appendText(("Error info: case 66" + stateStack.get(stateStack.size() - 1) + " " +  styleStack.get(styleStack.size() - 1)));
					}
					break;
	

⌨️ 快捷键说明

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