public static Expression Parse(Stream stream, IFunctionRepository functionRepository) { if (stream == null) { throw new ArgumentNullException(nameof(stream)); } if (functionRepository == null) { throw new ArgumentNullException(nameof(functionRepository)); } var scanner = new JmesPathScanner(stream); scanner.InitializeLookaheadQueue(); var analyzer = new JmesPathParser(scanner, functionRepository); if (!analyzer.Parse()) { System.Diagnostics.Debug.Assert(false); throw new Exception("Error: syntax."); } // perform post-parsing syntax validation var syntax = new SyntaxVisitor(); analyzer.Expression.Accept(syntax); return(new Expression(analyzer.Expression)); }
public static void Parse(Stream stream, Encoding encoding, IJmesPathGenerator generator) { var scanner = new JmesPathScanner(stream, encoding.CodePage.ToString()); scanner.InitializeLookaheadQueue(); var analyzer = new JmesPathParser(scanner, generator); if (!analyzer.Parse()) { System.Diagnostics.Debug.Assert(false); throw new Exception("Error: syntax."); } }
public Expression Parse(Stream stream) { var scanner = new JmesPathScanner(stream); scanner.InitializeLookaheadQueue(); var analyzer = new JmesPathParser(scanner, repository_); if (!analyzer.Parse()) { System.Diagnostics.Debug.Assert(false); throw new Exception("Error: syntax."); } // perform post-parsing syntax validation var syntax = new SyntaxVisitor(); analyzer.Expression.Accept(syntax); return new Expression(analyzer.Expression); }