Beispiel #1
0
class TestLexer(unittest.TestCase):
    def test(self):
        with open(TESTFILE, 'r') as f:
            self.buffer = f.read()
        print(self.buffer)
        self.lexer = Lexer()
        tokens = list(self.lexer.tokenize(self.buffer))
        pprint.pprint(tokens)
        self.assertEqual(len(tokens), 34)
    def parse(self, string):
        """
        top ::= definition | external | expression | EOF
        """

        lexer = Lexer()
        self.tokens = lexer.tokenize(string)
        self.next()

        if isinstance(self.current, EOFToken):
            pass
        elif isinstance(self.current, DefToken):
            print('Parsed a function definition.')
            return self.parse_definition()
        elif isinstance(self.current, ExternToken):
            print('Parsed an extern.')
            return self.parse_external()
        else:
            print('Parsed a top-level expression.')
            return self.parse_toplevel_expression()