Example #1
0
            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);
                }
            }
Example #2
0
            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;
            }