Mercurial > python-compiler.rs
comparison src/ast_dump.rs @ 6:6f2bf13f4cb5
Add ast.While and ast.Break.
author | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> |
---|---|
date | Tue, 31 May 2016 04:22:35 +0100 |
parents | ddf372373a77 |
children | 680d15073f55 |
comparison
equal
deleted
inserted
replaced
5:ddf372373a77 | 6:6f2bf13f4cb5 |
---|---|
17 match *self { | 17 match *self { |
18 BinOp::BinAdd => "+", | 18 BinOp::BinAdd => "+", |
19 BinOp::BinMult => "*", | 19 BinOp::BinMult => "*", |
20 BinOp::BinEq => "==", | 20 BinOp::BinEq => "==", |
21 BinOp::BinLt => "<", | 21 BinOp::BinLt => "<", |
22 BinOp::BinGt => ">", | |
22 BinOp::Sub => "-", | 23 BinOp::Sub => "-", |
23 BinOp::Div => "/", | 24 BinOp::Div => "/", |
24 BinOp::Error => "BinOp::Error" | 25 BinOp::Error => "BinOp::Error" |
25 } | 26 } |
26 } | 27 } |
124 statements.join("\n") | 125 statements.join("\n") |
125 } else { | 126 } else { |
126 format!("{}\n{}else:\n{}", statements.join("\n"), make_indent(indent), orelse_.join("\n")) | 127 format!("{}\n{}else:\n{}", statements.join("\n"), make_indent(indent), orelse_.join("\n")) |
127 } | 128 } |
128 }), | 129 }), |
130 Statement::While(test, body, orelse) => format!("{}while {}:\n{}", make_indent(indent), test.to_string(), { | |
131 let mut statements = vec!(); | |
132 for arg in body { | |
133 statements.push(arg.to_string(indent + 1)); | |
134 } | |
135 | |
136 let mut orelse_ = vec!(); | |
137 for arg in orelse { | |
138 orelse_.push(arg.to_string(indent + 1)); | |
139 } | |
140 | |
141 if orelse_.is_empty() { | |
142 statements.join("\n") | |
143 } else { | |
144 format!("{}\n{}else:\n{}", statements.join("\n"), make_indent(indent), orelse_.join("\n")) | |
145 } | |
146 }), | |
129 Statement::For(target, iter, body, orelse) => format!("{}for {} in {}:\n{}", make_indent(indent), target.to_string(), iter.to_string(), { | 147 Statement::For(target, iter, body, orelse) => format!("{}for {} in {}:\n{}", make_indent(indent), target.to_string(), iter.to_string(), { |
130 let mut statements = vec!(); | 148 let mut statements = vec!(); |
131 for arg in body { | 149 for arg in body { |
132 statements.push(arg.to_string(indent + 1)); | 150 statements.push(arg.to_string(indent + 1)); |
133 } | 151 } |
158 exprs.push(alias); | 176 exprs.push(alias); |
159 } | 177 } |
160 exprs.join(", ") | 178 exprs.join(", ") |
161 }), | 179 }), |
162 Statement::Expr(expr) => format!("{}{}", make_indent(indent), expr.to_string()), | 180 Statement::Expr(expr) => format!("{}{}", make_indent(indent), expr.to_string()), |
181 Statement::Break => format!("{}break", make_indent(indent)), | |
163 Statement::Error => format!("{}Statement::Error", make_indent(indent)) | 182 Statement::Error => format!("{}Statement::Error", make_indent(indent)) |
164 } | 183 } |
165 } | 184 } |
166 } | 185 } |
167 | 186 |