public IScript Build(string script, Action <IExecutionContext> contextInitializer = null) { var inputStream = new AntlrInputStream(script); var lexer = new FSQLLexer(inputStream); var commonTokenStream = new CommonTokenStream(lexer); var parser = new FSQLParser(commonTokenStream); var examContext = parser.script(); var results = Visit(examContext); return(new FSQLScript(results as IExecutable, contextInitializer)); }
public IStatement Parse(string source) { var inputStream = new AntlrInputStream(source); var lexer = new FSQLLexer(inputStream); var commonTokenStream = new CommonTokenStream(lexer); var parser = new FSQLParser(commonTokenStream); IStatement results = new Unimplemented(source); var stmtContext = parser.statement(); //IProgramPart parseResults; try { results = Visit(stmtContext) as IStatement; if (results == null) { throw new SyntaxErrorException($"Could not parse '{source}'."); } } catch (Exception) { if (!source.StartsWith("@_ =")) { source = "@_ = " + source; if (!source.EndsWith(";")) { source = source + ";"; } results = Parse(source); } else { throw; } } return(results); }