예제 #1
0
        public void SkipTest()
        {
            var node = new AstNode(new Token(Token.TokenType.Keyword, "skip"));

            node.SetNodeType(AstNode.NodeType.AssemblerStatement);
            node.addChild(new AstNode(new Token(Token.TokenType.Number, "2")));

            var output = AsmBuffer.statementToString(node);

            Assert.AreEqual(output, "skip 2;");
        }
예제 #2
0
        public void ASRTest()
        {
            var node = new AstNode(new Token(Token.TokenType.Operator, ">>="));

            node.SetNodeType(AstNode.NodeType.OperationOnRegisters);
            var dereference = new AstNode(new Token(Token.TokenType.Register, "R1"));

            node.addChild(new AstNode(new Token(Token.TokenType.Register, "R0")));
            node.addChild(dereference);

            var output = AsmBuffer.statementToString(node);

            Assert.AreEqual(output, "R0 >>= R1;");
        }
예제 #3
0
        public void IfTest()
        {
            var node = new AstNode(new Token(Token.TokenType.Keyword, "if"));

            node.SetNodeType(AstNode.NodeType.AssemblerStatement);
            node.addChild(new AstNode(new Token(Token.TokenType.Register, "R0")));
            var goTo = new AstNode(new Token(Token.TokenType.Keyword, "goto"));

            node.addChild(goTo);
            goTo.addChild(new AstNode(new Token(Token.TokenType.Register, "R1")));

            var output = AsmBuffer.statementToString(node);

            Assert.AreEqual(output, "if R0 goto R1;");
        }
예제 #4
0
        public void StarTest()
        {
            var node = new AstNode(new Token(Token.TokenType.Operator, ":="));

            node.SetNodeType(AstNode.NodeType.OperationOnRegisters);
            var star = new AstNode(new Token(Token.TokenType.Operator, "*"));

            star.addChild(new AstNode(new Token(Token.TokenType.Register, "R1")));
            node.addChild(star);
            node.addChild(new AstNode(new Token(Token.TokenType.Register, "R0")));

            var output = AsmBuffer.statementToString(node);

            Assert.AreEqual(output, "* R1 := R0;");
        }