~[rhs]);
let p = parser(cx.parse_sess(), cx.cfg(),
trncbr as reader, SOURCE_FILE);
- return mr_expr(p.parse_expr());
+ let e = p.parse_expr();
+ return mr_expr(e);
}
failure(sp, msg) => if sp.lo >= best_fail_spot.lo {
best_fail_spot = sp;
import result::result;
import either::{either, left, right};
import std::map::{hashmap, str_hash};
-import token::{can_begin_expr, is_ident, is_plain_ident, INTERPOLATED};
+import token::{can_begin_expr, is_ident, is_ident_or_path, is_plain_ident,
+ INTERPOLATED};
import codemap::{span,fss_none};
import util::interner;
import ast_util::{spanned, respan, mk_sp, ident_to_path, operator_prec};
}
}
tok => {
- if !is_ident(tok) ||
+ if !is_ident_or_path(tok) ||
self.is_keyword(~"true") || self.is_keyword(~"false") {
let val = self.parse_expr_res(RESTRICT_NO_BAR_OP);
if self.eat_keyword(~"to") {
alt t { IDENT(_, _) => true, _ => false }
}
+pure fn is_ident_or_path(t: token) -> bool {
+ alt t {
+ IDENT(_, _) | INTERPOLATED(nt_path(*)) => true,
+ _ => false
+ }
+}
+
pure fn is_plain_ident(t: token) -> bool {
alt t { IDENT(_, false) => true, _ => false }
}