示例#1
0
 public nonTerminalNode(string nam,nonTerminals nonTerminal)
 {
     nonTerms=nonTerminal;
     lawLink = new Laws(this);
     next=null;
     item.Name=nam;
 }
示例#2
0
 public nonTerminals(ParsHead PH)
 {
     this.parent = PH;
     first=null;
 }
示例#3
0
 public void checkAdd(string nonTerm,int lawNum)
 {
     try
     {
         nonTerminalNode thisNode=null;
         string []part=nonTerm.Split(' ');
         string NonTerm=part[0].Substring(1,part[0].Length-1);
         nonTerminalNode temp;
         if(first==null)
         {
             first = new nonTerminalNode(nonTerminals.ExtraNonTerm,this);
             first.lawLink.add(0,nonTerminals.ExtraNonTerm+" #"+NonTerm);
             this.checkAdd(nonTerm,lawNum);
             return;
         }
         else
         {
             temp=first;
             while(temp.next!=null)
             {
                 if(temp.item.Name==NonTerm)
                 {
                     thisNode=temp;
                     break;
                 }
                 temp=temp.next;
             }
             if(thisNode==null)
             {
                 if(temp.item.Name!=NonTerm)
                 {
                     temp.next = new nonTerminalNode(NonTerm,this);
                     thisNode=temp.next;
                     count++;
                 }
                 else
                     thisNode=temp;
             }
         }
         thisNode.lawLink.add(lawNum,nonTerm);
     }
     catch(Exception e1)
     {
         MessageBox.Show("in nonTerminals.CheckAdd : "+e1.Message);
     }
 }
示例#4
0
 //...............................
 public Laws(nonTerminalNode parentNonTerm)
 {
     first=null;
     lawsCount=0;
     this.parent=parentNonTerm;
 }