using System; using HeuristicLab.Algorithms.PushGP.Interpreter; namespace HeuristicLab.Algorithms.PushGP.Cli { class Program { static void Main(string[] args) { var interpreter = new PushGPInterpreter(); interpreter.IntegerStack.Push(3, 3); interpreter.FloatStack.Push(2.0, 3.0); interpreter.Interprete(example17); interpreter.PrintStacks(); Console.WriteLine("\nPress any key to continue..."); Console.ReadKey(); } static string example1 = "( 2 3 INTEGER.* 4.1 5.2 FLOAT.+ TRUE FALSE BOOLEAN.OR )"; static string example2 = "( 5 1.23 INTEGER.+ ( 4 ) INTEGER.- 5.67 FLOAT.* )"; static string example3 = "( 5 INTEGER.DUP INTEGER.+ )"; static string example4 = "5"; static string example5 = "INTEGER.DUP"; static string example6 = "( 5 CODE.QUOTE ( INTEGER.DUP INTEGER.+ ) CODE.DO )"; static string example7 = "( DOUBLE CODE.QUOTE ( INTEGER.DUP INTEGER.+ ) CODE.DEFINE 5 DOUBLE )"; static string example8 = "( CODE.QUOTE ( INTEGER.DUP INTEGER.+ ) DOUBLE CODE.DEFINE 5 DOUBLE )"; static string example9 = "( DOUBLE EXEC.DEFINE ( INTEGER.DUP INTEGER.+ ) 5 DOUBLE )"; // Requires an integer preloaded static string example10 = @"( CODE.QUOTE ( INTEGER.POP 1 ) CODE.QUOTE ( CODE.DUP INTEGER.DUP 1 INTEGER.- CODE.DO INTEGER.* ) INTEGER.DUP 2 INTEGER.< CODE.IF )"; static string example11 = "( 1 INTEGER.MAX 1 EXEC.DO*RANGE INTEGER.* )"; static string example12 = "( 1 INTEGER.MAX 1 EXEC.DO*RANGE ( 2 INTEGER.* ) )"; static string example13 = "( INTEGER.= CODE.QUOTE FLOAT.* CODE.QUOTE FLOAT./ CODE.IF )"; static string example14 = "( INTEGER.= EXEC.IF FLOAT.* FLOAT./ )"; static string example15 = "( EXEC.Y ( ( FALSE 2 INTEGER.* ) EXEC.IF ( ) EXEC.POP ) )"; static string example16 = "( EXEC.Y ( ( 2 INTEGER.* INTEGER.DUP 1000 INTEGER.< ) EXEC.IF ( ) EXEC.POP ) )"; static string example17 = @"( ARG FLOAT.DEFINE EXEC.Y ( ARG FLOAT.* 1 INTEGER.- INTEGER.DUP 1 INTEGER.> EXEC.IF ( ) EXEC.POP ) )"; } }