private ScriptParser Build()
            {
                var parser = new ScriptParser();

                _rules.ForEach(r => parser.AddRule(r.Item1, r.Item2));
                if (_fallbackRule != null)
                    parser.SetFallbackRule(_fallbackRule);

                return parser;
            }
Beispiel #2
0
        private static IScriptParserConsumer CreateParser()
        {
            var parser = new ScriptParser();

            parser.AddRule(ScriptConstants.Blocks.Catalog, txt => new CatalogBlock(txt));
            parser.AddRule(ScriptConstants.Blocks.Options, txt => new OptionsBlock(txt));
            parser.AddRule(ScriptConstants.Blocks.Need, txt => new NeedBlock(txt));
            parser.AddRule(ScriptConstants.Blocks.Ignore, txt => new IgnoreScriptBlock(txt));
            parser.AddRule(ScriptConstants.Blocks.Pre, txt => new SqlCommandBlock(ScriptConstants.Blocks.Pre, txt, SqlScriptPhase.Pre));
            parser.AddRule(ScriptConstants.Blocks.Main, txt => new SqlCommandBlock(ScriptConstants.Blocks.Main, txt, SqlScriptPhase.Main));
            parser.AddRule(ScriptConstants.Blocks.Post, txt => new SqlCommandBlock(ScriptConstants.Blocks.Post, txt, SqlScriptPhase.Post));

            parser.SetFallbackRule((kw, txt) => new UnexpectedBlock(kw, txt));

            return parser;
        }