def parse_if_expr(self):
expr = ast.IfExpression(self.cur_tok, None, None, None)
if not self.expect(token.LPAREN):
return None
self.next()
expr.condition = self.parse_expr(LOWEST)
if not self.expect(token.RPAREN):
return None
if not self.expect(token.LBRACE):
return None
expr.consequence = self.parse_block_statement()
if self.peek_is(token.ELSE):
self.next()
if not self.expect(token.LBRACE):
return None
expr.alternative = self.parse_block_statement()
elif self.peek_is(token.ELIF):
self.next()
expr.alternative = ast.BlockStatement(
self.cur_tok,
[ast.ExpressionStatement(self.cur_tok, self.parse_if_expr())]
)
return expr
评论列表
文章目录