ParseBlock() public method

public ParseBlock ( ) : IExpression
return IExpression
Beispiel #1
0
 public void CompileBlockWithDot()
 {
     Lexer lexer = new Lexer("[. 1. 2]");
     ModelParser parser = new ModelParser(lexer);
     var result = parser.ParseBlock();
     Assert.IsNotNull(result);
 }
Beispiel #2
0
 public Block CompileBlock(string text)
 {
     ModelParser parser = new ModelParser(text);
     var expr = parser.ParseBlock();
     Block block = new Block(text);
     BytecodeCompiler compiler = new BytecodeCompiler(block);
     compiler.CompileExpression(expr);
     return block;
 }
        public void CompileBlocks()
        {
            IList<ExpressionResult> results = ExpressionResult.LoadExpressionResults("Blocks.txt");

            foreach (var result in results)
            {
                ModelParser parser = new ModelParser(result.Text);
                Block block = new Block();
                BytecodeCompiler compiler = new BytecodeCompiler(block);
                compiler.CompileExpression(parser.ParseBlock());
                result.ValidateBlock(block);
            }
        }
Beispiel #4
0
        public void ParseFreeBlockWithLocalVariables()
        {
            ModelParser parser = new ModelParser("| x y | ^a + b");
            IExpression expression = parser.ParseBlock();

            Assert.IsNotNull(expression);
            Assert.IsInstanceOfType(expression, typeof(FreeBlockExpression));

            FreeBlockExpression bexpression = (FreeBlockExpression)expression;

            Assert.IsNotNull(bexpression.Body);
            Assert.IsInstanceOfType(bexpression.Body.First(), typeof(ReturnExpression));
            Assert.AreEqual(2, bexpression.LocalVariables.Count);
            Assert.AreEqual("x", bexpression.LocalVariables[0]);
            Assert.AreEqual("y", bexpression.LocalVariables[1]);

            Assert.AreEqual("| x y | ^a + b", expression.AsString());
        }