ParseExpressions() public méthode

public ParseExpressions ( ) : IEnumerable
Résultat IEnumerable
 public void CompileAndExecuteTwoSimpleCommand()
 {
     ModelParser parser = new ModelParser("a := 1. b := 2");
     this.compiler.CompileExpressions(parser.ParseExpressions());
     Machine machine = new Machine();
     this.block.Execute(machine, null);
     Assert.AreEqual(1, machine.GetGlobalObject("a"));
     Assert.AreEqual(2, machine.GetGlobalObject("b"));
 }
        public void CompileTwoSimpleCommand()
        {
            ModelParser parser = new ModelParser("a := 1. b := 2");
            this.compiler.CompileExpressions(parser.ParseExpressions());

            Assert.IsNotNull(this.block);
            Assert.AreEqual(2, this.block.NoConstants);
            Assert.AreEqual(0, this.block.NoLocals);
            Assert.AreEqual(2, this.block.NoGlobalNames);
            Assert.IsNotNull(this.block.ByteCodes);
            Assert.AreEqual(8, this.block.ByteCodes.Length);
            Assert.AreEqual(0, this.block.Arity);
            BlockDecompiler decompiler = new BlockDecompiler(this.block);
            var program = decompiler.Decompile();
            Assert.IsNotNull(program);
            Assert.AreEqual(4, program.Count);
            Assert.AreEqual("GetConstant 1", program[0]);
            Assert.AreEqual("SetGlobalVariable a", program[1]);
            Assert.AreEqual("GetConstant 2", program[2]);
            Assert.AreEqual("SetGlobalVariable b", program[3]);
        }
 public void CompileTwoCommandsUsingSemicolon()
 {
     ModelParser parser = new ModelParser("nil invokeWith: 10; invokeWith: 20");
     this.compiler.CompileExpressions(parser.ParseExpressions());
     Assert.IsNotNull(this.block);
     Assert.AreEqual(3, this.block.NoConstants);
     Assert.AreEqual(0, this.block.NoLocals);
     Assert.IsNotNull(this.block.ByteCodes);
     Assert.AreEqual(12, this.block.ByteCodes.Length);
     Assert.AreEqual(0, this.block.Arity);
 }
 public void CompileTwoCommands()
 {
     ModelParser parser = new ModelParser("nil invokeWith: 10. Global := 20");
     this.compiler.CompileExpressions(parser.ParseExpressions());
     Assert.IsNotNull(this.block);
     Assert.AreEqual(3, this.block.NoConstants);
     Assert.AreEqual(1, this.block.NoGlobalNames);
     Assert.AreEqual(0, this.block.NoLocals);
     Assert.IsNotNull(this.block.ByteCodes);
     Assert.AreEqual(10, this.block.ByteCodes.Length);
     Assert.AreEqual(0, this.block.Arity);
 }
Exemple #5
0
        public void ParseTwoExpressions()
        {
            ModelParser parser = new ModelParser("x do. y do");
            IEnumerable<IExpression> expressions = parser.ParseExpressions();

            Assert.IsNotNull(expressions);

            Assert.AreEqual(2, expressions.Count());
            Assert.AreEqual("x do", expressions.First().AsString());
            Assert.AreEqual("y do", expressions.Skip(1).First().AsString());
        }
Exemple #6
0
        public void ParsePrimitiveWithExpression()
        {
            ModelParser parser = new ModelParser("<primitive: 60> a := 1");
            IEnumerable<IExpression> expressions = parser.ParseExpressions();

            Assert.IsNotNull(expressions);
            Assert.AreEqual(2, expressions.Count());
            Assert.IsInstanceOfType(expressions.First(), typeof(PrimitiveExpression));

            Assert.AreEqual("<primitive: 60>", expressions.First().AsString());
            Assert.AreEqual("a := 1", expressions.Skip(1).First().AsString());
        }