Mercurial > python-compiler.rs
comparison src/ast_dump.rs @ 2:5fc7c2790d8c
Add class support.
author | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> |
---|---|
date | Tue, 31 May 2016 02:31:55 +0100 |
parents | b90e49ab734b |
children | 326d7f2a94d4 |
comparison
equal
deleted
inserted
replaced
1:b90e49ab734b | 2:5fc7c2790d8c |
---|---|
66 } | 66 } |
67 | 67 |
68 impl Statement { | 68 impl Statement { |
69 fn to_string(&self, indent: usize) -> String { | 69 fn to_string(&self, indent: usize) -> String { |
70 match self.clone() { | 70 match self.clone() { |
71 Statement::ClassDef(name, classes, body) => format!("{}def {}({}):\n{}", make_indent(indent), name, { | |
72 let mut bases = vec!(); | |
73 for class in classes { | |
74 bases.push(class.to_string()); | |
75 } | |
76 bases.join(", ") | |
77 }, { | |
78 let mut statements = vec!(); | |
79 for statement in body { | |
80 statements.push(statement.to_string(indent + 1)); | |
81 } | |
82 statements.join("\n") | |
83 }), | |
71 Statement::FunctionDef(Expr::Name(name), arguments, body) => format!("{}def {}({}):\n{}", make_indent(indent), name, { | 84 Statement::FunctionDef(Expr::Name(name), arguments, body) => format!("{}def {}({}):\n{}", make_indent(indent), name, { |
72 let mut args = vec!(); | 85 let mut args = vec!(); |
73 for arg in arguments { | 86 for arg in arguments { |
74 args.push(arg.to_string()); | 87 args.push(arg.to_string()); |
75 } | 88 } |