Mercurial > python-compiler.rs
comparison src/ast_convert.rs @ 71:2c1e2ce41263
Add ast.AsyncFor.
author | Bastien Orivel <eijebong@bananium.fr> |
---|---|
date | Mon, 13 Jun 2016 18:02:34 +0200 |
parents | a73eaf42bea1 |
children | 7ac23f4336b1 |
comparison
equal
deleted
inserted
replaced
70:c9b9165abb9e | 71:2c1e2ce41263 |
---|---|
534 let import_from_type = ast_module.get(py, "ImportFrom").unwrap(); | 534 let import_from_type = ast_module.get(py, "ImportFrom").unwrap(); |
535 let import_type = ast_module.get(py, "Import").unwrap(); | 535 let import_type = ast_module.get(py, "Import").unwrap(); |
536 let if_type = ast_module.get(py, "If").unwrap(); | 536 let if_type = ast_module.get(py, "If").unwrap(); |
537 let while_type = ast_module.get(py, "While").unwrap(); | 537 let while_type = ast_module.get(py, "While").unwrap(); |
538 let for_type = ast_module.get(py, "For").unwrap(); | 538 let for_type = ast_module.get(py, "For").unwrap(); |
539 let async_for_type = ast_module.get(py, "AsyncFor").unwrap(); | |
539 let expr_type = ast_module.get(py, "Expr").unwrap(); | 540 let expr_type = ast_module.get(py, "Expr").unwrap(); |
540 let break_type = ast_module.get(py, "Break").unwrap(); | 541 let break_type = ast_module.get(py, "Break").unwrap(); |
541 let delete_type = ast_module.get(py, "Delete").unwrap(); | 542 let delete_type = ast_module.get(py, "Delete").unwrap(); |
542 let pass_type = ast_module.get(py, "Pass").unwrap(); | 543 let pass_type = ast_module.get(py, "Pass").unwrap(); |
543 let continue_type = ast_module.get(py, "Continue").unwrap(); | 544 let continue_type = ast_module.get(py, "Continue").unwrap(); |
616 let test = parse_expr(py, test); | 617 let test = parse_expr(py, test); |
617 let body = parse_list(py, body, parse_statement); | 618 let body = parse_list(py, body, parse_statement); |
618 let orelse = parse_list(py, orelse, parse_statement); | 619 let orelse = parse_list(py, orelse, parse_statement); |
619 | 620 |
620 stmt::While(test, body, orelse) | 621 stmt::While(test, body, orelse) |
621 } else if is_instance(&ast, &for_type) { | 622 } else if is_instance(&ast, &for_type) || is_instance(&ast, &async_for_type) { |
622 let target = ast.getattr(py, "target").unwrap(); | 623 let target = ast.getattr(py, "target").unwrap(); |
623 let iter = ast.getattr(py, "iter").unwrap(); | 624 let iter = ast.getattr(py, "iter").unwrap(); |
624 let body = ast.getattr(py, "body").unwrap(); | 625 let body = ast.getattr(py, "body").unwrap(); |
625 let orelse = ast.getattr(py, "orelse").unwrap(); | 626 let orelse = ast.getattr(py, "orelse").unwrap(); |
626 | 627 |
627 let target = parse_expr(py, target); | 628 let target = parse_expr(py, target); |
628 let iter = parse_expr(py, iter); | 629 let iter = parse_expr(py, iter); |
629 let body = parse_list(py, body, parse_statement); | 630 let body = parse_list(py, body, parse_statement); |
630 let orelse = parse_list(py, orelse, parse_statement); | 631 let orelse = parse_list(py, orelse, parse_statement); |
631 | 632 |
632 stmt::For(target, iter, body, orelse) | 633 stmt::For(target, iter, body, orelse, is_instance(&ast, &async_for_type)) |
633 } else if is_instance(&ast, &assign_type) { | 634 } else if is_instance(&ast, &assign_type) { |
634 let targets = ast.getattr(py, "targets").unwrap(); | 635 let targets = ast.getattr(py, "targets").unwrap(); |
635 let value = ast.getattr(py, "value").unwrap(); | 636 let value = ast.getattr(py, "value").unwrap(); |
636 | 637 |
637 let targets = parse_list(py, targets, parse_expr); | 638 let targets = parse_list(py, targets, parse_expr); |