📄 program.java
字号:
package untitled2;/** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2009</p> * <p>Company: </p> * @author not attributable * @version 1.0 */// JBuilder API Decompiler stub source generated from class file// May 9, 2009// -- implementation of methods is not availableimport java.util.*;import java.util.List;import java.io.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Program extends JFrame{//---------------------------------- List ruleList = new LinkedList(); List NullableNonTerminal = new LinkedList(); SortedSet BDW = new TreeSet(); SortedSet BW = new TreeSet(); SortedSet tempReflexive = new TreeSet(); SortedSet gramSymbols = new TreeSet();//---------------------------------- JScrollBar scrol= new JScrollBar(); JTextArea jTextArea1 = new JTextArea(); JTextArea jTextArea2 = new JTextArea(); //Label ash=new JLabel(new ImageIcon("images\\12.jpg")); //JLabel ash1=new JLabel(new ImageIcon("images\\11.jpg")); //JLabel ash2=new JLabel(new ImageIcon("images\\10.jpg")); //Label ash3=new JLabel(new ImageIcon("images\\14.gif")); //JLabel ash5=new JLabel(new ImageIcon("images\\16.gif")); //JLabel ash6=new JLabel(new ImageIcon("images\\3.gif")); //JLabel ash7=new JLabel(new ImageIcon("images\\4.gif")); JLabel ash4=new JLabel(); JLabel out=new JLabel(); public Program() { try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } private void jbInit() throws Exception { this.setDefaultCloseOperation(EXIT_ON_CLOSE); //this.setJMenuBar(jMenuBar1); this.setSize(new Dimension(500,480)); setResizable(false); setLocation(150,60); Image image1=Toolkit.getDefaultToolkit().getImage("images/home.png"); setIconImage(image1); jTextArea1.addKeyListener(new Program_jTextArea1_keyAdapter(this)); this.getContentPane().setLayout(null); this.setState(Frame.NORMAL); // this.setTitle("LL(1) Grammer Group(4)"); jTextArea1.setFont(new java.awt.Font("Serif", 1, 18)); jTextArea2.setFont(new java.awt.Font("Serif", 1, 14)); jScrollPane1.setBounds(new Rectangle(260,60,200,380)); jScrollPane2.setBounds(new Rectangle(50,60,150,180)); //jMenu1.setBackground(Color.gray); jMenu1.setDebugGraphicsOptions(0); jMenu1.setText(" File"); open.setText("Open"); open.addActionListener(new Program_open_actionAdapter(this)); jMenuItem2.setText("Save To File"); jMenuItem2.addActionListener(new Program_jMenuItem2_actionAdapter(this)); step_1.setBounds(new Rectangle(30,255,100,25)); step_1.setText("Step ( 1 )"); exit.addActionListener(new Program_exit_actionAdapter(this)); exit.setBounds(new Rectangle(30,405,200,25)); exit.setText("E x i t"); step_1.addActionListener(new Program_step_1_actionAdapter(this)); step_9.setText("Step ( 9 )"); step_9.addActionListener(new Program_step_9_actionAdapter(this)); step_9.setBounds(new Rectangle(130,305,100,25)); step_8.setText("Step ( 8 )"); step_8.addActionListener(new Program_step_8_actionAdapter(this)); step_8.setBounds(new Rectangle(130,280,100,25)); step_7.setText("Step ( 7 )"); step_7.addActionListener(new Program_step_7_actionAdapter(this)); step_7.setBounds(new Rectangle(130,255,100,25)); step_2.setText("Step ( 2 )"); step_2.addActionListener(new Program_step_2_actionAdapter(this)); step_2.setBounds(new Rectangle(30,280,100,25)); step_3.setText("Step ( 3 )"); step_3.addActionListener(new Program_step_3_actionAdapter(this)); step_3.setBounds(new Rectangle(30,305,100,25)); step_4.setText("Step ( 4 )"); step_4.addActionListener(new Program_step_4_actionAdapter(this)); step_4.setBounds(new Rectangle(30,330,100,25)); step_5.setText("Step ( 5 )"); step_5.addActionListener(new Program_step_5_actionAdapter(this)); step_5.setBounds(new Rectangle(30,355,100,25)); step_6.setText("Step ( 6 )"); step_6.addActionListener(new Program_step_6_actionAdapter(this)); step_6.setBounds(new Rectangle(30,380,100,25)); step_10.setText("Step ( 10 )"); step_10.addActionListener(new Program_step_10_actionAdapter(this)); step_10.setBounds(new Rectangle(130,330,100,25)); step_11.setText("Step ( 11 )"); step_11.addActionListener(new Program_step_11_actionAdapter(this)); step_11.setBounds(new Rectangle(130,355,100,25)); step_12.setBounds(new Rectangle(130,380,100,25)); step_12.setText("Step ( 12 )"); step_12.addActionListener(new Program_step_12_actionAdapter(this)); jTextArea1.setText(""); exit.addActionListener(new Program_exit_actionAdapter(this)); //tex1 = new JLabel("Please Insert The Rules /n Of Your Grammer /n Ex:A b , A $ "); //ash.setBounds(0,0,800,110);// ash1.setBounds(207,115,122,144);// ash2.setBounds(453,115,122,144); //ash3.setBounds(15,300,330,50); ash4.setBounds(30,20,200,50); out.setBounds(245,20,240,50);// ash5.setBounds(290,335,210,80);// ash6.setBounds(475,240,110,80);// ash7.setBounds(205,240,100,80); ash4.setFont(new java.awt.Font("Serif", 3, 16)); ash4.setText("Insert Your Grammer Here :"); ash4.setForeground (Color.blue); out.setFont(new java.awt.Font("Serif", 3, 16)); out.setForeground (Color.blue); out.setText("The Output Of LL(1) Grammer :"); //tex1.setBounds(10,110,100,25); this.getContentPane().add(jScrollPane2, null); //this.getContentPane().add(ash);// this.getContentPane().add(ash1); // this.getContentPane().add(ash2); //this.getContentPane().add(ash3); // this.getContentPane().add(ash5); // this.getContentPane().add(ash6); // this.getContentPane().add(ash7); this.getContentPane().add(ash4); this.getContentPane().add(out); jScrollPane2.getViewport().add(jTextArea1, null); jTextArea1.add(scrol); jMenuBar1.add(jMenu1); jMenu1.add(open); jMenu1.add(jMenuItem2); this.getContentPane().add(step_12, null); this.getContentPane().add(exit, null); this.getContentPane().add(step_2, null); this.getContentPane().add(step_5, null); this.getContentPane().add(step_4, null); this.getContentPane().add(step_3, null); this.getContentPane().add(step_11, null); this.getContentPane().add(step_6, null); this.getContentPane().add(step_8, null); this.getContentPane().add(step_10, null); this.getContentPane().add(step_1, null); this.getContentPane().add(step_9, null); this.getContentPane().add(step_7, null); this.getContentPane().add(jScrollPane1, null); jScrollPane1.getViewport().add(jTextArea2, null); step_1.setEnabled(true);step_2.setEnabled(false); step_3.setEnabled(false);step_4.setEnabled(false); step_5.setEnabled(false);step_6.setEnabled(false); step_7.setEnabled(false);step_8.setEnabled(false); step_9.setEnabled(false);step_10.setEnabled(false); step_11.setEnabled(false);step_12.setEnabled(false);// ash6.setVisible(false); //jTextArea2.setEnabled(false); exit.setForeground (Color.red); jTextArea1.setForeground (Color.red); jScrollPane1.setVisible(false); out.setVisible(false); }//------------------------------------------------------------------------------ public void GetRules() { ruleList.clear(); StringTokenizer doc =new StringTokenizer(jTextArea1.getText(),"\n"); StringTokenizer line; List rightList = new LinkedList(); String symbol; int ruleIndex = 0; try { while(doc.hasMoreTokens()) { line=new StringTokenizer(doc.nextToken()," "); NonTerminal nt = new NonTerminal(line.nextToken()); while(line.hasMoreTokens()) { symbol = line.nextToken(); char ch = symbol.charAt(0); if( Character.isUpperCase(ch)) rightList.add(new NonTerminal(symbol)); else rightList.add(new Terminal(symbol)); } Rule rule = new Rule(nt); rule.rightSide.addAll(rightList); rule.ruleIndex = ruleIndex; ruleIndex++; ruleList.add(rule); rightList.clear(); } } catch(IndexOutOfBoundsException exe) { System.out.print("exeption " +exe.getMessage()); } ListIterator tr = ruleList.listIterator(); while(tr.hasNext()) { System.out.print(" the rule \n "); Rule rr = (Rule)tr.next(); ListIterator tt = rr.rightSide.listIterator(); while(tt.hasNext()) { Symbol s = (Symbol)tt.next(); System.out.println(s.strSymbol); } } }//------------------------------------------------------------------------------ public void setNullableRule() { ListIterator lIter = ruleList.listIterator(); while(lIter.hasNext()) { Rule r = (Rule) lIter.next(); ListIterator rightLIter = r.rightSide.listIterator(); if(rightLIter.hasNext()) { Symbol s = (Symbol) rightLIter.next(); char ch = s.strSymbol.charAt(0); if(ch == '$') { r.nullable=true; NullableNonTerminal.add(r.leftSide); } } } }//------------------------------------------------------------------------------ public void step1() { ListIterator lIter = ruleList.listIterator(); boolean flage = false ; while(lIter.hasNext()) { Rule r = (Rule) lIter.next(); ListIterator rightLIter = r.rightSide.listIterator(); if(rightLIter.hasNext()) { Symbol s = (Symbol) rightLIter.next(); char ch = s.strSymbol.charAt(0); if(ch == '$') { r.nullable=true; NullableNonTerminal.add(r.leftSide); flage = true ; } } } if(!flage) { jTextArea2.append("Step ( 1 ) \nThe nullable Rules :-\n"); jTextArea2.append("\n None \n"); }else { lIter = ruleList.listIterator(0); jTextArea2.append("Step ( 1 ) \nThe nullable Rules :\n "); while(lIter.hasNext()) { Rule r = (Rule)lIter.next(); //System.out.println(r.toString()); if(r.nullable) { jTextArea2.append(r.toString()); } } } }//------------------------------------------------------------------------------ public void FindBDW(List myRuleList) { Symbol first; ListIterator li = myRuleList.listIterator(0); while(li.hasNext()) { Rule r = (Rule) li.next(); if(!r.nullable) { Rule tempRule = new Rule(r.leftSide); first = (Symbol) r.rightSide.get(0); tempRule.rightSide.add(first); BDW.add(tempRule); } } ListIterator lIter = myRuleList.listIterator(0); while(lIter.hasNext()) { Rule tempRule2 = (Rule) lIter.next(); Symbol firstTemp = (Symbol) tempRule2.rightSide.get(0); if(NullableNonTerminal.contains(firstTemp)) { tempRule2.rightSide.remove(0); FindBDW(myRuleList); } } } public void out(){ Iterator ll = BDW.iterator(); while(ll.hasNext()) { Rule rr = (Rule)ll.next(); //System.out.println(rr.toString()); } }//------------------------------------------------------------------------------ public void step2() { jTextArea2.append("\n======================= \nStep ( 2 ):"); FindBDW(ruleList); StringBuffer sb = new StringBuffer(); Iterator iter = BDW.iterator(); sb.append("\n"); while(iter.hasNext()) { Rule r = (Rule) iter.next(); sb.append(r.leftSide.toString()) ; sb.append(" BDW "); sb.append(r.rightSide.get(0).toString()); sb.append("\n"); } jTextArea2.append(sb.toString()); }//------------------------------------------------------------------------------ public void step3() { //=====Add the set of BDW in BW set BW.addAll(BDW); //System.out.println(BW.toString()); //============================================== //=====Find the Transitive Relation StringBuffer tsb = new StringBuffer(); tsb.append("\n"); Iterator iter = BDW.iterator(); while(iter.hasNext()) { Rule r = (Rule) iter.next(); Symbol rightSymbol = (Symbol) r.rightSide.get(0); Iterator iter2 = BDW.iterator(); while(iter2.hasNext()) { Rule r2 = (Rule) iter2.next(); Symbol leftSymbol = (Symbol) r2.leftSide; if(rightSymbol.strSymbol.matches(leftSymbol.strSymbol)) { Rule tempRule = new Rule(r.leftSide); tempRule.rightSide = r2.rightSide; tsb.append(r.leftSide.strSymbol); tsb.append(" BW "); tsb.append(r2.rightSide.get(0).toString()); tsb.append("\n"); BW.add(tempRule); } } } //System.out.println(BW.toString()); //=============Find the Reflexive Relation Iterator iter3 = BW.iterator(); while(iter3.hasNext()) { Rule r3 = (Rule) iter3.next(); Rule leftTemp = new Rule(r3.leftSide); leftTemp.rightSide.add(r3.leftSide); Rule rightTemp = new Rule((Symbol )r3.rightSide.get(0)); rightTemp.rightSide.add(r3.rightSide.get(0)); tempReflexive.add(leftTemp); tempReflexive.add(rightTemp); } BW.addAll(tempReflexive); //System.out.println(BW.toString()); //============Write the Result jTextArea2.append("\n======================= \nStep ( 3 ) :"); jTextArea2.append("\nFrom BDW"); StringBuffer sb = new StringBuffer(); Iterator iter4 = BDW.iterator(); sb.append("\n"); while(iter4.hasNext()) { Rule r = (Rule) iter4.next(); sb.append(r.leftSide.toString()) ; sb.append(" BW "); sb.append(r.rightSide.get(0).toString()); sb.append("\n"); } jTextArea2.append(sb.toString()); jTextArea2.append("\nTransitive"); jTextArea2.append(tsb.toString()); StringBuffer rsb = new StringBuffer(); Iterator iter5 = tempReflexive.iterator(); rsb.append("\n"); while(iter5.hasNext()) { Rule r = (Rule) iter5.next(); rsb.append(r.leftSide.toString()) ; rsb.append(" BW "); rsb.append(r.rightSide.get(0).toString()); rsb.append("\n"); } jTextArea2.append("\nReflexive"); jTextArea2.append(rsb.toString()); }//------------------------------------------------------------------------------ public void step4() { //===========collect the grammar symbols in a collection jTextArea2.append("\n======================= \nStep ( 4 ) :"); Iterator iter = BW.iterator(); while(iter.hasNext()) { Rule r = (Rule) iter.next(); Rule tempRule = new Rule(); tempRule.leftSide = r.leftSide; gramSymbols.add(tempRule); } gramSymbols.addAll(gramSymbols); //System.out.println(gramSymbols.toString()); Iterator iter2 = gramSymbols.iterator(); while(iter2.hasNext()) { Rule r = (Rule) iter2.next(); Iterator iter3 = BW.iterator(); while(iter3.hasNext()) { Rule r2 = (Rule) iter3.next(); if(r2.leftSide.strSymbol.matches(r.leftSide.strSymbol))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -