public void Check() { var grammar = AmbiGrammar.Create(); var plumber = new GrammarPlumber(grammar); plumber.Dump(Console.Out); var engine = new EarleyEngine(grammar); var driver = new EarleyDriver(engine, "......"); while (driver.Next()) { Debug.Assert(true); } }
private EarleyEngine MakeEngine() { RuleExpr argument = "argument"; RuleExpr argumentList = "argument-list"; RuleExpr atom = "atom"; argument.Body = atom; argumentList.Body = argument | (argumentList + ',' + argument); atom.Body = 'a'; var grammar = new GrammarBuilder().From(argumentList); var engine = new EarleyEngine(grammar); return(engine); }
private void Check1() { RuleExpr argument = "argument"; RuleExpr argumentList = "argument-list"; RuleExpr atom = "atom"; var name = TerminalExpr.From(DfaProvision.From("name", 'n')); var number = TerminalExpr.From(DfaProvision.From("number", '1')); argument.Body = atom; argumentList.Body = argument | (argumentList + ',' + argument); atom.Body = name | number; var grammar = new GrammarBuilder().From(argumentList); var engine = new EarleyEngine(grammar); engine.Pulse(XToken.Name); engine.Pulse(XToken.Comma); engine.Pulse(XToken.Number); }