KumiScript/interpreter/expression/ProcedureExpression.cs
2024-01-25 23:37:51 -06:00

51 lines
1.2 KiB
C#

namespace KumiScript.Interpreter
{
public class ProcedureExpression : Expression
{
readonly Procedure _proc;
readonly bool _branching;
public ProcedureExpression(Procedure p)
{
_proc = p;
_branching = false;
}
public ProcedureExpression(Procedure p, bool branching)
{
_proc = p;
_branching = branching;
}
public override Expression Eval(Environment env)
{
return this;
}
public Expression Apply(ListExpression args, Environment env)
{
return _proc.ApplyWithArgs(args, env);
}
public override string ToString()
{
if (_proc.IsPrimitive())
return string.Format("#Primitive<{0}>", _proc.ToString());
return string.Format("#Procedure<{0}>", _proc.ToString());
}
public override bool Equals(Expression expr)
{
ProcedureExpression? pe = expr as ProcedureExpression;
if (pe is null)
return false;
return _proc.Equals(pe._proc);
}
public Procedure GetProcedure()
{
return _proc;
}
}
}