Exemplo n.º 1
0
        public Expression Deserialize(IDeserializationContext context, IExpressionNode node)
        {
            var handler = serviceProvider.GetService(
                typeof(IExpressionDeserializer <>).MakeGenericType(node.GetType())
                );

            if (handler == null)
            {
                throw new InvalidOperationException(
                          $"No deserializer registered for node type {node.GetType()}"
                          );
            }

            return((handler as IExpressionDeserializer).Deserialize(context, node));
        }
Exemplo n.º 2
0
 /// <summary>
 /// Evaluates the expression as an lvalue and answers the result type. </summary>
 /// <param name="context"> used to resolve properties (<code>base.property</code> and <code>base[property]</code>)
 /// and to determine the result from the last base/property pair </param>
 /// <returns> lvalue evaluation type or <code>null</code> for rvalue expressions </returns>
 /// <exception cref="ELException"> if evaluation fails (e.g. property not found, type conversion failed, ...) </exception>
 public override Type GetType(ELContext context)
 {
     return(node.GetType(bindings, context));
 }
Exemplo n.º 3
0
        public virtual void VisitExpression(IExpressionNode node)
        {
            if (node == null)
                return;

            if (node is SqlConstantExpressionNode) {
                VisitConstantExpression((SqlConstantExpressionNode) node);
            } else if (node is SqlReferenceExpressionNode) {
                VisitReferenceExpression((SqlReferenceExpressionNode) node);
            } else if (node is SqlVariableRefExpressionNode) {
                VisitVariableRefExpression((SqlVariableRefExpressionNode) node);
            } else if (node is SqlBetweenExpressionNode) {
                VisitBetweenExpression((SqlBetweenExpressionNode) node);
            } else if (node is SqlCaseExpressionNode) {
                VisitCaseExpression((SqlCaseExpressionNode) node);
            } else if (node is SqlFunctionCallExpressionNode) {
                VisitFunctionCall((SqlFunctionCallExpressionNode) node);
            } else if (node is SqlExpressionTupleNode) {
                VisitTupleExpression((SqlExpressionTupleNode) node);
            } else if (node is SqlBinaryExpressionNode) {
                VisitBinaryExpression((SqlBinaryExpressionNode) node);
            } else if (node is SqlUnaryExpressionNode) {
                VisitUnaryExpression((SqlUnaryExpressionNode) node);
            } else if (node is SqlQueryExpressionNode) {
                VisitQueryExpression((SqlQueryExpressionNode) node);
            } else {
                throw new InvalidOperationException(String.Format("The expression node of type '{0}' is invalid.", node.GetType()));
            }
        }
Exemplo n.º 4
0
 public void visit(IExpressionNode value)
 {
     string s = value.GetType().Name + ".";
     prepare_node(value.type, s + "");                       
 }
Exemplo n.º 5
0
        public virtual void VisitExpression(IExpressionNode node)
        {
            if (node == null)
            {
                return;
            }

            if (node is SqlConstantExpressionNode)
            {
                VisitConstantExpression((SqlConstantExpressionNode)node);
            }
            else if (node is SqlReferenceExpressionNode)
            {
                VisitReferenceExpression((SqlReferenceExpressionNode)node);
            }
            else if (node is SqlVariableRefExpressionNode)
            {
                VisitVariableRefExpression((SqlVariableRefExpressionNode)node);
            }
            else if (node is SqlBetweenExpressionNode)
            {
                VisitBetweenExpression((SqlBetweenExpressionNode)node);
            }
            else if (node is SqlCaseExpressionNode)
            {
                VisitCaseExpression((SqlCaseExpressionNode)node);
            }
            else if (node is SqlFunctionCallExpressionNode)
            {
                VisitFunctionCall((SqlFunctionCallExpressionNode)node);
            }
            else if (node is SqlExpressionTupleNode)
            {
                VisitTupleExpression((SqlExpressionTupleNode)node);
            }
            else if (node is SqlBinaryExpressionNode)
            {
                VisitBinaryExpression((SqlBinaryExpressionNode)node);
            }
            else if (node is SqlUnaryExpressionNode)
            {
                VisitUnaryExpression((SqlUnaryExpressionNode)node);
            }
            else if (node is SqlQueryExpressionNode)
            {
                VisitQueryExpression((SqlQueryExpressionNode)node);
            }
            else
            {
                throw new InvalidOperationException(String.Format("The expression node of type '{0}' is invalid.", node.GetType()));
            }
        }
Exemplo n.º 6
0
 public void visit(IExpressionNode value)
 {
     throw new System.NotSupportedException(value.GetType().ToString());
 }