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

📄 function.java

📁 编译原理中的LR[0]算法
💻 JAVA
字号:
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.util.Stack;
import java.util.Vector;


public class Function {
	public void display(Stack statusstack,Stack charstack,Vector<String> vector,PrintStream ps){
		for(int i=0;i<charstack.size();i++){
			ps.print(charstack.get(i));
		}
		ps.print("     ");
		for(int i=0;i<vector.size();i++){
			ps.print(vector.get(i));
		}
		ps.print("      ");
		for(int i=0;i<statusstack.size();i++){
			ps.print(statusstack.get(i));
		}
		ps.println();
	}
	public void function(Vector<String> v) throws Exception{
		Stack statusstack=new Stack();
		statusstack.push("0");
		Stack charstack=new Stack();
		charstack.push("#");
		Vector<String> vector=new Vector<String>();
		for(int i=0;i<v.size();i++){
			vector.add(v.get(i));
		}
		vector.add("#");
		FileOutputStream fos=new FileOutputStream("Result.txt");
		PrintStream ps=new PrintStream(fos);
		while(!statusstack.peek().equals("1")||!charstack.peek().equals("S")||!vector.get(0).equals("#")){
			display(statusstack,charstack,vector,ps);
			if(statusstack.peek().equals("0")){
				if(vector.get(0).equals("a")){
					statusstack.push("2");
					charstack.push("a");
					vector.remove(0);
				}else{
					ps.println("分析失败");
					break;
				}
			}else if(statusstack.peek().equals("1")){
				if(vector.get(0).equals("#")){
					display(statusstack,charstack,vector,ps);
					ps.println("分析成功");
				}else{
					ps.println("分析失败");
					break;
				}
			}else if(statusstack.peek().equals("2")){
				if(vector.get(0).equals("b")){
					statusstack.push("4");
					charstack.push("b");
					vector.remove(0);
				}else{
					ps.println("分析失败");
					break;
				}
			}else if(statusstack.peek().equals("3")){
				if(vector.get(0).equals("c")){
					statusstack.push("5");
					charstack.push("c");
					vector.remove(0);
				}else if(vector.get(0).equals("b")){
					statusstack.push("6");
					charstack.push("b");
					vector.remove(0);
				}else{
					ps.println("分析失败");
					break;
				}
			}else if(statusstack.peek().equals("4")){
				if(vector.get(0).equals("a")||vector.get(0).equals("c")||vector.get(0).equals("e")||vector.get(0).equals("b")||vector.get(0).equals("d")||vector.get(0).equals("#")){
					statusstack.pop();
					charstack.pop();
					charstack.push("A");
					statusstack.push("3");
				}
			}else if(statusstack.peek().equals("5")){
				if(vector.get(0).equals("d")){
					statusstack.push("8");
					charstack.push("d");
					vector.remove(0);
				}else{
					ps.println("分析失败");
					break;
				}
			}else if(statusstack.peek().equals("6")){
				if(vector.get(0).equals("a")||vector.get(0).equals("c")||vector.get(0).equals("e")||vector.get(0).equals("b")||vector.get(0).equals("d")||vector.get(0).equals("#")){
					statusstack.pop();
					statusstack.pop();
					charstack.pop();
					charstack.pop();
					charstack.push("A");
					statusstack.push("3");
				}
			}else if(statusstack.peek().equals("7")){
				if(vector.get(0).equals("e")){
					statusstack.push("9");
					charstack.push("e");
					vector.remove(0);
				}else{
					ps.println("分析失败");
					break;
				}
			}else if(statusstack.peek().equals("8")){
				if(vector.get(0).equals("a")||vector.get(0).equals("c")||vector.get(0).equals("e")||vector.get(0).equals("b")||vector.get(0).equals("d")||vector.get(0).equals("#")){
					statusstack.pop();
					charstack.pop();
					charstack.push("B");
					statusstack.push("7");
				}
			}else if(statusstack.peek().equals("9")){
				if(vector.get(0).equals("a")||vector.get(0).equals("c")||vector.get(0).equals("e")||vector.get(0).equals("b")||vector.get(0).equals("d")||vector.get(0).equals("#")){
					statusstack.pop();
					statusstack.pop();
					statusstack.pop();
					statusstack.pop();
					statusstack.pop();
					charstack.pop();
					charstack.pop();
					charstack.pop();
					charstack.pop();
					charstack.pop();
					charstack.push("S");
					statusstack.push("1");
				}
			}
			
		}
		if(statusstack.peek().equals("1")){
			if(vector.get(0).equals("#")){
				display(statusstack,charstack,vector,ps);
				ps.println("分析成功");
			}
		}
		ps.close();
		fos.close();
	}

}

⌨️ 快捷键说明

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