public void CompileBlockWithDot() { Lexer lexer = new Lexer("[. 1. 2]"); ModelParser parser = new ModelParser(lexer); var result = parser.ParseBlock(); Assert.IsNotNull(result); }
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); } }
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()); }