Esempio n. 1
0
 public static MineDefineExecutable Compile(Stream input)
 {
     Console.WriteLine("Lexing");
     var tokens = new MineDefineLexer(input).Lex();
     Console.WriteLine("\nTokens:");
     Console.WriteLine(string.Join(", ", new MineDefineLexer(input).Lex()));
     Console.WriteLine("\nParsing");
     var ast = new MineDefineParser(tokens).Parse();
     Console.WriteLine("\nAST:");
     Console.WriteLine(ast.ToString());
     Console.WriteLine("\nLowering");
     ast = new StandaloneTransformSugar().Transform(ast);
     Console.WriteLine("Planning");
     var layout = new MineDefineLayout().Layout(ast);
     return new MineDefineExecutable(ast,layout);
 }
        public void ItConvertsNoBlockTransformsToRestOfParent()
        {
            var ast = new MineDefineAST(new IStatement[] {
                new BuildByIdentifier(BuildShape.Box, new Dimension(), new Location(), "wood"),
                new OriginTransformStatement(new AbsoluteTransformInstructions(AbsoluteOriginTransform.Down, 1), null),
                new BuildByIdentifier(BuildShape.Box, new Dimension(), new Location(), "stone"),
            });

            var sugar = new StandaloneTransformSugar();
            var done = sugar.Transform(ast);

            Assert.AreEqual(2, done.Statements.Count);
            Assert.IsInstanceOf<BuildByIdentifier>(done.Statements[0]);
            Assert.AreEqual("wood", ((BuildByIdentifier)done.Statements[0]).Identifier);

            var trans = (OriginTransformStatement) done.Statements[1];

            Assert.AreEqual(1, trans.Statements.Count);
            Assert.IsInstanceOf<BuildByIdentifier>(trans.Statements[0]);
            Assert.AreEqual("stone", ((BuildByIdentifier)trans.Statements[0]).Identifier);
        }