public override void EvaluateNode(EvaluationContext context, AstMode mode) { if (EntryPoint == null) { context.ThrowError("No entry point defined (entry point is a function named «Go»)"); } // load standard run-time library functions var libraryFunctions = LibraryFunction.ExtractLibraryFunctions(context, new RefalLibrary(context)); foreach (LibraryFunction libFun in libraryFunctions) { context.SetValue(libFun.Name, libFun); } // define all functions foreach (Function fun in FunctionList) { fun.Evaluate(context, mode); } // call entry point with empty expression as an argument context.Data.Push(Runtime.PassiveExpression.Build()); EntryPoint.Call(context); // discard execution results context.Data.Pop(); context.ClearLastResult(); }