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("^="); } }
public CodeBinaryOperatorExpression BinOp(CodeExpression l, CodeOperatorType op, CodeExpression r) { return(new CodeBinaryOperatorExpression(l, op, r)); }
public CodeUnaryOperatorExpression(CodeOperatorType codeOperatorType, CodeExpression e) { this.Operator = codeOperatorType; this.Expression = e; }
public CodeBinaryOperatorExpression BinOp(CodeExpression l, CodeOperatorType op, CodeExpression r) { return new CodeBinaryOperatorExpression(l, op, r); }
public CodeBinaryOperatorExpression(CodeExpression l, CodeOperatorType op, CodeExpression r) { this.Left = l; this.Operator = op; this.Right = r; }
private static Precedence operatorPrecedence(CodeOperatorType op) => op switch {
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 "^="; } }