Example #1
0
        public void TokenizerLowercasesAndCamelCasesInput(string text, TokenAttributes[] expected)
        {
            // arrange, act
            var actual = new IdentifierAnalyzer().Tokenize(text);

            // assert
            Assert.Equal(expected, actual);
        }
Example #2
0
        internal IdentifierAnalyzer ParseIdentifiers(string expression)
        {
            ExpressionParser parser = this.IdentifierParser;
            StringReader     sr     = new StringReader(expression);

            parser.Reset(sr);
            parser.Tokenizer.Reset(sr);

            IdentifierAnalyzer analyzer = (IdentifierAnalyzer)parser.Analyzer;

            analyzer.Reset();

            parser.Parse();

            return((IdentifierAnalyzer)parser.Analyzer);
        }
Example #3
0
        private ExpressionContext ParseAndLink(string expressionName, string expression)
        {
            IdentifierAnalyzer analyzer = Context.ParseIdentifiers(expression);

            ExpressionContext context2 = _myContext.CloneInternal(true);

            this.LinkExpression(expressionName, context2, analyzer);

            // Tell the expression not to clone the context since it's already been cloned
            context2.NoClone = true;

            // Clear our context's variables
            _myContext.Variables.Clear();

            return(context2);
        }
Example #4
0
        internal IdentifierAnalyzer ParseIdentifiers(string expression)
        {
            ExpressionParser parser = this.IdentifierParser;
            StringReader     sr     = new StringReader(expression);

            parser.Reset(sr);
            parser.Tokenizer.Reset(sr);

            IdentifierAnalyzer analyzer = (IdentifierAnalyzer)parser.Analyzer;

            analyzer.Reset();

            try
            {
                parser.Parse();
            }
            catch (ParserLogException ex)
            {
                // Syntax error; wrap it in our exception and rethrow
                throw new ExpressionCompileException(ex);
            }

            return((IdentifierAnalyzer)parser.Analyzer);
        }
Example #5
0
        private ICollection <string> GetReferences(string expression, ExpressionContext context)
        {
            IdentifierAnalyzer analyzer = context.ParseIdentifiers(expression);

            return(analyzer.GetIdentifiers(context));
        }
Example #6
0
 private void LinkExpression(string expressionName, ExpressionContext context, IdentifierAnalyzer analyzer)
 {
     foreach (string identifier in analyzer.GetIdentifiers(context))
     {
         this.LinkIdentifier(identifier, expressionName, context);
     }
 }
Example #7
0
 private void LinkExpression(string expressionName, ExpressionContext context, IdentifierAnalyzer analyzer)
 {
     analyzer.GetIdentifiers(context).Each(i => this.LinkIdentifier(i, expressionName, context));
 }