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