private string OpToString(CodeOperatorType codeOperatorType)
        {
            switch (codeOperatorType)
            {
            default: throw new NotImplementedException("Op: " + codeOperatorType);

            case CodeOperatorType.Complement: return("~");

            case CodeOperatorType.Mod: return("%");

            case CodeOperatorType.Add: return("+");

            case CodeOperatorType.Sub: return("-");

            case CodeOperatorType.Gt: return(">");

            case CodeOperatorType.Ge: return(">=");

            case CodeOperatorType.Le: return("<=");

            case CodeOperatorType.Lt: return("<");

            case CodeOperatorType.IdentityEquality: return("==");

            case CodeOperatorType.Equal: return("==");

            case CodeOperatorType.IdentityInequality: return("!=");

            case CodeOperatorType.NotEqual: return("!=");

            case CodeOperatorType.Is: return("is");

            case CodeOperatorType.BitAnd: return("&");

            case CodeOperatorType.BitOr: return("|");

            case CodeOperatorType.BitXor: return("^");

            case CodeOperatorType.LogAnd: return("&&");

            case CodeOperatorType.LogOr: return("||");

            case CodeOperatorType.Not: return("!");

            case CodeOperatorType.Assign: return(":=");

            case CodeOperatorType.Mul: return("*");

            case CodeOperatorType.Div: return("/");

            case CodeOperatorType.Shl: return("<<");

            case CodeOperatorType.Shr: return(">>");

            case CodeOperatorType.AddEq: return("+=");

            case CodeOperatorType.SubEq: return("-=");

            case CodeOperatorType.ModEq: return("%=");

            case CodeOperatorType.MulEq: return("*=");

            case CodeOperatorType.DivEq: return("/=");

            case CodeOperatorType.OrEq: return("|=");

            case CodeOperatorType.AndEq: return("|=");

            case CodeOperatorType.ShlEq: return("<<=");

            case CodeOperatorType.ShrEq: return(">>=");

            case CodeOperatorType.XorEq: return("^=");
            }
        }
Beispiel #2
0
 public CodeBinaryOperatorExpression BinOp(CodeExpression l, CodeOperatorType op, CodeExpression r)
 {
     return(new CodeBinaryOperatorExpression(l, op, r));
 }
Beispiel #3
0
 public CodeUnaryOperatorExpression(CodeOperatorType codeOperatorType, CodeExpression e)
 {
     this.Operator   = codeOperatorType;
     this.Expression = e;
 }
Beispiel #4
0
 public CodeBinaryOperatorExpression BinOp(CodeExpression l, CodeOperatorType op, CodeExpression r)
 {
     return new CodeBinaryOperatorExpression(l, op, r);
 }
Beispiel #5
0
 public CodeBinaryOperatorExpression(CodeExpression l, CodeOperatorType op, CodeExpression r)
 {
     this.Left     = l;
     this.Operator = op;
     this.Right    = r;
 }
Beispiel #6
0
 private static Precedence operatorPrecedence(CodeOperatorType op) => op switch
 {
Beispiel #7
0
        private string OpToString(CodeOperatorType codeOperatorType)
        {
            switch (codeOperatorType)
            {
            default: throw new NotImplementedException("Op: " + codeOperatorType);
            case CodeOperatorType.Complement: return "~";

            case CodeOperatorType.Mod: return "%";

            case CodeOperatorType.Add: return "+";
            case CodeOperatorType.Sub: return "-";

            case CodeOperatorType.Gt: return ">";
            case CodeOperatorType.Ge: return ">=";
            case CodeOperatorType.Le: return "<=";
            case CodeOperatorType.Lt: return "<";

            case CodeOperatorType.IdentityEquality: return "==";
            case CodeOperatorType.Equal: return "==";
            case CodeOperatorType.IdentityInequality: return "!=";
            case CodeOperatorType.NotEqual: return "!=";
            case CodeOperatorType.Is: return "is";

            case CodeOperatorType.BitAnd: return "&";
            case CodeOperatorType.BitOr: return "|";
            case CodeOperatorType.BitXor: return "^";

            case CodeOperatorType.LogAnd: return "&&";
            case CodeOperatorType.LogOr: return "||";

            case CodeOperatorType.Not: return "!";
            case CodeOperatorType.Assign: return ":=";
            case CodeOperatorType.Mul: return "*";
            case CodeOperatorType.Div: return "/";
            case CodeOperatorType.Shl: return "<<";
            case CodeOperatorType.Shr: return ">>";

            case CodeOperatorType.AddEq: return "+=";
            case CodeOperatorType.SubEq: return "-=";
            case CodeOperatorType.MulEq: return "*=";
            case CodeOperatorType.DivEq: return "/=";
            case CodeOperatorType.OrEq: return "|=";
            case CodeOperatorType.AndEq: return "|=";
            case CodeOperatorType.ShlEq: return "<<=";
            case CodeOperatorType.ShrEq: return ">>=";
            case CodeOperatorType.XorEq: return "^=";
            }
        }