示例#1
0
        virtual public IDensity <G, M, RF> VisitDensity(DensityExpressionGrammarParser.DensityContext ctx)
        {
            var isFunction = false;

            // var isFunction = ctx.functionName() != null;
            if (isFunction)
            {
                throw new NotImplementedException();
                // var functionName = ctx.functionName().GetText();
                // var functionArguments = VisitFunctionArguments(ctx.functionArguments());
                // return ParseDensityFunction(functionName, functionArguments.ToArray());
            }
            else
            {
                var density = VisitTerm(ctx.term(0));
                for (var i = 1; i < ctx.term().Length; i++)
                {
                    var isPlus     = ctx.PLUS(i - 1) != null;
                    var isMinus    = ctx.MINUS(i - 1) != null;
                    var tmpDensity = VisitTerm(ctx.term(i));
                    if (isPlus)
                    {
                        density = density.Add(tmpDensity);
                    }
                    else if (isMinus)
                    {
                        density = density.Subtract(tmpDensity);
                    }
                    else
                    {
                        throw new NotImplementedException();
                    }
                }
                return(density);
            }
        }
示例#2
0
 /// <summary>
 /// Exit a parse tree produced by <see cref="DensityExpressionGrammarParser.density"/>.
 /// <para>The default implementation does nothing.</para>
 /// </summary>
 /// <param name="context">The parse tree.</param>
 public virtual void ExitDensity([NotNull] DensityExpressionGrammarParser.DensityContext context)
 {
 }