Exemple #1
0
        public void ParseComment()
        {
            var grammar     = new CppStructuralGrammar();
            var output      = new CppStructuralOutputAsXml();
            var parserState = CppSourceParser.Parse("/* Comment */", output, rule: grammar.declaration_list);

            Assert.That(parserState.ParseException, Is.Null);

            Console.WriteLine(output.AsXml());
        }
Exemple #2
0
        public void Expression(string integer, bool expected)
        {
            var grammer = new AndyStructuralGrammar();
            var printer = new CppStructuralOutputAsXml();
            var p       = new ParserState(integer);

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

            printer.Print(p.GetRoot());
            Console.WriteLine(printer.AsXml());
        }
Exemple #3
0
        public void Variable(string expression, bool expected)
        {
            var grammer = new AndyStructuralGrammar();
            var printer = new CppStructuralOutputAsXml();
            var p       = new ParserState(expression);

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

            printer.Print(p.GetRoot());
            Console.WriteLine(printer.AsXml());
        }
Exemple #4
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());
        }
Exemple #5
0
        public void ParseOpCode(string value, bool expected)
        {
            var grammer = new AsmBaseGrammar();
            var printer = new CppStructuralOutputAsXml();
            var p       = new ParserState(value);

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

            ParseNode node = p.GetRoot();

            Console.WriteLine(node.Value);
        }
Exemple #6
0
        public void Can_parse(string source)
        {
            var sourceFile = Path.Combine(Source_Directory, source);

            if (!File.Exists(sourceFile))
            {
                Assert.Inconclusive("Cannot find filename " + sourceFile);
            }

            var output = new CppStructuralOutputAsXml();

            var result = CppFileParser.Parse(sourceFile, output);

            Console.WriteLine(result.GetRoot());
            Assert.That(result.ParseException, Is.Null);

            Console.WriteLine("Actual");
            Console.WriteLine(output.AsXml());
            Console.WriteLine();
        }
Exemple #7
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);
                }
        }