aboutsummaryrefslogtreecommitdiff
path: root/src/comp/front/parser.rs
diff options
context:
space:
mode:
authorPatrick Walton <[email protected]>2010-10-18 11:31:31 -0700
committerPatrick Walton <[email protected]>2010-10-18 11:31:31 -0700
commit1c3e95e0a5d4bfc06d15a52b322567a83c948f72 (patch)
tree77cc196fe7db2799d0297db78977771cbee42ade /src/comp/front/parser.rs
parentEncode and decode tag types in dwarf properly. Add list module to std. Shift ... (diff)
downloadrust-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.rs53
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));
}
}
}