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

📄 ll_1.java

📁 编译原理的实验
💻 JAVA
字号:
//notice :ε 不可见;E'用D代替;T'用R代替
//只可输入正确的式子,不然不能正常工作
import java.util.Stack;
public class LL_1 {
	public static void main(String[] args) {
		/*Stack<Character> mystack=new Stack<Character>();
		String[][] analysistable=new String[5][6];
		analysistable[0][0]="TD";
		analysistable[0][3]="TD";
		analysistable[1][1]="+TD";
		analysistable[1][4]="";
		analysistable[1][5]="";
		analysistable[2][0]="FR";
		analysistable[2][3]="FR";
		analysistable[3][1]="";
		analysistable[3][2]="*FR";
		analysistable[3][4]="";
		analysistable[3][5]="";//replace:reduce to ∈
		analysistable[4][0]="i";
		analysistable[4][3]="(E)";
		Nonterminal E=new Nonterminal('E',0);
		Nonterminal D=new Nonterminal('D',1);//replace E'
		Nonterminal T=new Nonterminal('T',2);
		Nonterminal R=new Nonterminal('R',3);//replace T'
		Nonterminal F=new Nonterminal('F',4);
		char[] inputsymbol=new char[6];
		String output="";
		inputsymbol[0]='i';
		inputsymbol[1]='+';
		inputsymbol[2]='*';
		inputsymbol[3]='(';
		inputsymbol[4]=')';
		inputsymbol[5]='$';
		String input="i+i*i$";
		mystack.push('$');
		mystack.push(E.symbol);
		//System.out.print(mystack.get(0));
		//System.out.print(mystack.toString()+"\n");
		for(int i=0;i<input.length();i++) {
			System.out.println(mystack.toString()+"\t"+input.substring(i)+"\t"+output);
			output="";
			if(mystack.peek()!=input.charAt(i)) {
				char temp=mystack.pop();
				char temp2=input.charAt(i);
				String str=analysistable[LL_1.getseq(temp)][LL_1.getinputseq(temp2)];
				for(int j=str.length()-1;j>=0;j--) {
					mystack.push(str.charAt(j));
				}
				output=temp+"->"+str;
				i=i-1;
				
			}
			else {
				mystack.pop();
			}
			try {
				Thread.currentThread().sleep(1000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}*/

	}
	public static int getseq(char ch) {
		int temp=-1;
		switch(ch) {
		case 'E':
			temp=0;
			break;
		case 'D':
			temp=1;
			break;
		case 'T':
			temp=2;
			break;
		case 'R':
			temp=3;
			break;
		case 'F':
			temp=4;
			break;
		}
		return temp;
	}
	public static int getinputseq(char ch) {
		int temp=-1;
		switch(ch) {
		case 'i':
			temp=0;
			break;
		case '+':
			temp=1;
			break;
		case '*':
			temp=2;
			break;
		case '(':
			temp=3;
			break;
		case ')':
			temp=4;
			break;
		case '$':
			temp=5;
			break;
		}
		return temp;
	}


}

⌨️ 快捷键说明

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