資源簡介
使用算符優先分析算法分析下面的文法:E’ → #E#E → E+T | TT → T*F | FF → P^F | PP → (E) | i其中i可以看作是一個終結符,無需作詞法分析。具體要求如下:1、如果輸入符號串為正確句子,顯示分析步驟,包括分析棧中的內容、優先關系、輸入符號串的變化情況;2、如果輸入符號串不是正確句子,則指示出錯位置。

代碼片段和文件信息
package?s;
import?javax.swing.*;
import?java.awt.Font;
import?java.awt.event.*;
public?class?Jsuanfu?extends?Jframe?implements?ActionListener{
private?JTextArea?ta=new?JTextArea(1850);;
private?JTextField?tf;
private?JButton?jb1;
private?JButton?jb2;
private?JLabel?jl1;
private?JLabel?jl2;
char[]?a=new?char[50];
char[]?s=new?char[50];
int?jkzp=0;
char?m;
boolean?f=true;
String?st1=““st2=““st3=““;
public?int?table[][]={{2111122}
????????????????{2211122}
????????????????{2211122}
????????????????{222-1-122}
????????????????{111110-1}
????????????????{222-1-122}
????????????????{11111-10}};
public?Jsuanfu(){
super(“算符優先分析器“);
this.setSize(600500);
this.setLocation(200150);
this.setLayout(null);
tf=new?JTextField(30);
jb1=new?JButton(“清空文本區“);
jb2=new?JButton(“優先分析“);
jl1=new?JLabel(“輸入字符串:“);
jl2=new?JLabel(“分析結果:“);
jl1.setFont(new?Font(“楷書“Font.BOLD14));
jl2.setFont(new?Font(“楷書“Font.BOLD14));
jl1.setSize(10025);
jl1.setLocation(1010);
this.add(jl1);
tf.setSize(400?25);
tf.setLocation(12010);
this.add(tf);
jl2.setSize(9025);
jl2.setLocation(10?40);
this.add(jl2);
ta.setEditable(false);
????JScrollPane?sc=new?JScrollPane(taJScrollPane.VERTICAL_SCROLLBAR_ALWAYS
????????????????JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
????sc.setSize(580350);
????sc.setLocation(10?70);
????this.add(sc);
????jb1.setBounds(10043010025);
????jb2.setBounds(40043010025);
????this.add(jb1);
????this.add(jb2);
????ta.append(“??步驟“+“\t“+“棧“+“\t“+“當前符號“+“\t“+“剩余輸入串“+“\t“+“移進或歸約“+“\n“);
????jb1.addActionListener(this);
????jb2.addActionListener(this);
this.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);
this.setVisible(true);
}
public?void?actionPerformed(ActionEvent?e)?
{
if(e.getSource()==jb1)
if(JOptionPane.showConfirmDialog(null“確定清空嗎?“?“提示!“JOptionPane.YES_NO_OPTION)==JOptionPane.YES_OPTION)
{
ta.setText(““);
tf.setText(““);
ta.append(“??步驟“+“\t“+“棧“+“\t“+“當前符號“+“\t“+“剩余輸入串“+“\t“+“移進或歸約“+“\n“);
p=0;
f=true;
}
if(e.getSource()==jb2)
{???
int?n1=0;
z=0;
String?st=tf.getText();
char[]?b=new?char[st.length()];
for(int?l=0;l {
b[l]=st.charAt(l);
a[l]=st.charAt(l);
n1=l;
}
for(int?d=n1+1;d<50;d++)
a[d]=‘#‘;
k=1;
s[k]=‘#‘;
????while(z ?????{??
????if(a[z]==‘+‘||a[z]==‘*‘||a[z]==‘^‘||a[z]==‘i‘||a[z]==‘(‘||a[z]==‘)‘||a[z]==‘#‘)
???? e();
????else
????{
???? ta.append(“出錯“);
???? f=false;
????}
???????z++;
?????}
}
}
?int?ch(char?b){
int?t=-1;
switch(b)
{
case?‘+‘:t=0;break;
case?‘*‘:t=1;break;
case?‘^‘:t=2;break;
case?‘i‘:t=3;break;
case?‘(‘:t=4;break;
case?‘)‘:t=5;break;
case?‘#‘:t=6;
}
return?t;
}
void?e(){
if(
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????????0??2008-05-19?19:37??算符優先分析器\.me
?????文件???????5113??2008-05-22?15:49??算符優先分析器\.me
?????文件?????????26??2008-05-22?15:49??算符優先分析器\.me
?????文件???????4828??2008-05-20?21:02??算符優先分析器\.me
?????文件???????3854??2008-05-20?16:04??算符優先分析器\.me
?????文件???????4877??2008-05-20?21:38??算符優先分析器\.me
?????文件???????3677??2008-05-20?16:02??算符優先分析器\.me
?????文件???????3764??2008-05-20?16:06??算符優先分析器\.me
?????文件???????4737??2008-05-20?20:12??算符優先分析器\.me
?????文件???????4801??2008-05-20?20:52??算符優先分析器\.me
?????文件???????4328??2008-05-20?19:42??算符優先分析器\.me
?????文件???????4686??2008-05-20?20:12??算符優先分析器\.me
?????文件???????4830??2008-05-20?20:59??算符優先分析器\.me
?????文件???????4848??2008-05-20?21:10??算符優先分析器\.me
?????文件???????4875??2008-05-20?21:38??算符優先分析器\.me
?????文件???????4966??2008-05-20?22:38??算符優先分析器\.me
?????文件???????4821??2008-05-20?20:58??算符優先分析器\.me
?????文件???????3882??2008-05-20?19:27??算符優先分析器\.me
?????文件???????4764??2008-05-20?20:22??算符優先分析器\.me
?????文件???????4875??2008-05-20?21:43??算符優先分析器\.me
?????文件???????4853??2008-05-20?21:36??算符優先分析器\.me
?????文件???????5250??2008-05-22?15:56??算符優先分析器\.me
?????文件???????4853??2008-05-20?21:41??算符優先分析器\.me
?????文件???????3767??2008-05-20?16:05??算符優先分析器\.me
?????文件???????4966??2008-05-20?22:39??算符優先分析器\.me
?????文件???????4087??2008-05-20?19:37??算符優先分析器\.me
?????文件???????4001??2008-05-20?19:33??算符優先分析器\.me
?????文件???????4817??2008-05-20?21:04??算符優先分析器\.me
?????文件???????4842??2008-05-20?21:17??算符優先分析器\.me
?????文件???????4848??2008-05-20?21:15??算符優先分析器\.me
............此處省略215個文件信息
評論
共有 條評論