Пример #1
0
        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));
        }
Пример #2
0
        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.");
            }
        }
Пример #3
0
        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);
        }