void WriteExpression (Expression expression)
			{
				_expressionPrinter.Visit (expression);
			}
Ejemplo n.º 2
0
		private CecilMethodAnalyser(ActionFlowGraph graph)
		{
			if (graph == null) throw new ArgumentNullException("graph");

			_queryExpression = QueryExpressionFinder.FindIn(graph);
		}
Ejemplo n.º 3
0
		void PushUnaryExpression (UnaryOperator op, Expression expression)
		{
			Push (new UnaryExpression (op, expression));
		}
Ejemplo n.º 4
0
		public void Add (Expression element)
		{
			if (element == null) throw new ArgumentNullException ("element");
			InnerList.Add (element);
		}
Ejemplo n.º 5
0
		static bool IsFalse (Expression expression)
		{
			LiteralExpression literal = expression as LiteralExpression;
			return literal != null && literal.Value.Equals (0);
		}
Ejemplo n.º 6
0
		public void Negate (Expression expression)
		{
			switch (expression.CodeElementType) {
			case CodeElementType.BinaryExpression:
				BinaryExpression be = (BinaryExpression) expression;
				BinaryOperator op = GetInverseOperator (be.Operator);
				if (BinaryOperator.None != op) {
					Push (new BinaryExpression (op, be.Left, be.Right));
				} else {
					if (BinaryOperator.LogicalAnd == be.Operator) {
						Negate (be.Left);
						Negate (be.Right);
						PushBinaryExpression (BinaryOperator.LogicalOr);
					} else {
						PushNotExpression (expression);
					}
				}
				break;

			case CodeElementType.UnaryExpression:
				UnaryExpression ue = (UnaryExpression) expression;
				switch (ue.Operator) {
				case UnaryOperator.Not:
					Push (ue.Operand);
					break;

				default:
					throw new ArgumentException ("expression");
				}
				break;

			default:
				PushNotExpression (expression);
				break;
			}
		}
		public PropertyReferenceExpression (Expression target, PropertyReference property)
		{
			_target = target;
			_property = property;
		}
Ejemplo n.º 8
0
		private static void CannotOptimize(Expression expression)
		{
			throw new QueryOptimizationException(ExpressionPrinter.ToString(expression));
		}
		public MethodInvocationExpression (Expression target, ExpressionCollection arguments)
		{
			_target = target;
			_arguments = arguments;
		}
		public BinaryExpression (BinaryOperator operator_, Expression left, Expression right)
		{
			_operator = operator_;
			_left = left;
			_right = right;
		}
		public MethodReferenceExpression (Expression target, MethodReference method)
		{
			_target = target;
			_method = method;
		}
		public static string ToString (Expression expression)
		{
			ExpressionPrinter printer = new ExpressionPrinter ();
			expression.Accept (printer);
			return printer.Writer.ToString ();
		}
Ejemplo n.º 13
0
		public void Insert (int index, Expression element)
		{
			if (element == null) throw new ArgumentNullException ("element");
			InnerList.Insert (index, element);
		}
		public ConditionalBranchActionBlock (Instruction sourceInstruction, Expression condition)
			: base (sourceInstruction)
		{
			if (null == condition) throw new ArgumentNullException ("condition");
			_condition = condition;
		}
		public FieldReferenceExpression (Expression target, FieldReference field)
		{
			_target = target;
			_field = field;
		}
Ejemplo n.º 16
0
		private ActionBlock OnReturn(ReturnActionBlock block)
		{
			Expression expression = block.Expression;
			VariableReferenceExpression variable = expression as VariableReferenceExpression;

			_queryExpression =
				variable != null
					? _variables[GetVariableIndex(variable)]
					: expression;

			return null;
		}
		public UnaryExpression (UnaryOperator operator_, Expression operand)
		{
			_operator = operator_;
			_operand = operand;
		}
Ejemplo n.º 18
0
		private void PushAssignment (Expression lvalue, Expression rvalue)
		{
			Push (
				new AssignExpression (
					lvalue,
					rvalue));
		}
		public TryCastExpression (Expression target, TypeReference toType)
		{
			_target = target;
			_toType = toType;
		}
Ejemplo n.º 20
0
		bool IsBooleanExpression (Expression expression)
		{
			switch (expression.CodeElementType) {
			case CodeElementType.BinaryExpression:
				return IsComparisonOperator (((BinaryExpression) expression).Operator);
			case CodeElementType.MethodInvocationExpression:
				MethodReferenceExpression mre = ((MethodInvocationExpression) expression).Target as MethodReferenceExpression;
				if (null != mre) return mre.Method.ReturnType.ReturnType == _SystemBoolean;
				break;
			}
			return false;
		}
		public ReturnActionBlock (Instruction sourceInstruction, Expression expression)
			: base (sourceInstruction)
		{
			_expression = expression;
		}
Ejemplo n.º 22
0
		void PushNotExpression (Expression expression)
		{
			PushUnaryExpression (UnaryOperator.Not, expression);
		}
Ejemplo n.º 23
0
		static bool IsTrueOrFalse (Expression expression)
		{
			LiteralExpression literal = expression as LiteralExpression;
			return literal != null
				&& literal.Value != null
				&& (literal.Value.Equals (1)
				|| literal.Value.Equals (0));
		}
Ejemplo n.º 24
0
		void Push (Expression expression)
		{
			if (null == expression) throw new ArgumentNullException ("expression");
			_expressionStack.Push (expression);
		}
		public ReturnStatement (Expression expression)
		{
			_expression = expression;
		}