コード例 #1
0
ファイル: LanguageSyntaxFactory.cs プロジェクト: phreed/GMac
 /// <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));
 }
コード例 #2
0
ファイル: LanguageSyntaxFactory.cs プロジェクト: phreed/GMac
 /// <summary>
 /// Create an operator expression without any arguments
 /// </summary>
 /// <param name="head"></param>
 /// <returns></returns>
 public SteExpression Operator(SteOperatorSpecs head)
 {
     return(SteExpressionUtils.CreateOperator(head));
 }
コード例 #3
0
ファイル: LanguageSyntaxFactory.cs プロジェクト: phreed/GMac
 /// <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));
 }
コード例 #4
0
ファイル: CSharpUtils.cs プロジェクト: phreed/GMac
            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);
            }