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)); }
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); }