def parse_class_declaration(self):
stmt = ast.ClassStatement(self.cur_tok, None, [], None)
if not self.expect(token.ID):
return None
stmt.name = self.parse_id(False)
if self.peek_is(token.EXTENDS):
self.next()
self.next()
stmt.parent = self.parse_id(False)
if not self.expect(token.LBRACE):
return None
self.next()
if self.cur_is(token.RBRACE):
return stmt
while self.cur_in([token.INIT, token.DEF]):
if self.cur_is(token.INIT):
stmt.methods.append(self.parse_init_stmt())
elif self.cur_is(token.DEF):
stmt.methods.append(self.parse_def_stmt())
if not self.expect(token.SEMI):
return None
if self.peek_in([token.INIT, token.DEF]):
self.next()
if not self.expect(token.RBRACE):
return None
return stmt
评论列表
文章目录