Exemplo n.º 1
0
        public DotGraph <TVertexId> Parse(TextReader reader)
        {
            var antlrStream = new ANTLRReaderStream(reader);
            var lexer       = new DotGrammarLexer(antlrStream);
            var tokenStream = new CommonTokenStream(lexer);
            var parser      = new DotGrammarParser(tokenStream);

            parser.Builder = builder;
            parser.dot();
            return(builder.DotGraph);
        }
Exemplo n.º 2
0
        /** Load full path name .st file relative to root by prefix */
        public virtual CompiledTemplate LoadTemplateFile(string prefix, string fileName)
        {
            if (Path.IsPathRooted(fileName))
            {
                throw new ArgumentException();
            }

            //System.out.println("load "+fileName+" from "+root+" prefix="+prefix);
            string templateName = Path.ChangeExtension(fileName, null);
            Uri    f            = null;

            try
            {
                f = new Uri(Path.Combine(root.LocalPath, fileName));
            }
            catch (UriFormatException me)
            {
                ErrorManager.RuntimeError(null, 0, ErrorType.INVALID_TEMPLATE_NAME, me, Path.Combine(root.LocalPath, fileName));
                return(null);
            }

            ANTLRReaderStream fs = null;

            try
            {
                fs = new ANTLRReaderStream(new StreamReader(f.LocalPath, Encoding ?? Encoding.UTF8));
            }
            catch (IOException)
            {
                // doesn't exist; just return null to say not found
                return(null);
            }

            GroupLexer lexer = new GroupLexer(fs);

            fs.name = fileName;
            CommonTokenStream tokens = new CommonTokenStream(lexer);
            GroupParser       parser = new GroupParser(tokens);

            parser.Group = this;
            lexer.group  = this;
            try
            {
                parser.templateDef(prefix);
            }
            catch (RecognitionException re)
            {
                ErrorManager.GroupSyntaxError(ErrorType.SYNTAX_ERROR, Path.GetFileName(f.LocalPath), re, re.Message);
            }

            return(RawGetTemplate(templateName));
        }
Exemplo n.º 3
0
 public static void Main(string[] args)
 {
     try
     {
         ICharStream       input  = new ANTLRReaderStream(System.Console.In);
         ExprLexer         lexer  = new ExprLexer(input);
         CommonTokenStream tokens = new CommonTokenStream(lexer);
         ExprParser        parser = new ExprParser(tokens);
         parser.prog();
     }
     catch (System.Exception e)
     {
         Console.Error.WriteLine("exception: " + e);
         Console.Error.WriteLine(e.StackTrace);
     }
 }
Exemplo n.º 4
0
        public static void Main(string[] args)
        {
            ICharStream input;

            if (args.Length > 0)
            {
                input = new ANTLRFileStream(args[0]);
            }
            else
            {
                input = new ANTLRReaderStream(Console.In);
            }

            // BUILD AST
            PolyLexer         lex    = new PolyLexer(input);
            CommonTokenStream tokens = new CommonTokenStream(lex);
            PolyParser        parser = new PolyParser(tokens);

            PolyParser.poly_return r = parser.poly();
            Console.Out.WriteLine("tree=" + ((ITree)r.Tree).ToStringTree());

            // DIFFERENTIATE
            CommonTreeNodeStream nodes = new CommonTreeNodeStream(r.Tree);

            nodes.TokenStream = tokens;
            PolyDifferentiator differ = new PolyDifferentiator(nodes);

            PolyDifferentiator.poly_return r2 = differ.poly();
            Console.Out.WriteLine("d/dx=" + ((ITree)r2.Tree).ToStringTree());

            // SIMPLIFY / NORMALIZE
            nodes             = new CommonTreeNodeStream(r2.Tree);
            nodes.TokenStream = tokens;
            Simplifier reducer = new Simplifier(nodes);

            Simplifier.poly_return r3 = reducer.poly();
            Console.Out.WriteLine("simplified=" + ((ITree)r3.Tree).ToStringTree());

            // CONVERT BACK TO POLYNOMIAL
            nodes             = new CommonTreeNodeStream(r3.Tree);
            nodes.TokenStream = tokens;
            PolyPrinter printer = new PolyPrinter(nodes);

            PolyPrinter.poly_return r4 = printer.poly();
            Console.Out.WriteLine(r4.ST);
        }
Exemplo n.º 5
0
        /** Load full path name .st file relative to root by prefix */
        public virtual CompiledTemplate LoadTemplateFile(string prefix, string unqualifiedFileName)
        {
            if (Path.IsPathRooted(unqualifiedFileName))
            {
                throw new ArgumentException();
            }

            if (Verbose)
            {
                Console.WriteLine("loadTemplateFile({0}) in groupdir from {1} prefix={2}", unqualifiedFileName, root, prefix);
            }

            string templateName = Path.ChangeExtension(unqualifiedFileName, null);
            Uri    f;

            try
            {
                f = new Uri(root.LocalPath + prefix + unqualifiedFileName);
            }
            catch (UriFormatException me)
            {
                ErrorManager.RuntimeError(null, ErrorType.INVALID_TEMPLATE_NAME, me, Path.Combine(root.LocalPath, unqualifiedFileName));
                return(null);
            }

            ANTLRReaderStream fs = null;

            try
            {
                fs      = new ANTLRReaderStream(new StreamReader(File.OpenRead(f.LocalPath), Encoding));
                fs.name = unqualifiedFileName;
            }
            catch (IOException)
            {
                if (Verbose)
                {
                    Console.WriteLine("{0}/{1} doesn't exist", root, unqualifiedFileName);
                }

                //errMgr.IOError(null, ErrorType.NO_SUCH_TEMPLATE, ioe, unqualifiedFileName);
                return(null);
            }

            return(LoadTemplateFile(prefix, unqualifiedFileName, fs));
        }
 public override void LoadGroupFile(string prefix, string fileName)
 {
     try
     {
         ANTLRReaderStream antlrReaderStream = new ANTLRReaderStream((TextReader) new StreamReader(new Uri(fileName).LocalPath, this.Encoding));
         GroupLexer        groupLexer        = new GroupLexer((ICharStream)antlrReaderStream);
         antlrReaderStream.name = fileName;
         new GroupParser((ITokenStream) new CommonTokenStream((ITokenSource)groupLexer)).group(this, prefix);
     }
     catch (Exception ex)
     {
         ExceptionExtensions.PreserveStackTrace(ex);
         if (!ExceptionExtensions.IsCritical(ex))
         {
             this.ErrorManager.IOError((Template)null, ErrorType.CANT_LOAD_GROUP_FILE, ex, (object)fileName);
         }
         throw;
     }
     base.LoadGroupFile(prefix, fileName);
 }
Exemplo n.º 7
0
        /** Load a group file with full path fileName; it's relative to root by prefix. */
        public virtual void LoadGroupFile(string prefix, string fileName)
        {
            //System.out.println("load group file prefix="+prefix+", fileName="+fileName);
            GroupParser parser = null;

            try
            {
                Uri f = new Uri(fileName);
                ANTLRReaderStream fs    = new ANTLRReaderStream(new System.IO.StreamReader(f.LocalPath, Encoding ?? Encoding.UTF8));
                GroupLexer        lexer = new GroupLexer(fs);
                fs.name = fileName;
                CommonTokenStream tokens = new CommonTokenStream(lexer);
                parser = new GroupParser(tokens);
                parser.group(this, prefix);
            }
            catch (Exception e)
            {
                ErrorManager.IOError(null, ErrorType.CANT_LOAD_GROUP_FILE, e, fileName);
            }
        }
Exemplo n.º 8
0
        public static void Main(string[] args)
        {
            ICharStream input;
            if ( args.Length>0 ) {
            input = new ANTLRFileStream(args[0]);
            }
            else {
            input = new ANTLRReaderStream(Console.In);
            }

            // BUILD AST
            PolyLexer lex = new PolyLexer(input);
            CommonTokenStream tokens = new CommonTokenStream(lex);
            PolyParser parser = new PolyParser(tokens);
            PolyParser.poly_return r = parser.poly();
            Console.Out.WriteLine("tree="+((ITree)r.Tree).ToStringTree());

            // DIFFERENTIATE
               	CommonTreeNodeStream nodes = new CommonTreeNodeStream(r.Tree);
            nodes.TokenStream = tokens;
            PolyDifferentiator differ = new PolyDifferentiator(nodes);
            PolyDifferentiator.poly_return r2 = differ.poly();
            Console.Out.WriteLine("d/dx="+((ITree) r2.Tree).ToStringTree());

            // SIMPLIFY / NORMALIZE
               	nodes = new CommonTreeNodeStream(r2.Tree);
            nodes.TokenStream = tokens;
            Simplifier reducer = new Simplifier(nodes);
            Simplifier.poly_return r3 = reducer.poly();
            Console.Out.WriteLine("simplified="+((ITree) r3.Tree).ToStringTree());

            // CONVERT BACK TO POLYNOMIAL
               	nodes = new CommonTreeNodeStream(r3.Tree);
            nodes.TokenStream = tokens;
            PolyPrinter printer = new PolyPrinter(nodes);
            PolyPrinter.poly_return r4 = printer.poly();
            Console.Out.WriteLine(r4.ST);
        }
Exemplo n.º 9
0
        public static object LinqToQuerystring(this IQueryable query, Type inputType, Context context, string queryString = "", bool forceDynamicProperties = false, int maxPageSize = -1)
        {
            var queryResult      = query;
            var constrainedQuery = query;

            if (query == null)
            {
                throw new ArgumentNullException("query", "Query cannot be null");
            }

            if (queryString == null)
            {
                throw new ArgumentNullException("queryString", "Query String cannot be null");
            }

            if (queryString.StartsWith("?"))
            {
                queryString = queryString.Substring(1);
            }

            var odataQueries = queryString.Split('&').Where(o => o.StartsWith("$")).ToList();

            if (maxPageSize > 0)
            {
                var top = odataQueries.FirstOrDefault(o => o.StartsWith("$top"));
                if (top != null)
                {
                    int pagesize;
                    if (!int.TryParse(top.Split('=')[1], out pagesize) || pagesize >= maxPageSize)
                    {
                        odataQueries.Remove(top);
                        odataQueries.Add("$top=" + maxPageSize);
                    }
                }
                else
                {
                    odataQueries.Add("$top=" + maxPageSize);
                }
            }

            var odataQuerystring = Uri.UnescapeDataString(string.Join("&", odataQueries.ToArray()));

            var input     = new ANTLRReaderStream(new StringReader(odataQuerystring));
            var lexer     = new LinqToQuerystringLexer(input);
            var tokStream = new CommonTokenStream(lexer);

            var parser = new LinqToQuerystringParser(tokStream)
            {
                TreeAdaptor = new TreeNodeFactory(inputType, context, forceDynamicProperties)
            };

            var result = parser.prog();

            var singleNode = result.Tree as TreeNode;

            if (singleNode != null && !(singleNode is IdentifierNode))
            {
                if (!(singleNode is SelectNode) && !(singleNode is InlineCountNode))
                {
                    BuildQuery(singleNode, ref queryResult, ref constrainedQuery, context);
                    return(constrainedQuery);
                }

                if (singleNode is SelectNode)
                {
                    return(ProjectQuery(constrainedQuery, singleNode));
                }

                return(PackageResults(queryResult, constrainedQuery));
            }

            var tree = result.Tree as CommonTree;

            if (tree != null)
            {
                var children = tree.Children.Cast <TreeNode>().ToList();
                children.Sort();

                // These should always come first
                foreach (var node in children.Where(o => !(o is SelectNode) && !(o is InlineCountNode)))
                {
                    BuildQuery(node, ref queryResult, ref constrainedQuery, context);
                }

                var selectNode = children.FirstOrDefault(o => o is SelectNode);
                if (selectNode != null)
                {
                    constrainedQuery = ProjectQuery(constrainedQuery, selectNode);
                }

                var inlineCountNode = children.FirstOrDefault(o => o is InlineCountNode);
                if (inlineCountNode != null)
                {
                    return(PackageResults(queryResult, constrainedQuery));
                }
            }

            return(constrainedQuery);
        }