51 lines
1.4 KiB
C#
51 lines
1.4 KiB
C#
using Parser.Objects;
|
|
|
|
namespace Parser.MFunctions
|
|
{
|
|
public static class MOperations
|
|
{
|
|
public static MObject? Plus(MObject left, MObject right)
|
|
{
|
|
if (left is MDoubleNumber { Value: var lValue }
|
|
&& right is MDoubleNumber { Value: var rValue })
|
|
{
|
|
return MObject.CreateDoubleNumber(lValue + rValue);
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
public static MObject? Minus(MObject left, MObject right)
|
|
{
|
|
if (left is MDoubleNumber { Value: var lValue }
|
|
&& right is MDoubleNumber { Value: var rValue })
|
|
{
|
|
return MObject.CreateDoubleNumber(lValue - rValue);
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
public static MObject? Star(MObject left, MObject right)
|
|
{
|
|
if (left is MDoubleNumber { Value: var lValue }
|
|
&& right is MDoubleNumber { Value: var rValue })
|
|
{
|
|
return MObject.CreateDoubleNumber(lValue * rValue);
|
|
}
|
|
|
|
return null;
|
|
}
|
|
public static MObject? Slash(MObject left, MObject right)
|
|
{
|
|
if (left is MDoubleNumber { Value: var lValue }
|
|
&& right is MDoubleNumber { Value: var rValue })
|
|
{
|
|
return MObject.CreateDoubleNumber(lValue / rValue);
|
|
}
|
|
|
|
return null;
|
|
}
|
|
}
|
|
}
|