yufa.java

来自「java语言写的词法分析器」· Java 代码 · 共 100 行

JAVA
100
字号
public class Yufa extends Cifa{
	String ss;
	Yufa(String s){
		super(s);
		ss="";
	}
	public String getString(){
		scaner();		
		Irparser();
		return ss;
	}
	void Irparser(){
		if(syn==1){
		//	do{
				scaner();
		//	}
		//	while(syn==30);
			
			yucu();
			if(syn==6){
				scaner();
				if(syn==0&&!iserror)
					ss="Success!";
			}
			else{
				if(!iserror){
					ss+="Line "+line+" 缺end,错误";
							
					iserror=true;
				}
			}
		}
		else{
			ss+="Line "+line+" 缺begin,错误!";
			iserror=true;
		}
	}
	void yucu(){
		statement();
		while(syn==26){
		//	do{
				scaner();
		//	}while(syn==30);
			statement();
		}
	}
	void statement(){
		if(syn==10){//string
			scaner();
			if(syn==18){//:=
				scaner();
				expression();
			}
			else{
				ss+="Line "+line+" 赋值号错误(应该为:=)!\n";
				iserror=true;
			}
		}
		else{
			ss+="Line "+line+" 语句错误!\n";
			iserror=true;
		}
		
	}
	void expression(){
		term();
		while(syn==13||syn==14){
			scaner();
			term();
		}
		
	}
	void term(){
		factor();
		while(syn==15||syn==16){
			scaner();
			factor();
			
		}
	}
	void factor(){
		if(syn==10||syn==11)
			scaner();
		else if(syn==27){
			scaner();
			expression();
			if(syn==28)
				scaner();
			else{
				ss+="Line "+line+" \')错误\n";
				iserror=true;
			}
		}
		else{
			ss+="Line "+line+" 表达式错误\n";
			iserror=true;
		}
	}
	
}

⌨️ 快捷键说明

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