예제 #1
0
    def test_header(self):
        text = """
        module trans/runtime/environment
        """

        sut = Parser(text)

        self.assertEqual(sut.all().name, "trans/runtime/environment")
예제 #2
0
    def test_comments(self):
        text = """
        imports
            trans/runtime/a
            trans/runtime/b
        """

        sut = Parser(text)

        self.assertEqual(len(sut.all().imports), 2)
예제 #3
0
    def test_parentheses(self):
        text = """
        rules
            Lit(s) --> NumV(parseI(s))
            Plus(NumV(a), NumV(b)) --> NumV(addI(a, b))
        """
        sut = Parser(text)

        mod = sut.all()

        self.assertEqual(2, len(mod.rules))
        self.assertEqual(ApplTerm("Lit", [VarTerm("s", 0)]),
                         mod.rules[0].before)
        self.assertEqual(
            ApplTerm(
                "NumV", [ApplTerm(
                    "addI", [VarTerm("a", 0), VarTerm("b", 1)])]),
            mod.rules[1].after)