namespace HeuristicLab.Problems.ProgramSynthesis.Push.Interpreter { using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using Core; using Expressions; using HeuristicLab.Problems.ProgramSynthesis.Push.Configuration; using HeuristicLab.Problems.ProgramSynthesis.Push.Data.Pool; using Stack; public interface IPushInterpreter { IRandom Random { get; set; } IStack CodeStack { get; } IStack ExecStack { get; } IStack NameStack { get; } IStack BooleanStack { get; } IStack IntegerStack { get; } IStack FloatStack { get; } IStack CharStack { get; } IStack StringStack { get; } IDictionary CustomExpressions { get; } IReadOnlyPushConfiguration Configuration { get; } InterpreterPoolContainer PoolContainer { get; } bool IsNameQuoteFlagSet { get; set; } void Clear(); void Run(string code, bool stepwise = false); void Run(Expression expression, bool stepwise = false); Task RunAsync(Expression expression, bool paused = false, CancellationToken token = default(CancellationToken)); Task RunAsync(string code, bool paused = false, CancellationToken token = default(CancellationToken)); Task AbortAndResetAsync(); Task AbortAsync(); Task PauseAsync(); void Resume(); Task ResumeAsync(); bool Step(); void PrintStacks(); } }