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

📄 down.java

📁 编译原理课程中的递归下降文法的JAVA实现!
💻 JAVA
字号:
import java.io.*;

public class Down{
	public String in()throws IOException{
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		String str=br.readLine();
		if(str.endsWith("#")) return str.substring(0,str.length()-1);
		else System.out.println("不是以#结尾的字符串");
		return null;
	}

	public boolean isE(String str)throws IOException{
		for(int i=0;i<=str.length();i++)
			if(isT(str.substring(0,i))&&isG(str.substring(i,str.length()))) return true;
		return false;
	}

	public boolean isS(String str)throws IOException{
		if(str.equals("")) return true;
		else if(str.startsWith("*")||str.startsWith("/"))
		   return isT(str.substring(1,str.length()));
	    return false;
	}

	public boolean isT(String str)throws IOException{
		for(int i=0;i<=str.length();i++)
			if(isF(str.substring(0,i))&&isS(str.substring(i,str.length()))) return true;
		return false;
	}

	public boolean isG(String str)throws IOException{
		if(str.equals("")) return true;
		else if(str.startsWith("+")||str.startsWith("-")){
			for(int i=1;i<=str.length();i++)
				if(isT(str.substring(1,i))&&isG(str.substring(i,str.length()))) return true;
		}
		return false;
	}

	public boolean isF(String str)throws IOException{
		if(str.equals("i")) return true;
		else if(str.startsWith("(")&&str.endsWith(")"))
		  return isE(str.substring(1,str.length()-1));
		else return false;
	}

	public void run()throws IOException{
		System.out.println("递归下降分析程序,编制人:汪泳,20050830119,信息安全0501班");
		System.out.print("输入一以#结束的符号串(包括+-*/()i#):");
		String str=new Down().in();
		if(str.equals("")) System.out.print("程序结束");
		else if(isE(str)) System.out.print("输出结果:"+str+"#为合法字符串");
		else System.out.print("输出结果:"+str+"#为非法字符串");
	}

	public static void main(String args[])throws IOException{
		new Down().run();
	}
}

⌨️ 快捷键说明

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