private ScriptParser Build() { var parser = new ScriptParser(); _rules.ForEach(r => parser.AddRule(r.Item1, r.Item2)); if (_fallbackRule != null) parser.SetFallbackRule(_fallbackRule); return parser; }
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; }