Parse and translate assignments.

This commit is contained in:
Graydon Hoare 2010-10-19 16:33:11 -07:00
parent b8cca0971f
commit 71b1f1d117
2 changed files with 50 additions and 18 deletions

View file

@ -564,6 +564,20 @@ io fn parse_or_expr(parser p) -> @ast.expr {
ret parse_binary_exprs(p, sub, vec(tup(token.OROR, ast.or)));
}
io fn parse_assign_expr(parser p) -> @ast.expr {
auto lo = p.get_span();
auto lhs = parse_or_expr(p);
alt (p.peek()) {
case (token.EQ) {
p.bump();
auto rhs = parse_expr(p);
ret @spanned(lo, rhs.span,
ast.expr_assign(lhs, rhs, none[@ast.ty]));
}
}
ret lhs;
}
io fn parse_if_expr(parser p) -> @ast.expr {
auto lo = p.get_span();
auto hi = lo;
@ -597,7 +611,7 @@ io fn parse_expr(parser p) -> @ast.expr {
ret parse_if_expr(p);
}
case (_) {
ret parse_or_expr(p);
ret parse_assign_expr(p);
}
}