Пример #1
0
        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);
            }
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }