Example #1
0
        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));
        }
Example #2
0
        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);
        }