NCalcParser.ncalcExpression C# (CSharp) Method

ncalcExpression() public method

public ncalcExpression ( ) : NCalcParser.ncalcExpression_return,
return NCalcParser.ncalcExpression_return,
    public NCalcParser.ncalcExpression_return ncalcExpression()
    {
        NCalcParser.ncalcExpression_return retval = new NCalcParser.ncalcExpression_return();
        retval.Start = input.LT(1);

        CommonTree root_0 = null;

        IToken EOF2 = null;
        NCalcParser.logicalExpression_return logicalExpression1 = null;

        CommonTree EOF2_tree=null;

        try
        {
            // C:\\Users\\s.ros\\Documents\\Développement\\NCalc\\Grammar\\NCalc.g:78:2: ( logicalExpression EOF )
            // C:\\Users\\s.ros\\Documents\\Développement\\NCalc\\Grammar\\NCalc.g:78:4: logicalExpression EOF
            {
                root_0 = (CommonTree)adaptor.GetNilNode();

                PushFollow(FOLLOW_logicalExpression_in_ncalcExpression56);
                logicalExpression1 = logicalExpression();
                state.followingStackPointer--;

                adaptor.AddChild(root_0, logicalExpression1.Tree);
                EOF2=(IToken)Match(input,EOF,FOLLOW_EOF_in_ncalcExpression58);
                retval.value =  ((logicalExpression1 != null) ? logicalExpression1.value : null);

            }

            retval.Stop = input.LT(-1);

                retval.Tree = (CommonTree)adaptor.RulePostProcessing(root_0);
                adaptor.SetTokenBoundaries(retval.Tree, (IToken) retval.Start, (IToken) retval.Stop);
        }
        catch (RecognitionException re)
        {
            ReportError(re);
            Recover(input,re);
        // Conversion of the second argument necessary, but harmless
        retval.Tree = (CommonTree)adaptor.ErrorNode(input, (IToken) retval.Start, input.LT(-1), re);

        }
        finally
        {
        }
        return retval;
    }

Usage Example

コード例 #1
0
ファイル: Expression.cs プロジェクト: victoriatolls/NCalc2
        public static LogicalExpression Compile(string expression, bool nocache)
        {
            LogicalExpression logicalExpression = null;

            if (_cacheEnabled && !nocache)
            {
                try
                {
                    Rwl.EnterReadLock();

                    if (_compiledExpressions.ContainsKey(expression))
                    {
                        Debug.WriteLine("Expression retrieved from cache: " + expression);
                        var wr = _compiledExpressions[expression];
                        logicalExpression = wr.Target as LogicalExpression;

                        if (wr.IsAlive && logicalExpression != null)
                        {
                            return(logicalExpression);
                        }
                    }
                }
                finally
                {
                    Rwl.ExitReadLock();
                }
            }

            if (logicalExpression == null)
            {
                var lexer  = new NCalcLexer(new ANTLRStringStream(expression));
                var parser = new NCalcParser(new CommonTokenStream(lexer));

                logicalExpression = parser.ncalcExpression().value;

                if (parser.Errors != null && parser.Errors.Count > 0)
                {
                    throw new EvaluationException(String.Join(Environment.NewLine, parser.Errors.ToArray()));
                }

                if (_cacheEnabled && !nocache)
                {
                    try
                    {
                        Rwl.EnterWriteLock();
                        _compiledExpressions[expression] = new WeakReference(logicalExpression);
                    }
                    finally
                    {
                        Rwl.ExitWriteLock();
                    }

                    CleanCache();

                    Debug.WriteLine("Expression added to cache: " + expression);
                }
            }

            return(logicalExpression);
        }
All Usage Examples Of NCalcParser::ncalcExpression