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()