about summary refs log tree commit diff
path: root/src/librustsyntax/parse/parser.rs
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2012-04-22 16:58:04 -0700
committerBrian Anderson <banderson@mozilla.com>2012-04-22 17:24:49 -0700
commit512927573e08aba67832146a6097c8f6142f4fd4 (patch)
tree86f92f103367b8b47c0675c6313a0abd9c7a7ce4 /src/librustsyntax/parse/parser.rs
parent7321c1717128d8904f1c7862fb782250fdba6d92 (diff)
downloadrust-512927573e08aba67832146a6097c8f6142f4fd4.tar.gz
rust-512927573e08aba67832146a6097c8f6142f4fd4.zip
syntax: Replace token::DOLLAR_PAREN, DOLLAR_NUM with just DOLLAR
Figure the rest out in the parser
Diffstat (limited to 'src/librustsyntax/parse/parser.rs')
-rw-r--r--src/librustsyntax/parse/parser.rs32
1 files changed, 20 insertions, 12 deletions
diff --git a/src/librustsyntax/parse/parser.rs b/src/librustsyntax/parse/parser.rs
index 44d71fb3657..d4160e89bca 100644
--- a/src/librustsyntax/parse/parser.rs
+++ b/src/librustsyntax/parse/parser.rs
@@ -327,7 +327,7 @@ fn parse_region(p: parser) -> ast::region {
 fn parse_ty(p: parser, colons_before_params: bool) -> @ast::ty {
     let lo = p.span.lo;
 
-    alt have_dollar(p) {
+    alt maybe_parse_dollar_mac(p) {
       some(e) {
         ret @{id: p.get_id(),
               node: ast::ty_mac(spanned(lo, p.span.hi, e)),
@@ -440,19 +440,27 @@ fn parse_fn_block_arg(p: parser) -> ast::arg {
     ret {mode: m, ty: t, ident: i, id: p.get_id()};
 }
 
-fn have_dollar(p: parser) -> option<ast::mac_> {
+fn maybe_parse_dollar_mac(p: parser) -> option<ast::mac_> {
     alt p.token {
-      token::DOLLAR_NUM(num) {
-        p.bump();
-        some(ast::mac_var(num))
-      }
-      token::DOLLAR_LPAREN {
+      token::DOLLAR {
         let lo = p.span.lo;
         p.bump();
-        let e = parse_expr(p);
-        expect(p, token::RPAREN);
-        let hi = p.last_span.hi;
-        some(ast::mac_aq(ast_util::mk_sp(lo,hi), e))
+        alt p.token {
+          token::LIT_INT(num, ast::ty_i) {
+            p.bump();
+            some(ast::mac_var(num as uint))
+          }
+          token::LPAREN {
+            p.bump();
+            let e = parse_expr(p);
+            expect(p, token::RPAREN);
+            let hi = p.last_span.hi;
+            some(ast::mac_aq(ast_util::mk_sp(lo,hi), e))
+          }
+          _ {
+            p.fatal("expected `(` or integer literal");
+          }
+        }
       }
       _ {none}
     }
@@ -623,7 +631,7 @@ fn parse_bottom_expr(p: parser) -> pexpr {
 
     let mut ex: ast::expr_;
 
-    alt have_dollar(p) {
+    alt maybe_parse_dollar_mac(p) {
       some(x) {ret pexpr(mk_mac_expr(p, lo, p.span.hi, x));}
       _ {}
     }