Mercurial > python-compiler.rs
comparison src/ast_convert.rs @ 78:f1a845e4121b
Add ast.GeneratorExp.
author | Bastien Orivel <eijebong@bananium.fr> |
---|---|
date | Mon, 13 Jun 2016 19:56:45 +0200 |
parents | 7d1406181aae |
children | 6bf54bff8dbd |
comparison
equal
deleted
inserted
replaced
77:7d1406181aae | 78:f1a845e4121b |
---|---|
304 let await_type = ast_module.get(py, "Await").unwrap(); | 304 let await_type = ast_module.get(py, "Await").unwrap(); |
305 let yield_type = ast_module.get(py, "Yield").unwrap(); | 305 let yield_type = ast_module.get(py, "Yield").unwrap(); |
306 let yield_from_type = ast_module.get(py, "YieldFrom").unwrap(); | 306 let yield_from_type = ast_module.get(py, "YieldFrom").unwrap(); |
307 let set_type = ast_module.get(py, "Set").unwrap(); | 307 let set_type = ast_module.get(py, "Set").unwrap(); |
308 let setcomp_type = ast_module.get(py, "SetComp").unwrap(); | 308 let setcomp_type = ast_module.get(py, "SetComp").unwrap(); |
309 let generatorexp_type = ast_module.get(py, "GeneratorExp").unwrap(); | |
309 | 310 |
310 assert!(is_instance(&ast, &ast_type)); | 311 assert!(is_instance(&ast, &ast_type)); |
311 | 312 |
312 if is_instance(&ast, &attribute_type) { | 313 if is_instance(&ast, &attribute_type) { |
313 let value = ast.getattr(py, "value").unwrap(); | 314 let value = ast.getattr(py, "value").unwrap(); |
433 | 434 |
434 let elt = parse_expr(py, elt); | 435 let elt = parse_expr(py, elt); |
435 let generators = parse_list(py, generators, parse_comprehension); | 436 let generators = parse_list(py, generators, parse_comprehension); |
436 | 437 |
437 expr::SetComp(Box::new(elt), generators) | 438 expr::SetComp(Box::new(elt), generators) |
439 } else if is_instance(&ast, &generatorexp_type) { | |
440 let elt = ast.getattr(py, "elt").unwrap(); | |
441 let generators = ast.getattr(py, "generators").unwrap(); | |
442 | |
443 let elt = parse_expr(py, elt); | |
444 let generators = parse_list(py, generators, parse_comprehension); | |
445 | |
446 expr::GeneratorExp(Box::new(elt), generators) | |
438 } else { | 447 } else { |
439 println!("expr {}", ast); | 448 println!("expr {}", ast); |
440 unreachable!() | 449 unreachable!() |
441 } | 450 } |
442 } | 451 } |