CSE.Exps.LogicalExp.Parse C# (CSharp) Метод

Parse() публичный статический Метод

Parses logical expressions
public static Parse ( CseObject leftOp, CseObject rightOp, LogicalType type ) : CseObject
leftOp CseObject Left operand
rightOp CseObject Right operand
type LogicalType Logical expression type
Результат CseObject
		public static CseObject Parse(CseObject leftOp, CseObject rightOp, LogicalType type) {
			CseObject obj = null;

			if (type == LogicalType.NOT) {
				obj = new CseObject(null) { IsLiteral = leftOp.IsLiteral };
			}
			else {
				obj = new CseObject(null) { IsLiteral = leftOp.IsLiteral && rightOp.IsLiteral };
			}

			try {
				switch (type) {
					case LogicalType.AND:
						// TODO: lazy eval if exception thrown
						obj.Value = leftOp.Value && rightOp.Value;
						break;
					case LogicalType.OR:
						// TODO: lazy eval if exception thrown
						obj.Value = leftOp.Value || rightOp.Value;
						break;
					case LogicalType.NOT: {
							//try {
							obj.Value = !leftOp.Value;
							/*}
							catch {
								MethodInfo mi = obj.Value.GetType().GetMethod(OpOverloadNames.FALSE);
								if (mi != null)
									obj.Value = obj.Value.GetType().InvokeMember(OpOverloadNames.FALSE, OpOverloadNames.Flags, null, CsEval.evalEnvironment, new object[] { obj.Value });
								else
									obj.Value = null;
							}*/
						}
						break;
					default:
						throw new System.NotImplementedException("Not implemented.");
				}
			}
			catch {
				// TODO: Fill this out!
			}

			return obj;
		}
	}
LogicalExp