示例#1
0
 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)
示例#2
0
    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()