示例#1
0
 public static IProductionRule Deliteralize(this IProductionRule rule, IOilexerGrammarProductionRuleEntry currentEntry, IList <IOilexerGrammarTokenEntry> availableStock, OilexerGrammarFile file, ICompilerErrorCollection errors)
 {
     if (rule.NeedsDeliteralized())
     {
         List <IProductionRuleItem> result = new List <IProductionRuleItem>();
         foreach (IProductionRuleItem ruleItem in rule)
         {
             IProductionRuleItem resultItem = null;
             if (ruleItem.NeedsDeliteralized())
             {
                 resultItem = ruleItem.Deliteralize(currentEntry, availableStock, file, errors);
             }
             else
             {
                 resultItem = ruleItem;
             }
             if (resultItem != null)
             {
                 result.Add(resultItem);
             }
         }
         if (result.Count == 0)
         {
             return(null);
         }
         return(new ProductionRule(result, rule.FileName, rule.Column, rule.Line, rule.Position));
     }
     else
     {
         return(rule);
     }
 }