def translate(self, ctx):
translation = []
scrutinee = ast.Name(id="__typy_with_scrutinee__")
translation.extend(
self.body_block.translate_assign(
ctx, scrutinee))
pat = self.pat
ctx_update = pat.ctx_update
condition, binding_translations = ctx.translate_pat(pat, scrutinee)
if astx.cond_vacuously_true(condition):
for (id, trans) in binding_translations.iteritems():
translation.append(ast.Assign(
targets=[ast.Name(id=ctx_update[id][0])],
value=trans))
else:
translation.append(ast.If(
test=condition,
body=list(_yield_binding_translation_assignments(
binding_translations, ctx_update)),
orelse=astx.expr_Raise_Exception_string("Match failure.")))
return translation
评论列表
文章目录