public void VisitExtensibleRule(ExtensibleRule extensibleRule) { var rewrite = extensibleRule.GetAttributes().Any(a => a.Name == "RewriteRecursion"); if (rewrite) { RuleAlternativesInfo info; if (!_info.TryGetValue(extensibleRule.Name, out info)) { _info.Add(extensibleRule.Name, info = new RuleAlternativesInfo()); } info.AddInfo(extensibleRule); } }
public RuleAlternativeInfo(ExtensibleRuleAlternativeInfo info, Rule rootRule, RuleAlternativesInfo alts) { var association = Association.Left; if (info.Rule.GetAttributes().Any(a => a.Name.ToLower() == "left")) { association = Association.Left; } if (info.Rule.GetAttributes().Any(a => a.Name.ToLower() == "right")) { association = Association.Right; } this.Association = association; this.Rule = info.Rule; this.RootRule = rootRule; this.AlternativesInfo = alts; this.AlternativeInfo = info; }