示例#1
0
        public BehaviourTreeCompiler()
        {
            Creators = new List <LispParser.ICanCreateFromLispParseTree <TBb> >
            {
                // Control Flow
                new Sequence <TBb>(),
                new Selector <TBb>(),

                // Utility Control Flow
                new UtilitySelector <TBb>(),
                new UtilitySequence <TBb>(),
                new TaskUtility <TBb>(null, null),

                // Decorators
                new Counter <TBb>(null),
                new AlwaysFail <TBb>(null),
                new AlwaysSucceed <TBb>(null),
                new Invert <TBb>(null),
                new UntilFail <TBb>(null),
                new UntilSuccess <TBb>(null),
                new RunOnce <TBb>(null),
                new RunNTimes <TBb>(null),

                // Leaves
                new Fail <TBb>(),
                new Succeed <TBb>(),
                new KeepRunning <TBb>(),
                new DebugLog <TBb>(),
                new FixedResultState <TBb>(null, TaskState.Running)
            };

            LispCompiler = new LispCompiler <TBb>();
        }
示例#2
0
 public void Test(string code, float extected)
 {
     LispCompiler<Blackboard> lispCompiler = new LispCompiler<Blackboard>();
     Blackboard blackboard = new Blackboard();
     LispOperator<Blackboard> func = lispCompiler.Compile(blackboard, code);
     float result = func.TryEvaluateToFloat();
     Debug.WriteLine(func.BuildParseTree().ToCode() + " => " + result);
     result.Should().Be(extected);
 }
示例#3
0
 public void Test()
 {
     string code = "(+ 7 10 (* 2 8))";
     LispCompiler<Blackboard> lispCompiler = new LispCompiler<Blackboard>();
     Blackboard blackboard = new Blackboard();
     LispOperator<Blackboard> func = lispCompiler.Compile(blackboard, code);
     Debug.WriteLine(func.BuildParseTree().ToCode());
     Debug.WriteLine(func.TryEvaluateToFloat());
 }
示例#4
0
 public void BoolTest()
 {
     string code = "(And True False)";
     LispCompiler<Blackboard> lispCompiler = new LispCompiler<Blackboard>();
     Blackboard blackboard = new Blackboard();
     LispOperator<Blackboard> func = lispCompiler.Compile(blackboard, code);
     Debug.WriteLine(func.BuildParseTree().ToCode());
     Debug.WriteLine(func.TryEvaluateToBool());
 }
示例#5
0
 public void Test(string code, float extected)
 {
     LispCompiler<Blackboard> lispCompiler = new LispCompiler<Blackboard>();
     Blackboard blackboard = new Blackboard();
     LispOperator<Blackboard> func = lispCompiler.Compile(blackboard, code);
     float result = func.TryEvaluateToFloat();
     Debug.WriteLine(func.BuildParseTree().ToCode() + " => " + result);
     result.Should().Be(extected);
 }
示例#6
0
 public void BoolTest()
 {
     string code = "(And True False)";
     LispCompiler<Blackboard> lispCompiler = new LispCompiler<Blackboard>();
     Blackboard blackboard = new Blackboard();
     LispOperator<Blackboard> func = lispCompiler.Compile(blackboard, code);
     Debug.WriteLine(func.BuildParseTree().ToCode());
     Debug.WriteLine(func.TryEvaluateToBool());
 }
示例#7
0
 public void Test3()
 {
     string code = "5";
     LispCompiler<Blackboard> lispCompiler = new LispCompiler<Blackboard>();
     Blackboard blackboard = new Blackboard();
     LispOperator<Blackboard> func = lispCompiler.Compile(blackboard, code);
     Debug.WriteLine(func.BuildParseTree().ToCode());
     func.Should().BeOfType<IntConstant<Blackboard>>();
 }
示例#8
0
 public void Test2()
 {
     string code = "(* 2 Pi (+ A B))";
     LispCompiler<Blackboard> lispCompiler = new LispCompiler<Blackboard>();
     Blackboard blackboard = new Blackboard();
     LispOperator<Blackboard> func = lispCompiler.Compile(blackboard, code);
     Debug.WriteLine(func.BuildParseTree().ToCode());
     Debug.WriteLine(func.TryEvaluateToFloat());
 }
示例#9
0
        public void Test_Compiler()
        {
            var compiler = new LispCompiler();
            var code     = "(print \"Hello world!\")";
            var result   = compiler.CompileToCsCode(code);

            compiler.CompileCsCodeToAssembly(result.StringValue, CompilerOutputFileName);
            Assert.IsTrue(result.StringValue.Length > 0);
            //Assert.IsTrue(File.Exists(CompilerOutputFileName));
        }
示例#10
0
 public void Test3()
 {
     string code = "5";
     LispCompiler<Blackboard> lispCompiler = new LispCompiler<Blackboard>();
     Blackboard blackboard = new Blackboard();
     LispOperator<Blackboard> func = lispCompiler.Compile(blackboard, code);
     Debug.WriteLine(func.BuildParseTree().ToCode());
     func.Should().BeOfType<IntConstant<Blackboard>>();
 }