public void Definitions_WithMinMaxVariants_GetCorrectMinMaxValues()
        {
            var grammar = new AdHocGrammar();

            grammar.DefineRule("rule1 := 'A'{3}").ToDisplayText(DisplayMode.Definition).Should().Be("rule1 := T<'A'>{3,3}");
            grammar.DefineRule("rule2 := 'A'{3,3}").ToDisplayText(DisplayMode.Definition).Should().Be("rule2 := T<'A'>{3,3}");
            grammar.DefineRule("rule3 := 'A'{3,}").ToDisplayText(DisplayMode.Definition).Should().Be("rule3 := T<'A'>{3,}");
        }
        private Parser <CstNode> CreateParser(params string[] ruleDefinitions)
        {
            var grammar = new AdHocGrammar();

            foreach (var ruleDefinition in ruleDefinitions)
            {
                grammar.DefineRule(ruleDefinition);
            }
            return(new Parser <CstNode>(grammar));
        }
Esempio n. 3
0
        public void EvaluatingGrammar_WithMockRule_RunsMockRule()
        {
            var mockRule = new MockRule("mock", MockRuleBehavior.Success);
            var grammar  = new AdHocGrammar();

            grammar.DefineRule("start", mockRule);
            grammar.StartWith("start");
            var lexer   = StaticLexer.FromWords();
            var opsMock = new RuleOperationsMock(new TokenStream(lexer).Start());

            var ruleRef = grammar.Start();
            var result  = opsMock.Evaluate(ruleRef).Result;

            result.IsSuccess.Should().BeTrue();
            mockRule.DidGrab.Should().BeTrue();
            result.Index.Index.Should().Be(0);
        }