Esempio n. 1
0
        public static FNodeSet ParseFNodeSet(string Text, MemoryStruct LocalHeap, Workspace Home, string Alias, Schema Columns, Register Memory)
        {

            // Build text stream //
            AntlrInputStream ais = new AntlrInputStream(Text);
            HScriptLexer lex = new HScriptLexer(ais);

            // Build token tree //
            CommonTokenStream cts = new CommonTokenStream(lex);
            HScriptParser par = new HScriptParser(cts);

            // Build AST //
            IParseTree tree = par.expression_alias_list();
            if (tree == null)
                tree = par.expression_or_wildcard_set();
            
            // Visit each node getting the final node //
            ExpressionVisitor v = new ExpressionVisitor(LocalHeap, Home);
            v.AddSchema(Alias, Columns, Memory);

            if (tree is HScriptParser.Expression_or_wildcard_setContext)
            {
                HScriptParser.Expression_or_wildcard_setContext a = tree as HScriptParser.Expression_or_wildcard_setContext;
                return VisitorHelper.GetReturnStatement(v, a);
            }
            else if (tree is HScriptParser.Expression_alias_listContext)
            {
                HScriptParser.Expression_alias_listContext b = tree as HScriptParser.Expression_alias_listContext;
                return v.ToNodes(b);
            }

            throw new Exception("Expression is not an expression set: " + Text);

        }