資源簡介
該文件為符號串的最左和最右推導的代碼 具體使用JAVA軟件實現 簡單易懂
代碼片段和文件信息
package?compiler;
import?java.awt.*;
import?java.awt.event.*;
import?java.io.BufferedReader;
import?java.io.FileReader;
import?java.util.*;
import?javax.swing.*;
public?class?tuidao?implements?ActionListener?{
String?[]s1;???//存放產生式的字符串數組
String?s2s3s4sb1;?????//s2存放要分析的字符串
StringBuffer?sb;
Jframe?f;
JLabel?L1L2;
JButton?b1b2b3b4;
JTextField?tf;
JTextArea?tata1ta2;
JScrollPane??spsp1sp2;
JPanel?p1p2p3p4;
JFileChooser?fc1fc2;
public?void?actionPerformed(ActionEvent?e)?{
//?TODO?Auto-generated?method?stub
?????????if(e.getSource()==b1)
?????????{
???????? ?//tf.setEditable(true);
???????? ?//ta.setEditable(true);
???????? ?String?ss=““;
???????? ?fc1=new?JFileChooser();
???????? ?if(fc1.showOpenDialog(f)==0)
???????? ?{
???????? ?try
???????? ?{
???????? ?String?str;
???????? ?int?i=0;
???????? ?FileReader?fr=new?FileReader(fc1.getSelectedFile());
???????? ?BufferedReader?br=new?BufferedReader(fr);
???????? ?while((str=br.readLine())!=null)
???????? ?{
???????? ?ss=ss+str+“\n“;
???????? ?s1[i]=(new?StringBuffer(str)).delete(13).toString();
???????? ?i++;
???????? ?}
???????? ?}
???????? ?catch(Exception?e1)
???????? ?{}?
???????? ?}?????
???????? ?ta.setText(ss);
?????????}
?????????else?if(e.getSource()==b2)
?????????{
???????? ?fc2=new?JFileChooser();
???????? ?if(fc2.showOpenDialog(f)==0)
???????? ?{
???????? ?try
???????? ?{
???????? ?FileReader?fr=new?FileReader(fc2.getSelectedFile());
???????? ?BufferedReader?br=new?BufferedReader(fr);
???????? ?s2=br.readLine();
???????? ?}
???????? ?catch(Exception?e1)
???????? ?{}???
???????? ?}
???????? ?tf.setText(s2);
?????????}
?????????else?if(e.getSource()==b3)
?????????{
???????? ?s3=““;
???????? ?ta1.setText(““);
???????? ?s2=tf.getText();
???????? ?String?[]st=ta.getText().split(“\n“);
???????? ?for(int?p=0;p ???????? ?{
???????? ?s1[p]=(new?StringBuffer(st[p])).delete(13).toString();
???????? ?}
???????? sb=new?StringBuffer(s2);
???????? ?for(int?j=0;j<100;j++)
???????? ?{
???????? ??sb1=sb.toString();
???????? ?if(j>=sb.length())
???????? ?{
???????? ?break;
???????? ?}
???????? ?char?a1=sb.toString().charAt(j);
???????? ?if((a1<=‘Z‘)&&(a1>=‘A‘))
???????? ?{
???????????? ?for(int?m=0;m ???????????? ?{
???????????? ?if(s1[m].charAt(0)==a1)
???????????? ?{
???????????? ?sb=sb.deleteCharAt(j);
???????????? ?sb=sb.insert(js1[m].substring(1));
????????????
評論
共有 條評論