meowlang/parser/BinaryOperatorExtensions.cs
2022-02-12 18:30:04 +01:00

50 lines
1.8 KiB
C#

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 => "%",
};
}