Example #1
0
        /// <summary>
        /// Evaluates the expressions in a Pegasus <see cref="Grammar"/> to determine which of them contain assertions.
        /// </summary>
        /// <param name="grammar">The <see cref="Grammar"/> to evaluate.</param>
        /// <returns>A <see cref="Dictionary{TKey, TValue}"/> detailing the whether each expression in the grammar contains assertions.</returns>
        public static Dictionary <Expression, bool> Evaluate(Grammar grammar)
        {
            var containsAssertions = new Dictionary <Expression, bool?>();
            var walker             = new ContainsAssertionsWalker(grammar, containsAssertions);

            do
            {
                walker.WalkGrammar(grammar);
            }while (walker.Changed);

            return(containsAssertions.ToDictionary(x => x.Key, x => x.Value ?? false));
        }
        /// <summary>
        /// Evaluates the expressions in a Pegasus <see cref="Grammar"/> to determine which of them contain assertions.
        /// </summary>
        /// <param name="grammar">The <see cref="Grammar"/> to evaluate.</param>
        /// <returns>A <see cref="Dictionary{TKey, TValue}"/> detailing the whether each expression in the grammar contains assertions.</returns>
        public static Dictionary<Expression, bool> Evaluate(Grammar grammar)
        {
            var containsAssertions = new Dictionary<Expression, bool?>();
            var walker = new ContainsAssertionsWalker(grammar, containsAssertions);

            do
            {
                walker.WalkGrammar(grammar);
            }
            while (walker.Changed);

            return containsAssertions.ToDictionary(x => x.Key, x => x.Value ?? false);
        }