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

📄 parsingmethod.java

📁 一个小的编译器,可以模仿类似c语言的语法。很适合初级java学习者
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
	public void forS()
	{
		logicExpressAnalyze();
		if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(";"))
		{
			advance();
			if(judgeSymbol(WordAnalyze.wordString[WordAnalyze.wordPointer]))
			{
				advance();
				if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("++")||WordAnalyze.wordString[WordAnalyze.wordPointer].equals("--"))
				{
					advance();
					forA();
				}	
				else
				if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("="))
				{
					advance();
					expressAnalyze();
					forA();
				}
				else
				{
					errorMethod.error("for",1,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
				}
				
			}
			else
			{
				errorMethod.error("for",1,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
			}
		}
		else
		{
			errorMethod.error("sign",0,";",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
		}
	}
	
	public void forA()
	{
		if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(")"))
		{
			advance();
			if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("{"))
			{
				advance();
				multiSentence();
				if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("}"))
				{
					advance();
				}
				else
				{
					errorMethod.error("sign",0,"}",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
				}
			}
			else
			{
				singleSentence();
			}
		}

	}
	
	
	////////////////print sentence///////////////
	public void printfAnalyze()
	{
		if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("printf"))
		{
			advance();
			printfA();
			if(!queueIsEmpty())
			{
				errorMethod.error("printf",2,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
			}
		}
	}
	public void printfA()
	{
		if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("("))
		{
			advance();
			printfB();
			if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(")"))
			{
				advance();
				if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(";"))
				{
					advance();
				}
				else
				{
					errorMethod.error("sign",0,";",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
				}
			}
			else
			{
				errorMethod.error("sign",0,")",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
			}
		}
		else
		{
			errorMethod.error("sign",0,"(",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
		}
	}
	
	public void printfB()
	{
		if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("\""))
		{
			advance();
			printfC();
			if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("\""))
			{
				advance();
				///////////////////
			//	showQueue();
				if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(","))
				{
					advance();
					printfD();
				}
				else
				{
					errorMethod.error("printf",0,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
				}
			}
			else
			{
				errorMethod.error("sign",0,"'",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
			}
			
		}
		else
		{
			errorMethod.error("printf",0,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
		}
		
	}
	
	public void printfC()
	{
		if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("%"))
		{
			advance();
			if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("d")
				||WordAnalyze.wordString[WordAnalyze.wordPointer].equals("f")
				||WordAnalyze.wordString[WordAnalyze.wordPointer].equals("c"))
				{
					if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("d"))
					{
						pushIntoQueue("int");
					}
					else
					if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("c"))
					{
						pushIntoQueue("char");
					}
					else
					{
						pushIntoQueue("double");
					}
					advance();
					if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(","))
					{
					
						advance();
						printfC();
					}
				}
		}
	}
	public void printfD()
	{
		if(symbolIsExisting(WordAnalyze.wordString[WordAnalyze.wordPointer]))
		{
			String s = getSymbolType(WordAnalyze.wordString[WordAnalyze.wordPointer]);
			String t = new String();
			if(!queueIsEmpty())
			{
				t = popOutQueue();
			}
			else
			{
				errorMethod.error("printf",2,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
			}
			
			if(t.equals("double"))
			{
				if(s.equals("double")||s.equals("float"))
				{
					
				}
				else
				{
					errorMethod.error("printf",1,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
				}
			}
			else
			if(t.equals(s))
			{
				
			}
			else
			{
				errorMethod.error("printf",1,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
			}
			
			advance();
			if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(","))
			{
				advance();
				printfD();
			}
		}
		else
		{
			errorMethod.error("symbol",1,WordAnalyze.wordString[WordAnalyze.wordPointer],WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
		}
	}
	
	////////////scanf sentence//////////////////
	public void scanfAnalyze()
	{
		if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("scanf"))
		{
			advance();
			scanfA();
			if(!queueIsEmpty())
			{
				errorMethod.error("scanf",2,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
			}
		}
	}
	public void scanfA()
	{
		if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("("))
		{
			
			advance();
			scanfB();
			if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(")"))
			{
				advance();
				if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(";"))
				{
					advance();
				}
				else
				{
					errorMethod.error("sign",0,";",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
				}
				
			}
			else
			{
				errorMethod.error("sign",0,")",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
				
			}
		}
		else
		{
			errorMethod.error("sign",0,"(",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
		}
	}
	
	public void scanfB()
	{
		if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("\""))
		{
			advance();
			scanfC();
			if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("\""))
			{
				advance();
				if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(","))
				{
					advance();
					scanfD();
				}
				else
				{
					errorMethod.error("scanf",0,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
				}
				
			}
			else
			{
				errorMethod.error("sign",0,"\"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
			}
		}
		else
		{
			errorMethod.error("sign",0,"\"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
		}
	}
	public void scanfC()
	{
		if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("%"))
		{
			advance();
			if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("d")
				||WordAnalyze.wordString[WordAnalyze.wordPointer].equals("f")
				||WordAnalyze.wordString[WordAnalyze.wordPointer].equals("c"))
				{
					if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("d"))
					{
						pushIntoQueue("int");
					}
					else
					if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("f"))
					{
						pushIntoQueue("double");
					}
					else
					{
						pushIntoQueue("char");
					}
					advance();
					if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(","))
					{
						advance();
						scanfC();
					}
					
				}
			
		}
		else
		{
			errorMethod.error("scanf",0,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
		}
	}
	public void scanfD()
	{
		String s = new String();
		String t = new String();
		if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("&"))
		{
			advance();
			if(judgeSymbol(WordAnalyze.wordString[WordAnalyze.wordPointer]))
			{
				if(symbolIsExisting(WordAnalyze.wordString[WordAnalyze.wordPointer]))
				{
					s=getSymbolType(WordAnalyze.wordString[WordAnalyze.wordPointer]);
					t=popOutQueue();
					if(t.equals("double"))
					{
						if(s.equals("double")||s.equals("float"))
						{
							
						}
						else
						{
							errorMethod.error("scanf",1,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
						}
					}
					else
					if(t.equals(s))
					{
						
					}
					else
					{
						errorMethod.error("scanf",1,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
					}
						
					
					advance();
					if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(","))
					{
						advance();
						scanfD();
					}
				}
				else
				{
					errorMethod.error("symbol",1,WordAnalyze.wordString[WordAnalyze.wordPointer],WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
				}
			}
			else
			{
				errorMethod.error("scanf",0,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
			}
			
		}
		else
		{
			errorMethod.error("scanf",0,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
		}
	
		
	}
	//////////////null sentence////////////
	public void nullAnalyze()
	{
		if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(";"))
		{
			advance();
		}
	}
	
	/////////single sentence///////////////
	public void singleSentence()
	{
		if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("if"))
		{
			ifAnalyze();
			clearStack();
			clearQueue();
		}
		else
		if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("while"))
		{
			whileAnalyze();
			clearStack();
			clearQueue();
		}
		else
		if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("for"))
		{
			forAnalyze();
			clearStack();
			clearQueue();
		}
		else
		if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("printf"))
		{
			printfAnalyze();
			clearStack();
			clearQueue();
		}
		else
		if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("scanf"))
		{
			scanfAnalyze();
			clearStack();
			clearQueue();
		}
		else
		if(judgeSymbol(WordAnalyze.wordString[WordAnalyze.wordPointer]))
		{
			evaluateAnalyze();
			clearStack();
			clearQueue();
		}
		else
		if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(";"))
		{
			nullAnalyze();
			clearStack();
			clearQueue();
		}
		
		else
		{
			errorMethod.error("single",0,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
			clearStack();
			clearQueue();
		}
	}
	
	/////////multi sentence////////////////
	public void multiSentence()
	{
		boolean flag = true;
		boolean error = false;

	
		while(flag)
		{
			
			if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("if"))
			{
				ifAnalyze();
				clearStack();
				clearQueue();
		
			}
			else
			if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("while"))
			{
				whileAnalyze();
				clearStack();
				clearQueue();
	
			}
			else
			if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("for"))
			{
				forAnalyze();
				clearStack();
				clearQueue();
		
			}
			else
			if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("printf"))
			{
				printfAnalyze();
				clearStack();
				clearQueue();
			}
			else
			if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("scanf"))
			{
				scanfAnalyze();
				clearStack();
				clearQueue();
			}
			else
			if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("{"))
			{
				advance();
				multiSentence();
				if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("}"))
				{
					advance();
					clearStack();
					clearQueue();
				}
				else
				{
					errorMethod.error("sign",0,"}",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
					
				}
			
		
			}
			else
			if(judgeSymbol(WordAnalyze.wordString[WordAnalyze.wordPointer]))
			{
				evaluateAnalyze();
				clearStack();
				clearQueue();
		
			}
			else
			if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(";"))
			{
				nullAnalyze();
				clearStack();
				clearQueue();
		
			}
			else
			if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("}"))

⌨️ 快捷键说明

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