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()); }
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())); }
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); } }
private Assembler() { _grammar = new AsmStructuralGrammar(); }