aboutsummaryrefslogtreecommitdiff
path: root/src/comp
diff options
context:
space:
mode:
authorBrian Anderson <[email protected]>2011-02-27 18:23:16 -0500
committerGraydon Hoare <[email protected]>2011-03-02 10:28:14 -0800
commitf9144d5972aef3e7078b272703bf275691991297 (patch)
tree1a23adab045d6c22ba1ea254a3f3f9a66d0847b7 /src/comp
parentBegin an AST pretty-printer (diff)
downloadrust-f9144d5972aef3e7078b272703bf275691991297.tar.xz
rust-f9144d5972aef3e7078b272703bf275691991297.zip
Start generating AST nodes for #fmt
Diffstat (limited to 'src/comp')
-rw-r--r--src/comp/front/extfmt.rs42
1 files changed, 34 insertions, 8 deletions
diff --git a/src/comp/front/extfmt.rs b/src/comp/front/extfmt.rs
index 998bfa4d..38c2ea8c 100644
--- a/src/comp/front/extfmt.rs
+++ b/src/comp/front/extfmt.rs
@@ -13,7 +13,7 @@
* combinations at the moment.
*/
-import front.parser;
+import util.common;
import std._str;
import std._vec;
@@ -251,13 +251,39 @@ fn parse_type(str s, uint i, uint lim) -> tup(ty, uint) {
}
fn pieces_to_expr(vec[piece] pieces, vec[@ast.expr] args) -> @ast.expr {
- auto lo = args.(0).span;
- auto hi = args.(0).span;
- auto strlit = ast.lit_str("TODO");
- auto spstrlit = @parser.spanned[ast.lit_](lo, hi, strlit);
- auto expr = ast.expr_lit(spstrlit, ast.ann_none);
- auto spexpr = @parser.spanned[ast.expr_](lo, hi, expr);
- ret spexpr;
+
+ fn make_new_str(common.span sp, str s) -> @ast.expr {
+ auto strlit = ast.lit_str(s);
+ auto spstrlit = @parser.spanned[ast.lit_](sp, sp, strlit);
+ auto expr = ast.expr_lit(spstrlit, ast.ann_none);
+ ret @parser.spanned[ast.expr_](sp, sp, expr);
+ }
+
+ fn make_add_expr(common.span sp,
+ @ast.expr lhs, @ast.expr rhs) -> @ast.expr {
+ auto binexpr = ast.expr_binary(ast.add, lhs, rhs, ast.ann_none);
+ ret @parser.spanned[ast.expr_](sp, sp, binexpr);
+ }
+
+ auto sp = args.(0).span;
+ auto n = 0;
+ auto tmp_expr = make_new_str(sp, "whatever");
+
+ for (piece p in pieces) {
+ alt (p) {
+ case (piece_string(?s)) {
+ auto s_expr = make_new_str(sp, s);
+ tmp_expr = make_add_expr(sp, tmp_expr, s_expr);
+ }
+ case (piece_conv(?conv)) {
+ }
+ }
+ }
+
+ // TODO: Remove this print and return the real expanded AST
+ log "dumping expanded ast:";
+ log pretty.print_expr(tmp_expr);
+ ret make_new_str(sp, "TODO");
}
//