50 lines
1.8 KiB
C#
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 => "%",
|
|
};
|
|
} |