Skip to content

Commit f9144d5

Browse files
brsongraydon
authored andcommitted
Start generating AST nodes for #fmt
1 parent 1badf93 commit f9144d5

File tree

1 file changed

+34
-8
lines changed

1 file changed

+34
-8
lines changed

src/comp/front/extfmt.rs

Lines changed: 34 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
* combinations at the moment.
1414
*/
1515

16-
import front.parser;
16+
import util.common;
1717

1818
import std._str;
1919
import std._vec;
@@ -251,13 +251,39 @@ fn parse_type(str s, uint i, uint lim) -> tup(ty, uint) {
251251
}
252252

253253
fn pieces_to_expr(vec[piece] pieces, vec[@ast.expr] args) -> @ast.expr {
254-
auto lo = args.(0).span;
255-
auto hi = args.(0).span;
256-
auto strlit = ast.lit_str("TODO");
257-
auto spstrlit = @parser.spanned[ast.lit_](lo, hi, strlit);
258-
auto expr = ast.expr_lit(spstrlit, ast.ann_none);
259-
auto spexpr = @parser.spanned[ast.expr_](lo, hi, expr);
260-
ret spexpr;
254+
255+
fn make_new_str(common.span sp, str s) -> @ast.expr {
256+
auto strlit = ast.lit_str(s);
257+
auto spstrlit = @parser.spanned[ast.lit_](sp, sp, strlit);
258+
auto expr = ast.expr_lit(spstrlit, ast.ann_none);
259+
ret @parser.spanned[ast.expr_](sp, sp, expr);
260+
}
261+
262+
fn make_add_expr(common.span sp,
263+
@ast.expr lhs, @ast.expr rhs) -> @ast.expr {
264+
auto binexpr = ast.expr_binary(ast.add, lhs, rhs, ast.ann_none);
265+
ret @parser.spanned[ast.expr_](sp, sp, binexpr);
266+
}
267+
268+
auto sp = args.(0).span;
269+
auto n = 0;
270+
auto tmp_expr = make_new_str(sp, "whatever");
271+
272+
for (piece p in pieces) {
273+
alt (p) {
274+
case (piece_string(?s)) {
275+
auto s_expr = make_new_str(sp, s);
276+
tmp_expr = make_add_expr(sp, tmp_expr, s_expr);
277+
}
278+
case (piece_conv(?conv)) {
279+
}
280+
}
281+
}
282+
283+
// TODO: Remove this print and return the real expanded AST
284+
log "dumping expanded ast:";
285+
log pretty.print_expr(tmp_expr);
286+
ret make_new_str(sp, "TODO");
261287
}
262288

263289
//

0 commit comments

Comments
 (0)