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

📄 program.java

📁 this program use to show LL1
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
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 + -