Esempio n. 1
0
        internal static RuleExpression GetRuleSetAttributeArgument(this GrammarNavigator nav, string attributeName, bool required = true)
        {
            var attr = nav.GetAttributes().FirstOrDefault(a => a.Name == attributeName);

            if (attr == null)
            {
                if (required)
                {
                    throw new InvalidOperationException(string.Format("Attribute [{0}] not found on rule set [{1}]!", attributeName, nav.CurrPath));
                }
                else
                {
                    return(null);
                }
            }

            //if (attr.Arguments.Count != 1 || !(attr.Arguments.First() is RuleExpression.RuleUsage))
            if (attr.Arguments.Count != 1)
            {
                throw new InvalidOperationException(string.Format("Attribute [{0}] arguments is invalid on rule set [{1}]!", attributeName, nav.CurrPath));
            }

            var expression = attr.Arguments.First();

            return(expression);
        }
Esempio n. 2
0
        // IndentedWriter _log = new IndentedWriter();

        private AnalyzerGraphBuilder(string rootRuleSetName, RuleSet[] ruleSets)
        {
            _ruleSets        = ruleSets;
            _rootRuleSetName = rootRuleSetName;

            _expressionsVisitor = new RuleExpressionLoggingVisitor(this);
            _nav = new GrammarNavigator(ruleSets);
        }