/// <summary> /// Create an operator expression from a head and a set of expressions as its arguments /// </summary> /// <param name="head"></param> /// <param name="args"></param> /// <returns></returns> public SteExpression Operator(SteOperatorSpecs head, IEnumerable <SteExpression> args) { return(SteExpressionUtils.CreateOperator(head, args)); }
/// <summary> /// Create an operator expression without any arguments /// </summary> /// <param name="head"></param> /// <returns></returns> public SteExpression Operator(SteOperatorSpecs head) { return(SteExpressionUtils.CreateOperator(head)); }
/// <summary> /// Create an operator expression from a head and a set of expressions as its arguments /// </summary> /// <param name="head"></param> /// <param name="args"></param> /// <returns></returns> public SteExpression Operator(SteOperatorSpecs head, params SteExpression[] args) { return(SteExpressionUtils.CreateOperator(head, args)); }
static Operators() { var precedence = 0; Assign = new SteOperatorSpecs(" = ", precedence, TccOperatorPosition.Infix, TccOperatorAssociation.Right); AddThenAssign = new SteOperatorSpecs(" += ", precedence, TccOperatorPosition.Infix, TccOperatorAssociation.Right); SubtractThenAssign = new SteOperatorSpecs(" -= ", precedence, TccOperatorPosition.Infix, TccOperatorAssociation.Right); MultiplyThenAssign = new SteOperatorSpecs(" *= ", precedence, TccOperatorPosition.Infix, TccOperatorAssociation.Right); DivideThenAssign = new SteOperatorSpecs(" /= ", precedence, TccOperatorPosition.Infix, TccOperatorAssociation.Right); RemainderThenAssign = new SteOperatorSpecs(" %= ", precedence, TccOperatorPosition.Infix, TccOperatorAssociation.Right); BitwiseAndThenAssign = new SteOperatorSpecs(" &= ", precedence, TccOperatorPosition.Infix, TccOperatorAssociation.Right); BitwiseXorThenAssign = new SteOperatorSpecs(" ^= ", precedence, TccOperatorPosition.Infix, TccOperatorAssociation.Right); BitwiseOrThenAssign = new SteOperatorSpecs(" |= ", precedence, TccOperatorPosition.Infix, TccOperatorAssociation.Right); ShiftLeftThenAssign = new SteOperatorSpecs(" <<= ", precedence, TccOperatorPosition.Infix, TccOperatorAssociation.Right); ShiftRightThenAssign = new SteOperatorSpecs(" >>= ", precedence, TccOperatorPosition.Infix, TccOperatorAssociation.Right); precedence++; Conditional = new SteOperatorSpecs(" ?: ", precedence, TccOperatorPosition.Infix, TccOperatorAssociation.Right); precedence++; NullCoalescing = new SteOperatorSpecs(" ?? ", precedence, TccOperatorPosition.Infix, TccOperatorAssociation.Left); precedence++; ConditionalOr = new SteOperatorSpecs(" || ", precedence, TccOperatorPosition.Infix, TccOperatorAssociation.Left); precedence++; ConditionalAnd = new SteOperatorSpecs(" && ", precedence, TccOperatorPosition.Infix, TccOperatorAssociation.Left); precedence++; BitwiseOr = new SteOperatorSpecs(" | ", precedence, TccOperatorPosition.Infix, TccOperatorAssociation.Left); LogicalOr = new SteOperatorSpecs(" | ", precedence, TccOperatorPosition.Infix, TccOperatorAssociation.Left); precedence++; BitwiseXor = new SteOperatorSpecs(" ^ ", precedence, TccOperatorPosition.Infix, TccOperatorAssociation.Left); LogicalXor = new SteOperatorSpecs(" ^ ", precedence, TccOperatorPosition.Infix, TccOperatorAssociation.Left); precedence++; BitwiseAnd = new SteOperatorSpecs(" & ", precedence, TccOperatorPosition.Infix, TccOperatorAssociation.Left); LogicalAnd = new SteOperatorSpecs(" & ", precedence, TccOperatorPosition.Infix, TccOperatorAssociation.Left); precedence++; Equal = new SteOperatorSpecs(" == ", precedence, TccOperatorPosition.Infix, TccOperatorAssociation.Left); NotEqual = new SteOperatorSpecs(" != ", precedence, TccOperatorPosition.Infix, TccOperatorAssociation.Left); precedence++; Less = new SteOperatorSpecs(" < ", precedence, TccOperatorPosition.Infix, TccOperatorAssociation.Left); More = new SteOperatorSpecs(" > ", precedence, TccOperatorPosition.Infix, TccOperatorAssociation.Left); LessOrEqual = new SteOperatorSpecs(" <= ", precedence, TccOperatorPosition.Infix, TccOperatorAssociation.Left); MoreOrEqual = new SteOperatorSpecs(" >= ", precedence, TccOperatorPosition.Infix, TccOperatorAssociation.Left); IsOfType = new SteOperatorSpecs(" is ", precedence, TccOperatorPosition.Infix, TccOperatorAssociation.Left); AsType = new SteOperatorSpecs(" as ", precedence, TccOperatorPosition.Infix, TccOperatorAssociation.Left); precedence++; ShiftLeft = new SteOperatorSpecs(" << ", precedence, TccOperatorPosition.Infix, TccOperatorAssociation.Left); ShiftRight = new SteOperatorSpecs(" >> ", precedence, TccOperatorPosition.Infix, TccOperatorAssociation.Left); precedence++; Add = new SteOperatorSpecs(" + ", precedence, TccOperatorPosition.Infix, TccOperatorAssociation.Left); Subtract = new SteOperatorSpecs(" - ", precedence, TccOperatorPosition.Infix, TccOperatorAssociation.Left); precedence++; Multiply = new SteOperatorSpecs(" * ", precedence, TccOperatorPosition.Infix, TccOperatorAssociation.Left); Divide = new SteOperatorSpecs(" / ", precedence, TccOperatorPosition.Infix, TccOperatorAssociation.Left); Remainder = new SteOperatorSpecs(" % ", precedence, TccOperatorPosition.Infix, TccOperatorAssociation.Left); precedence++; UnaryPlus = new SteOperatorSpecs("+", precedence, TccOperatorPosition.Prefix, TccOperatorAssociation.None); UnaryMinus = new SteOperatorSpecs("-", precedence, TccOperatorPosition.Prefix, TccOperatorAssociation.None); IncrementThenRead = new SteOperatorSpecs("++", precedence, TccOperatorPosition.Prefix, TccOperatorAssociation.None); DecrementThenRead = new SteOperatorSpecs("--", precedence, TccOperatorPosition.Prefix, TccOperatorAssociation.None); BitwiseNot = new SteOperatorSpecs("~", precedence, TccOperatorPosition.Prefix, TccOperatorAssociation.None); LogicalNot = new SteOperatorSpecs("!", precedence, TccOperatorPosition.Prefix, TccOperatorAssociation.None); precedence++; MemberAccess = new SteOperatorSpecs(".", precedence, TccOperatorPosition.Infix, TccOperatorAssociation.Left); ReadThenIncrement = new SteOperatorSpecs("++", precedence, TccOperatorPosition.Suffix, TccOperatorAssociation.None); ReadThenDecrement = new SteOperatorSpecs("--", precedence, TccOperatorPosition.Suffix, TccOperatorAssociation.None); }