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

📄 accidence2.java

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

										        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]+1)){
				  					      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]+1)){                                                                        //4.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]+1)){                                                                      //4.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]+1)){
				  					     word = new String(buf,space[i-1]+1,space[i]-2-space[i-1]);
				  					     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'){    //空格字符回车字符空格__包含空格字符空格    5
				  for(int startword =space[i-1]+1,endword=0,k=space[i-1]+1;k<=space[i];k++){
					  if(buf[k]=='\r'&&buf[k+1]=='\n'){                                                                                                         //5.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);

⌨️ 快捷键说明

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