提交 c9afe78c 编写于 作者: P Patrick Walton

Parse autos

上级 8a7a0308
......@@ -541,24 +541,26 @@ fn spanned[T](&span lo, &span hi, &T node) -> ast.spanned[T] {
}
}
io fn parse_initializer(parser p) -> option[@ast.expr] {
if (p.peek() == token.EQ) {
p.bump();
ret some(parse_expr(p));
}
ret none[@ast.expr];
}
io fn parse_let(parser p) -> @ast.decl {
auto lo = p.get_span();
expect(p, token.LET);
auto ty = parse_ty(p);
auto id = parse_ident(p);
auto init = parse_initializer(p);
auto init;
if (p.peek() == token.EQ) {
p.bump();
init = some(parse_expr(p));
} else {
init = none[@ast.expr];
}
auto hi = p.get_span();
expect(p, token.SEMI);
auto hi = p.get_span();
ret @spanned(lo, hi, ast.decl_local(id, some(ty), init));
}
......@@ -580,6 +582,17 @@ fn spanned[T](&span lo, &span hi, &T node) -> ast.spanned[T] {
ret @spanned(lo, hi, ast.stmt_decl(leht));
}
case (token.AUTO) {
p.bump();
auto id = parse_ident(p);
auto init = parse_initializer(p);
auto hi = p.get_span();
expect(p, token.SEMI);
auto decl = ast.decl_local(id, none[@ast.ty], init);
ret @spanned(lo, hi, ast.stmt_decl(@spanned(lo, hi, decl)));
}
// Handle the (few) block-expr stmts first.
case (token.IF) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册