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

📄 parsingmethod.java

📁 一个小的编译器,可以模仿类似c语言的语法。很适合初级java学习者
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
			advance();
			
			if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("."))
			{
				advance();
				if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("h")
				 ||WordAnalyze.wordString[WordAnalyze.wordPointer].equals("c"))
				 {
				 	fileType=WordAnalyze.wordString[WordAnalyze.wordPointer];
				 	storeIncludeFile(fileName,fileType);
				 	
				 	advance();
				 }
				 else
				 {
				 	errorMethod.error("file",3,fileName,WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
				 }
			}
			else
			{
				errorMethod.error("file",2,fileName,WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
			}
		}
		else
		{
			errorMethod.error("file",2,WordAnalyze.wordString[WordAnalyze.wordPointer],WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
		}
	}
	
	//////define analyzing////////////
	public void defineAnalyze()
	{
		while(judgeType(WordAnalyze.wordString[WordAnalyze.wordPointer])&&WordAnalyze.wordPointer<WordAnalyze.wordStringLength)
		{
			if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("int")
				||WordAnalyze.wordString[WordAnalyze.wordPointer].equals("double")
				||WordAnalyze.wordString[WordAnalyze.wordPointer].equals("float"))
			{
				defineS();
			}
			else
			if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("char"))
			{
				defineCharS();
			}
			
			clearStack();
		}
	}
	public void defineCharS()
	{
		if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("char"))
		{
			symbolType = WordAnalyze.wordString[WordAnalyze.wordPointer];
			pushIntoStack(WordAnalyze.wordString[WordAnalyze.wordPointer]);
			advance();
			defineCharA();
		
		}
		
	}
	public void defineCharA()
	{
		if(judgeSymbol(WordAnalyze.wordString[WordAnalyze.wordPointer]))
		{
			symbolName = WordAnalyze.wordString[WordAnalyze.wordPointer];
			if(symbolIsExisting(WordAnalyze.wordString[WordAnalyze.wordPointer]))
			{
				errorMethod.error("symbol",2,WordAnalyze.wordString[WordAnalyze.wordPointer],WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
			}
			else
			{
				storeSymbol(symbolName,symbolType);
			}
		}
		advance();
		defineCharB();
	}
	
	public void defineCharB()
	{
		if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("="))
		{
			advance();
			defineCharC();
		}
		else
		{
			defineCharD();
		}
		
	}
	public void defineCharC()
	{
		if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("'"))
		{
			advance();
			if(WordAnalyze.wordString[WordAnalyze.wordPointer].length()==1)
			{
				advance();
				if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("'"))
				{
					advance();
					defineCharD();
				}
				else
				{
					errorMethod.error("sign",0,"'",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
				}
				
			}
			else
			{
				errorMethod.error("define",2,WordAnalyze.wordString[WordAnalyze.wordPointer],WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
			}
		}
		else
		if(judgeSymbol(WordAnalyze.wordString[WordAnalyze.wordPointer]))
		{
			if(symbolIsExisting(WordAnalyze.wordString[WordAnalyze.wordPointer]))
			{
				if(getSymbolType(WordAnalyze.wordString[WordAnalyze.wordPointer]).equals("char"))
				{
					advance();
					defineCharD();
				}
				else
				{
					errorMethod.error("define",3,WordAnalyze.wordString[WordAnalyze.wordPointer],WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
				}
			}
			else
			{
				errorMethod.error("symbol",1,WordAnalyze.wordString[WordAnalyze.wordPointer],WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
			}
			
		}
		else
		{
			errorMethod.error("define",1,WordAnalyze.wordString[WordAnalyze.wordPointer],WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
		}
	}
	
	public void defineCharD()
	{
		if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(","))
		{
			advance();
			defineCharA();
		}
		else
		if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(";"))
		{
			advance();
		}
		else
		{
			errorMethod.error("sign",0,";",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
		}
	}
	
	
	
	public void defineS()
	{
		if(judgeType(WordAnalyze.wordString[WordAnalyze.wordPointer]))
		{
			
			pushIntoStack(WordAnalyze.wordString[WordAnalyze.wordPointer]);
			symbolType = WordAnalyze.wordString[WordAnalyze.wordPointer];
			advance();
			defineA();
			
		}
	}
	public void defineA()
	{
		
		if(judgeSymbol(WordAnalyze.wordString[WordAnalyze.wordPointer]))
		{
			symbolName = WordAnalyze.wordString[WordAnalyze.wordPointer];
			if(symbolIsExisting(WordAnalyze.wordString[WordAnalyze.wordPointer]))
			{
				errorMethod.error("symbol",2,WordAnalyze.wordString[WordAnalyze.wordPointer],WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
			}
			else
			{
				storeSymbol(symbolName,symbolType);
			}
			
			advance();
			defineB();
			
		}
		else
		{
			errorMethod.error("define",0,WordAnalyze.wordString[WordAnalyze.wordPointer],WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
		}
		
	}
	
	public void defineB()
	{
		if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("="))
		{
			advance();
			defineC();
		}
		else
		{
			defineD();
		}
	}
	
	public void defineC()
	{
		expressAnalyze();
		defineD();
		
	}
	
	public void defineD()
	{
		if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(";"))
		{
			advance();
		}
		else
		if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(","))
		{
			advance();
			defineA();
		}
		else
		{
			errorMethod.error("define",1,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
		}
	}
	
	
	
	//////////evaluate express///////////////
	public void evaluateAnalyze()
	{
		if(judgeSymbol(WordAnalyze.wordString[WordAnalyze.wordPointer]))
		{
			
			if(!symbolIsExisting(WordAnalyze.wordString[WordAnalyze.wordPointer]))
			{
				errorMethod.error("symbol",1,WordAnalyze.wordString[WordAnalyze.wordPointer],WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
				
			}
			else
			{
				pushIntoStack(getSymbolType(WordAnalyze.wordString[WordAnalyze.wordPointer]));
			}
			if(getSymbolType(WordAnalyze.wordString[WordAnalyze.wordPointer]).equals("int")
				||getSymbolType(WordAnalyze.wordString[WordAnalyze.wordPointer]).equals("double")
				||getSymbolType(WordAnalyze.wordString[WordAnalyze.wordPointer]).equals("float")
				)
				{
						evaluateA();
				}
		
			else
			if(getSymbolType(WordAnalyze.wordString[WordAnalyze.wordPointer]).equals("char"))
			{
				evaluateCharA();
			}
		}
	}
	
	public void evaluateCharA()
	{
		if(judgeSymbol(WordAnalyze.wordString[WordAnalyze.wordPointer]))
		{
			advance();
			if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("="))
			{
				advance();
				evaluateCharB();
			}
			else
			{
				errorMethod.error("evaluate",1,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
			}
		}
	}
	
	public void evaluateCharB()
	{
		if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("'"))
		{
			advance();
			if(WordAnalyze.wordString[WordAnalyze.wordPointer].length()==1)
			{
				advance();
				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("evaluate",2,WordAnalyze.wordString[WordAnalyze.wordPointer],WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
			}
		}
		else
		if(judgeSymbol(WordAnalyze.wordString[WordAnalyze.wordPointer]))
		{
			if(symbolIsExisting(WordAnalyze.wordString[WordAnalyze.wordPointer]))
			{
				if(getSymbolType(WordAnalyze.wordString[WordAnalyze.wordPointer]).equals(getTopStack()))
				{
					advance();
					if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(";"))
					{
						advance();
					}
					
					else
					{
						errorMethod.error("sign",0,";",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
					}
				}
				
			}
			else
			{
				errorMethod.error("symbol",1,WordAnalyze.wordString[WordAnalyze.wordPointer],WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
			}
		}
		else
		{
			errorMethod.error("evaluate",1,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
		}
	}
	
	public void evaluateA()
	{
		if(judgeSymbol(WordAnalyze.wordString[WordAnalyze.wordPointer]))
		{
			advance();
			if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("="))
			{
				advance();
				expressAnalyze();
				if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(";"))
				{
					advance();
				}
				else
				{
					errorMethod.error("evaluate",0,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
				}
				
			}
			else
			if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("++")||WordAnalyze.wordString[WordAnalyze.wordPointer].equals("--"))
			{
				advance();
				if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(";"))
				{
					advance();
				}
				else
				{
					errorMethod.error("evaluate",0,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
				}
			}
			else
			{
				errorMethod.error("evaluate",1,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
			}
		}
	}
	
	///////////if sentence///////////////////
	public void ifAnalyze()
	{
		if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("if"))
		{
			advance();
			if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("("))
			{
				advance();
				logicExpressAnalyze();
				if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(")"))
				{
					advance();
					ifS();
				}
				else
				{
					errorMethod.error("sign",0,")",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
				}
			}
			else
			{
				errorMethod.error("sign",0,"(",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
			}
		}
	}
	public void ifS()
	{
		if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("{"))
		{
			advance();
			multiSentence();
			if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("}"))
			{
				advance();
				ifA();
			}
			else
			{
				errorMethod.error("sign",0,"}",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
			}
		}
		else
		{
			singleSentence();
			ifA();
		}
	}
	
	public void ifA()
	{
		if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("else"))
		{
			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();
				
			}
		}
	}
	
	/////////while sentence//////////////
	public void whileAnalyze()
	{
		if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("while"))
		{
			advance();
			if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("("))
			{
				advance();
				logicExpressAnalyze();
				if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(")"))
				{
					advance();
					whileS();
				}
				else
				{
					errorMethod.error("sign",0,")",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
				}
			}
			else
			{
				errorMethod.error("sign",0,"(",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
			}
		}
	}
	public void whileS()
	{
		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();
		}
		
		
	}
	
	///////for sentence///////////////////
	public void forAnalyze()
	{

		if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("for"))
		{
			advance();
			if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals("("))
			{
				advance();
				if(WordAnalyze.wordString[WordAnalyze.wordPointer].equals(";"))
				{
					nullAnalyze();
					forS();
				}
				else
				if(judgeSymbol(WordAnalyze.wordString[WordAnalyze.wordPointer]))
				{
					evaluateAnalyze();	
					forS();
				}
				else
				{
					errorMethod.error("for",0,"",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
				}
			}
			else
			{
				errorMethod.error("sign",0,"(",WordAnalyze.lineOfWord[WordAnalyze.wordPointer]);
			}
		}
	}
	

⌨️ 快捷键说明

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