提交 a7eb1ac9 编写于 作者: G Graydon Hoare

Move call_expr parse rule to the place where it needs to be to understand complex calls.

上级 e0998847
......@@ -392,20 +392,6 @@ fn spanned[T](&span lo, &span hi, &T node) -> ast.spanned[T] {
auto n = parse_name(p, i);
hi = n.span;
ex = ast.expr_name(n, none[ast.def], ast.ann_none);
alt (p.peek()) {
case (token.LPAREN) {
// Call expr.
auto pf = parse_expr;
auto es = parse_seq[@ast.expr](token.LPAREN,
token.RPAREN,
some(token.COMMA),
pf, p);
ex = ast.expr_call(@spanned(lo, hi, ex),
es.node, ast.ann_none);
hi = es.span;
}
case (_) { /* fall through */ }
}
}
case (token.LPAREN) {
......@@ -488,6 +474,19 @@ fn spanned[T](&span lo, &span hi, &T node) -> ast.spanned[T] {
auto hi = e.span;
while (true) {
alt (p.peek()) {
case (token.LPAREN) {
// Call expr.
auto pf = parse_expr;
auto es = parse_seq[@ast.expr](token.LPAREN,
token.RPAREN,
some(token.COMMA),
pf, p);
hi = es.span;
auto e_ = ast.expr_call(e, es.node, ast.ann_none);
e = @spanned(lo, hi, e_);
}
case (token.DOT) {
p.bump();
alt (p.peek()) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册