parser.py 文件源码

python
阅读 21 收藏 0 点赞 0 评论 0

项目:pluto-lang 作者: Zac-Garby 项目源码 文件源码
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
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号