?? priority.java
字號:
package Sentence;
import java.util.ArrayList;
public class Priority{
public Priority(PriorityTable tab){
table = tab;
}
public Object analyzeSentence(String str){
String sentence = str;
int fence = 0; // the fence of sentence
boolean succeed = true;
String last = "" + sentence.charAt(fence); // a 為剛讀入的輸入符.
ArrayList stackFin = new ArrayList();
ArrayList stackUnF = new ArrayList();
stackFin.add("#");
stackFin.add("<");
stackFin.add(last);
fence++;
String temp = "" + sentence.charAt(fence);
while(true){
//System.out.println("P-last " + last);
if(last.compareTo("#")==0&&temp.compareTo("#")==0){
break;
}
while(table.getValueAt(last,temp,"P").compareTo(">")!=0){
stackFin.add(table.getValueAt(last,temp,"P"));
stackFin.add(temp);
last = temp;
fence++;
if(temp.compareTo("#")==0){
for(int i=0;i<stackFin.size();i++){
System.out.print("P last " + stackFin.get(i));
}
}
temp = "" + sentence.charAt(fence);
}
/*for(int i=0;i<stackFin.size();i++){
System.out.print(stackFin.get(i));
}
System.out.println("");
for(int i=0;i<stackUnF.size();i++){
System.out.print(stackUnF.get(i));
}*/
//System.out.println("");
//System.out.println("P before reduce ");
succeed = table.reduce(stackFin,stackUnF);
last = (String)stackFin.get(stackFin.size()-1);
if(succeed==false){
System.out.println("P " + "wrong");
break;
}
}
String result = "succeed";
if(succeed==false/*檢測非終結符*/){
result = "false";
}
return result;
}
private PriorityTable table;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -