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

📄 accidence2.java

📁 一个自己编写的词法分析程序,经过修改后的版本,请大家指教
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
					                         startword=countletter;

					   						word = new String(buf,startword,2);
					   						character[j++]=word;
					   						System.out.println(character[j-1]);
					   				       startword = startword+2;
					   				        fianlLetter=0;
					   						}else if(buf[countletter]=='('||buf[countletter]==')'||buf[countletter]==','||buf[countletter]==';'||buf[countletter]==':'||(buf[countletter]=='>'&&buf[countletter+1]!='=')||(buf[countletter]=='<'&&buf[countletter+1]!='=')){

					   							  if(fianlLetter!=0){
					   							    word = new String(buf,startword,fianlLetter);
					   							    character[j++]=word;
					   								System.out.println(character[j-1]);
					   								//startword = startword+1;
					   							}
					                                startword=countletter;

					   							     word = new String(buf,startword,1);
					   								 character[j++]=word;
					   								 System.out.println(character[j-1]);
					   				                 startword = startword+1;
					   				                 fianlLetter=0;
					   							 }else if((buf[countletter]>='a'&&buf[countletter]<='z')||buf[countletter]>='0'&&buf[countletter]<='9'){
					                                     fianlLetter++;
					   							 }
						        }
				 			  if(startword==(space[i-1]+3)){
				 				word = new String(buf,space[i-1]+3,space[i]-space[i-1]-3);
				 				character[j++]=word;
				 				System.out.println(character[j-1]);
							   }
				 			 }else{
								// continue;
							 }
				  }
			  }else if(buf[space[i-1]+1]=='\r'&&buf[space[i-1]+2]=='\n'&&buf[space[i]-1]=='\n'&&buf[space[i]-2]=='\r'){   //空格回车字符回车空格__包含空格字符空格   3
				 for(int startword =space[i-1]+3,endword=0,k=space[i-1]+3;k<=(space[i]-2);k++){
				 					  if(buf[k]=='\r'&&buf[k+1]=='\n'){                                                                                         // 3.1字符中有回车的情况,没有考滤字符中最后一个回车与最后一个空格的情况
				 						  endword = k;


                                         //以下一个for是一个对字符串进行分解代码
										 for(int fianlLetter=0, countletter=startword;countletter<endword;countletter++){
										  if(buf[countletter]=='+'||buf[countletter]=='-'||buf[countletter]=='*'||buf[countletter]=='/'||(buf[countletter]=='='&&buf[countletter-1]!=':')){

										        if(fianlLetter!=0){
										  			word = new String(buf,startword,fianlLetter);
										  			character[j++]=word;
										  			System.out.println(character[j-1]);
										  			//startword = startword+1;
										  			}
										             startword=countletter;
										             word = new String(buf,startword,1);
										  			 character[j++]=word;
										  			 System.out.println(character[j-1]);
										  			 startword = startword+1;
										  			 fianlLetter=0;

										  			 }else if((buf[countletter]==':'&&buf[countletter+1]=='=')||(buf[countletter]=='>'&&buf[countletter+1]=='=')||(buf[countletter]=='<'&&buf[countletter+1]=='=')){

										  			if(fianlLetter!=0){
										  			   word = new String(buf,startword,fianlLetter);
										  			   character[j++]=word;
										  		       System.out.println(character[j-1]);
										  			   //startword = startword+1;
										  			}
										             startword=countletter;

										  		     word = new String(buf,startword,2);
										  			 character[j++]=word;
										  			 System.out.println(character[j-1]);
										  			 startword = startword+2;
										  			 fianlLetter=0;
										  			}else if(buf[countletter]=='('||buf[countletter]==')'||buf[countletter]==','||buf[countletter]==';'||buf[countletter]==':'||(buf[countletter]=='>'&&buf[countletter+1]!='=')||(buf[countletter]=='<'&&buf[countletter+1]!='=')){

										  			if(fianlLetter!=0){
										  			    word = new String(buf,startword,fianlLetter);
										  				character[j++]=word;
										  				System.out.println(character[j-1]);
										  				//startword = startword+1;
										  				 }
										            startword=countletter;

										  			word = new String(buf,startword,1);
										  			character[j++]=word;
										  			System.out.println(character[j-1]);
										  			startword = startword+1;
										  			fianlLetter=0;
										  			 }else if((buf[countletter]>='a'&&buf[countletter]<='z')||buf[countletter]>='0'&&buf[countletter]<='9'){
										                   fianlLetter++;
										  				}
						               }
				 						  if((startword==space[i-1]+3)){
				 					      word = new String(buf,startword,endword-startword);
				 				          character[j++]=word;
				 				          System.out.println(character[j-1]);
				 				          startword = k+2;
									    }else{
											startword+=2;
									     }
				 				   }else if(k==(space[i]-2)&&startword>(space[i-1]+3)){                                                                           //3.2考滤符最后一个回车到最后一个空格的情况(空格,回车,字符,回车,字符,回车,空格即第二个回车到最后空格的情况)
		                               int orginal=startword;
				  					   endword = k;


				  					   //以下一个for是一个对字符串进行分解代码
									   for(int fianlLetter=0, countletter=startword;countletter<endword;countletter++){
									   		 if(buf[countletter]=='+'||buf[countletter]=='-'||buf[countletter]=='*'||buf[countletter]=='/'||(buf[countletter]=='='&&buf[countletter-1]!=':')){

									          if(fianlLetter!=0){
									   			word = new String(buf,startword,fianlLetter);
									   			character[j++]=word;
									   			System.out.println(character[j-1]);
									   			//startword = startword+1;
									   			}
									            startword=countletter;
									            word = new String(buf,startword,1);
									   								 character[j++]=word;
									   								 System.out.println(character[j-1]);
									   				                 startword = startword+1;
									   				                 fianlLetter=0;

									   							 }else if((buf[countletter]==':'&&buf[countletter+1]=='=')||(buf[countletter]=='>'&&buf[countletter+1]=='=')||(buf[countletter]=='<'&&buf[countletter+1]=='=')){

									   								 if(fianlLetter!=0){
									   								 		word = new String(buf,startword,fianlLetter);
									   								 		character[j++]=word;
									   								 		System.out.println(character[j-1]);
									   								 		//startword = startword+1;
									   								 }
									                                    startword=countletter;

									   								 word = new String(buf,startword,2);
									   								 character[j++]=word;
									   								 System.out.println(character[j-1]);
									   				                 startword = startword+2;
									   				                 fianlLetter=0;
									   							 }else if(buf[countletter]=='('||buf[countletter]==')'||buf[countletter]==','||buf[countletter]==';'||buf[countletter]==':'||(buf[countletter]=='>'&&buf[countletter+1]!='=')||(buf[countletter]=='<'&&buf[countletter+1]!='=')){

									   							     if(fianlLetter!=0){
									   								 	word = new String(buf,startword,fianlLetter);
									   								 	character[j++]=word;
									   								 	System.out.println(character[j-1]);
									   								 	//startword = startword+1;
									   								 }
									                                    startword=countletter;

									   							     word = new String(buf,startword,1);
									   								 character[j++]=word;
									   								 System.out.println(character[j-1]);
									   				                 startword = startword+1;
									   				                 fianlLetter=0;
									   							 }else if((buf[countletter]>='a'&&buf[countletter]<='z')||buf[countletter]>='0'&&buf[countletter]<='9'){
									                                     fianlLetter++;
						                                          }
						                                   }

                                if(startword==orginal){
				 					   word = new String(buf,startword,endword-startword);
				 					   character[j++]=word;
				 					   System.out.println(character[j-1]);
								   }
				 				    //   startword = k+2;
				 				   }else if(k==(space[i]-2)&&startword==(space[i-1]+3)){                                                                           //3.3字符中没有回车的情况
				 					    endword=k;
                            //以下一个for是一个对字符串进行分解代码
					         for(int fianlLetter=0, countletter=startword;countletter<endword;countletter++){
					   			if(buf[countletter]=='+'||buf[countletter]=='-'||buf[countletter]=='*'||buf[countletter]=='/'||(buf[countletter]=='='&&buf[countletter-1]!=':')){

					                if(fianlLetter!=0){
					   					word = new String(buf,startword,fianlLetter);
					   				    character[j++]=word;
					   					System.out.println(character[j-1]);
					   					//startword = startword+1;
					   				}
					                startword=countletter;
					                word = new String(buf,startword,1);
					   				character[j++]=word;
					   				System.out.println(character[j-1]);
					   				startword = startword+1;
					   				fianlLetter=0;

					   			}else if((buf[countletter]==':'&&buf[countletter+1]=='=')||(buf[countletter]=='>'&&buf[countletter+1]=='=')||(buf[countletter]=='<'&&buf[countletter+1]=='=')){

					   					if(fianlLetter!=0){
					   						word = new String(buf,startword,fianlLetter);
					   						character[j++]=word;
					   						System.out.println(character[j-1]);
					   						//startword = startword+1;
					   						 }
					                         startword=countletter;

					   						word = new String(buf,startword,2);
					   						character[j++]=word;
					   						System.out.println(character[j-1]);
					   				       startword = startword+2;
					   				        fianlLetter=0;
					   						}else if(buf[countletter]=='('||buf[countletter]==')'||buf[countletter]==','||buf[countletter]==';'||buf[countletter]==':'||(buf[countletter]=='>'&&buf[countletter+1]!='=')||(buf[countletter]=='<'&&buf[countletter+1]!='=')){

					   							  if(fianlLetter!=0){
					   							    word = new String(buf,startword,fianlLetter);
					   							    character[j++]=word;
					   								System.out.println(character[j-1]);
					   								//startword = startword+1;
					   							}
					                                startword=countletter;

					   							     word = new String(buf,startword,1);
					   								 character[j++]=word;
					   								 System.out.println(character[j-1]);
					   				                 startword = startword+1;
					   				                 fianlLetter=0;
					   							 }else if((buf[countletter]>='a'&&buf[countletter]<='z')||buf[countletter]>='0'&&buf[countletter]<='9'){
					                                     fianlLetter++;
					   							 }
						        }

				 				   if(startword==(space[i-1]+3)){
				 					   word = new String(buf,space[i-1]+3,space[i]-2-space[i-1]-3);
				 					   character[j++]=word;
				 					   System.out.println(character[j-1]);
								      }
				 				   }else{
									//   continue;
								   }
				  }
			  }else if(buf[space[i-1]+1]!='\r'&&buf[space[i-1]+2]!='\n'&&buf[space[i]-1]=='\n'&&buf[space[i]-2]=='\r'){   //空格字符回车空格__包含空格字符空格      4
				  for(int startword =space[i-1]+1,endword=0,k=space[i-1]+1;k<=(space[i]-2);k++){
				  				if(buf[k]=='\r'&&buf[k+1]=='\n'){                                                                                         //4.1字符中有回车的情况没有考滤字符中最后一个回车与最后一个空格的情况
				  						  endword = k;

				  						  //以下一个for是一个对字符串进行分解代码
										 for(int fianlLetter=0, countletter=startword;countletter<endword;countletter++){
										  if(buf[countletter]=='+'||buf[countletter]=='-'||buf[countletter]=='*'||buf[countletter]=='/'||(buf[countletter]=='='&&buf[countletter-1]!=':')){

⌨️ 快捷键说明

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