Esempio n. 1
0
        public void ParseLine(string value, bool expected)
        {
            var grammer = new AsmStructuralGrammar();
            var p       = new ParserState(value);

            Assert.That(grammer.line.Match(p), Is.EqualTo(expected));

            var printer = new CppStructuralOutputAsXml();

            printer.Print(p.GetRoot());
            Console.WriteLine(printer.AsXml());
        }
Esempio n. 2
0
        public void AssembleSimple()
        {
            var x = new[]
            {
                new Instruction(OpCode.Mov, "Put 1 into r1").Destination(Register.A).Source(1),
                new Instruction(OpCode.Exit, "Exit with r1").Source(Register.A),
            };

            var grammer = new AsmStructuralGrammar();
            var p       = new ParserState(TestPrograms.ReallySimpleProgram);

            bool parseResult = grammer.program.Match(p);

            Assert.That(parseResult, Is.True);

            var assembler = new Assembler(p);
            var code      = assembler.Assemble().ToList();

            using (var w = new InstructionTextWriter(Console.Out))
                code.ForEach(w.Write);

            Assert.That(code, Is.EquivalentTo(x).Using(new InstructionComparer()));
        }
Esempio n. 3
0
        public void OpenFile(string file)
        {
            var grammar = new AsmStructuralGrammar();

            file = string.Concat(_testPaths[Environment.MachineName], file);

            var outputFile = Path.ChangeExtension(file, ".asm");

            using (var stringWriter = File.CreateText(outputFile))
                using (var writer = new InstructionTextWriter(stringWriter))
                {
                    string source = File.ReadAllText(file);
                    var    parser = new ParserState(source);
                    var    result = grammar.program.Match(parser);
                    Assert.That(result, Is.True);

                    var printer = new CppStructuralOutputAsXml();
                    printer.Print(parser.GetRoot());
                    Console.WriteLine(printer.AsXml());

                    var assembler = new Assembler(parser);
                    assembler.Assemble().ToList().ForEach(writer.Write);
                }
        }
Esempio n. 4
0
 private Assembler()
 {
     _grammar = new AsmStructuralGrammar();
 }