diff options
| author | Patrick Walton <[email protected]> | 2010-10-18 11:31:31 -0700 |
|---|---|---|
| committer | Patrick Walton <[email protected]> | 2010-10-18 11:31:31 -0700 |
| commit | 1c3e95e0a5d4bfc06d15a52b322567a83c948f72 (patch) | |
| tree | 77cc196fe7db2799d0297db78977771cbee42ade /src/comp/front/parser.rs | |
| parent | Encode and decode tag types in dwarf properly. Add list module to std. Shift ... (diff) | |
| download | rust-1c3e95e0a5d4bfc06d15a52b322567a83c948f72.tar.xz rust-1c3e95e0a5d4bfc06d15a52b322567a83c948f72.zip | |
Roll back the expr->lval change. We're now LL(1) again.
Diffstat (limited to 'src/comp/front/parser.rs')
| -rw-r--r-- | src/comp/front/parser.rs | 53 |
1 files changed, 3 insertions, 50 deletions
diff --git a/src/comp/front/parser.rs b/src/comp/front/parser.rs index 733e61ea..9393a02f 100644 --- a/src/comp/front/parser.rs +++ b/src/comp/front/parser.rs @@ -227,43 +227,6 @@ io fn parse_name(parser p, ast.ident id) -> ast.name { ret spanned(lo, tys.span, rec(ident=id, types=tys.node)); } -/** Parses any field or index selectors. */ -io fn parse_selectors(parser p, @ast.expr ex) -> @ast.expr { - if (p.peek() == token.DOT) { - auto lo = p.get_span(); - p.bump(); - - alt (p.peek()) { - case (token.LPAREN) { - p.bump(); - - auto idx = parse_expr(p); - expect(p, token.RPAREN); - - auto hi = p.get_span(); - auto lval = @spanned(lo, hi, ast.lval_index(ex, idx)); - auto lval_ex = @spanned(lo, hi, ast.expr_lval(lval)); - ret parse_selectors(p, lval_ex); - } - - case (token.IDENT(?ident)) { - p.bump(); - - auto hi = p.get_span(); - auto lval = @spanned(lo, hi, ast.lval_field(ex, ident)); - auto lval_ex = @spanned(lo, hi, ast.expr_lval(lval)); - ret parse_selectors(p, lval_ex); - } - - case (_) { - p.err("expecting '(' or field name after identifier"); - } - } - } - - ret ex; -} - io fn parse_possibly_mutable_expr(parser p) -> tup(bool, @ast.expr) { auto mut; if (p.peek() == token.MUTABLE) { @@ -335,14 +298,6 @@ io fn parse_bottom_expr(parser p) -> @ast.expr { ex = ast.expr_rec(es.node); } - case (token.IDENT(?i)) { - auto n = parse_name(p, i); - hi = p.get_span(); - auto lval = ast.lval_name(n, none[ast.referent]); - auto lval_sp = @spanned(lo, hi, lval); - ex = ast.expr_lval(lval_sp); - } - case (_) { alt (parse_lit(p)) { case (some[ast.lit](?lit)) { @@ -356,7 +311,7 @@ io fn parse_bottom_expr(parser p) -> @ast.expr { } } - ret parse_selectors(p, @spanned(lo, hi, ex)); + ret @spanned(lo, hi, ex); } io fn parse_path_expr(parser p) -> @ast.expr { @@ -372,15 +327,13 @@ io fn parse_path_expr(parser p) -> @ast.expr { case (token.IDENT(?i)) { hi = p.get_span(); p.bump(); - auto lv = @spanned(lo, hi, ast.lval_field(e, i)); - e = @spanned(lo, hi, ast.expr_lval(lv)); + e = @spanned(lo, hi, ast.expr_field(e, i)); } case (token.LPAREN) { auto ix = parse_bottom_expr(p); hi = ix.span; - auto lv = @spanned(lo, hi, ast.lval_index(e, ix)); - e = @spanned(lo, hi, ast.expr_lval(lv)); + e = @spanned(lo, hi, ast.expr_index(e, ix)); } } } |