Exemplo n.º 1
0
		public void Repurpose(string lookahead, AdvanceableRule r)
		{
			Clear();
			if(!r.Name.Equals(base.Name))
			  base.Name = r.Name;
			if(!lookahead.Equals(LookaheadSymbol))
				lookaheadSymbol = lookahead;
			for(int i = 0; i < r.Count; i++)
				Add(r[i]);
		}
Exemplo n.º 2
0
 protected virtual void PopulateSkipList()
 {
     for (int i = 0; i < TargetGrammar.Count; i++)
     {
         Rule            r   = TargetGrammar[i];
         AdvanceableRule rul = new AdvanceableRule(r.Name);
         for (int j = 0; j < r.Count; j++)
         {
             if (!r[j][0].Equals(r.Name))
             {
                 rul.Add(advProds[r[j]]);
             }
         }
         skipList.Add(r.Name, rul);
     }
 }
Exemplo n.º 3
0
 protected virtual void PopulateInitialListings()
 {
     for (int i = 0; i < TargetGrammar.Count; i++)
     {
         Rule r = TargetGrammar[i];
         if (!initialListing.ContainsKey(r))
         {
             var tmp = new AdvanceableRule(r.Name);
             for (int j = 0; j < r.Count; j++)
             {
                 tmp.Add(advProds[r[j]]);
             }
             initialListing.Add(r, tmp);
         }
     }
 }
Exemplo n.º 4
0
 protected virtual void PopulateNextCache()
 {
     for (int i = 0; i < TargetGrammar.Count; i++)
     {
         var r = initialListing[TargetGrammar[i]];
         for (int j = 0; j < r.Count; j++)
         {
             AdvanceableProduction prod = r[j];
             while (prod.HasNext)
             {
                 var tmp = prod.FunctionalNext();
                 advancementDict[prod] = tmp;
                 prod = tmp;
             }
             advancementDict[prod] = prod;
             terminates[prod]      = new AdvanceableRule(r.Name);
             terminates[prod].Add(prod);
         }
     }
 }
Exemplo n.º 5
0
		public LookaheadRule(string lookaheadSymbol, AdvanceableRule rule)
			: base(rule)
		{
			this.lookaheadSymbol = lookaheadSymbol;
		}