namespace meowlang.parser; public static class BinaryOperatorExtensions { public static BinaryOperator ToBinaryOperator(this string str) => str switch { "||" => BinaryOperator.LogicalOr, "&&" => BinaryOperator.LogicalAnd, "^^" => BinaryOperator.LogicalXor, "|" => BinaryOperator.BitwiseOr, "&" => BinaryOperator.BitwiseAnd, "^" => BinaryOperator.BitwiseXor, "==" => BinaryOperator.Equal, "!=" => BinaryOperator.NotEqual, ">" => BinaryOperator.GreaterThan, ">=" => BinaryOperator.GreaterThanOrEqual, "<" => BinaryOperator.LessThan, "<=" => BinaryOperator.LessThanOrEqual, "<<" => BinaryOperator.ShiftLeft, ">>" => BinaryOperator.ShiftRight, "+" => BinaryOperator.Addition, "-" => BinaryOperator.Subtraction, "*" => BinaryOperator.Multiplication, "/" => BinaryOperator.Division, "%" => BinaryOperator.Modulo, }; public static string ToString(this BinaryOperator op) => op switch { BinaryOperator.LogicalOr => "||", BinaryOperator.LogicalAnd => "&&", BinaryOperator.LogicalXor => "^^", BinaryOperator.BitwiseOr => "|", BinaryOperator.BitwiseAnd => "&", BinaryOperator.BitwiseXor => "^", BinaryOperator.Equal => "==", BinaryOperator.NotEqual => "!=", BinaryOperator.GreaterThan => ">", BinaryOperator.GreaterThanOrEqual => ">=", BinaryOperator.LessThan => "<", BinaryOperator.LessThanOrEqual => "<=", BinaryOperator.ShiftLeft => "<<", BinaryOperator.ShiftRight => ">>", BinaryOperator.Addition => "+", BinaryOperator.Subtraction => "-", BinaryOperator.Multiplication => "*", BinaryOperator.Division => "/", BinaryOperator.Modulo => "%", }; }