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); }
/** 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)); }
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); } }
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); }
/** 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); }
/** 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); } }
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); }
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); }