about summary refs log tree commit diff
path: root/src/libsyntax/parse/parser.rs
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2014-10-29 10:22:01 +0000
committerbors <bors@rust-lang.org>2014-10-29 10:22:01 +0000
commit3bc545373df4c81ba223a8bece14cbc27eb85a4d (patch)
tree6f2bc6000e1b8b10a1a74aedc57fa9d1f0fc565b /src/libsyntax/parse/parser.rs
parent124508dea1caf213886e5e1a02d425cac8dd0b54 (diff)
parent665ad9c175f746b78c7eae81432b543d2e16c3c9 (diff)
downloadrust-3bc545373df4c81ba223a8bece14cbc27eb85a4d.tar.gz
rust-3bc545373df4c81ba223a8bece14cbc27eb85a4d.zip
auto merge of #18365 : bjz/rust/token, r=alexcrichton
[breaking-change]

(for syntax-extensions)

- Token variant identifiers have been converted to PascalCase for consistency with Rust coding standards
- Some free-functions in `syntax::token` have been converted to methods on `syntax::token::Token`:
    - `can_begin_expr`         -> `Token::can_begin_expr`
    - `close_delimiter_for`    -> `Token::get_close_delimiter`
    - `is_lit`                 -> `Token::is_lit`
    - `is_ident`               -> `Token::is_ident`
    - `is_path`                -> `Token::is_path`
    - `is_plain_ident`         -> `Token::is_plain_ident`
    - `is_lifetime`            -> `Token::is_lifetime`
    - `is_mutability`          -> `Token::is_mutability`
    - `to_binop`               -> `Token::to_binop`
    - `is_keyword`             -> `Token::is_keyword`
    - `is_any_keyword`         -> `Token:is_any_keyword`
    - `is_strict_keyword`      -> `Token::is_strict_keyword`
    - `is_reserved_keyword`    -> `Token::is_reserved_keyword`
    - `mtwt_token_eq`          -> `Token::mtwt_eq`
- `token::Ident` now takes an enum instead of a boolean for clarity
- `token::{to_string, binop_to_string}` were moved to `pprust::{token_to_string, binop_to_string}`
Diffstat (limited to 'src/libsyntax/parse/parser.rs')
-rw-r--r--src/libsyntax/parse/parser.rs1040
1 files changed, 506 insertions, 534 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs
index 7bf751c2d5e..654de709566 100644
--- a/src/libsyntax/parse/parser.rs
+++ b/src/libsyntax/parse/parser.rs
@@ -74,11 +74,11 @@ use parse::common::{seq_sep_trailing_allowed};
 use parse::lexer::Reader;
 use parse::lexer::TokenAndSpan;
 use parse::obsolete::*;
-use parse::token::{INTERPOLATED, InternedString, can_begin_expr};
-use parse::token::{is_ident, is_ident_or_path, is_plain_ident};
-use parse::token::{keywords, special_idents, token_to_binop};
+use parse::token::InternedString;
+use parse::token::{keywords, special_idents};
 use parse::token;
 use parse::{new_sub_parser_from_file, ParseSess};
+use print::pprust;
 use ptr::P;
 use owned_slice::OwnedSlice;
 
@@ -134,34 +134,33 @@ enum ItemOrViewItem {
 }
 
 
-/// Possibly accept an `INTERPOLATED` expression (a pre-parsed expression
-/// dropped into the token stream, which happens while parsing the
-/// result of macro expansion)
-/// Placement of these is not as complex as I feared it would be.
-/// The important thing is to make sure that lookahead doesn't balk
-/// at INTERPOLATED tokens
+/// Possibly accept an `token::Interpolated` expression (a pre-parsed expression
+/// dropped into the token stream, which happens while parsing the result of
+/// macro expansion). Placement of these is not as complex as I feared it would
+/// be. The important thing is to make sure that lookahead doesn't balk at
+/// `token::Interpolated` tokens.
 macro_rules! maybe_whole_expr (
     ($p:expr) => (
         {
             let found = match $p.token {
-                INTERPOLATED(token::NtExpr(ref e)) => {
+                token::Interpolated(token::NtExpr(ref e)) => {
                     Some((*e).clone())
                 }
-                INTERPOLATED(token::NtPath(_)) => {
+                token::Interpolated(token::NtPath(_)) => {
                     // FIXME: The following avoids an issue with lexical borrowck scopes,
                     // but the clone is unfortunate.
                     let pt = match $p.token {
-                        INTERPOLATED(token::NtPath(ref pt)) => (**pt).clone(),
+                        token::Interpolated(token::NtPath(ref pt)) => (**pt).clone(),
                         _ => unreachable!()
                     };
                     let span = $p.span;
                     Some($p.mk_expr(span.lo, span.hi, ExprPath(pt)))
                 }
-                INTERPOLATED(token::NtBlock(_)) => {
+                token::Interpolated(token::NtBlock(_)) => {
                     // FIXME: The following avoids an issue with lexical borrowck scopes,
                     // but the clone is unfortunate.
                     let b = match $p.token {
-                        INTERPOLATED(token::NtBlock(ref b)) => (*b).clone(),
+                        token::Interpolated(token::NtBlock(ref b)) => (*b).clone(),
                         _ => unreachable!()
                     };
                     let span = $p.span;
@@ -185,13 +184,13 @@ macro_rules! maybe_whole (
     ($p:expr, $constructor:ident) => (
         {
             let found = match ($p).token {
-                INTERPOLATED(token::$constructor(_)) => {
+                token::Interpolated(token::$constructor(_)) => {
                     Some(($p).bump_and_get())
                 }
                 _ => None
             };
             match found {
-                Some(INTERPOLATED(token::$constructor(x))) => {
+                Some(token::Interpolated(token::$constructor(x))) => {
                     return x.clone()
                 }
                 _ => {}
@@ -201,13 +200,13 @@ macro_rules! maybe_whole (
     (no_clone $p:expr, $constructor:ident) => (
         {
             let found = match ($p).token {
-                INTERPOLATED(token::$constructor(_)) => {
+                token::Interpolated(token::$constructor(_)) => {
                     Some(($p).bump_and_get())
                 }
                 _ => None
             };
             match found {
-                Some(INTERPOLATED(token::$constructor(x))) => {
+                Some(token::Interpolated(token::$constructor(x))) => {
                     return x
                 }
                 _ => {}
@@ -217,13 +216,13 @@ macro_rules! maybe_whole (
     (deref $p:expr, $constructor:ident) => (
         {
             let found = match ($p).token {
-                INTERPOLATED(token::$constructor(_)) => {
+                token::Interpolated(token::$constructor(_)) => {
                     Some(($p).bump_and_get())
                 }
                 _ => None
             };
             match found {
-                Some(INTERPOLATED(token::$constructor(x))) => {
+                Some(token::Interpolated(token::$constructor(x))) => {
                     return (*x).clone()
                 }
                 _ => {}
@@ -233,13 +232,13 @@ macro_rules! maybe_whole (
     (Some $p:expr, $constructor:ident) => (
         {
             let found = match ($p).token {
-                INTERPOLATED(token::$constructor(_)) => {
+                token::Interpolated(token::$constructor(_)) => {
                     Some(($p).bump_and_get())
                 }
                 _ => None
             };
             match found {
-                Some(INTERPOLATED(token::$constructor(x))) => {
+                Some(token::Interpolated(token::$constructor(x))) => {
                     return Some(x.clone()),
                 }
                 _ => {}
@@ -249,13 +248,13 @@ macro_rules! maybe_whole (
     (iovi $p:expr, $constructor:ident) => (
         {
             let found = match ($p).token {
-                INTERPOLATED(token::$constructor(_)) => {
+                token::Interpolated(token::$constructor(_)) => {
                     Some(($p).bump_and_get())
                 }
                 _ => None
             };
             match found {
-                Some(INTERPOLATED(token::$constructor(x))) => {
+                Some(token::Interpolated(token::$constructor(x))) => {
                     return IoviItem(x.clone())
                 }
                 _ => {}
@@ -265,13 +264,13 @@ macro_rules! maybe_whole (
     (pair_empty $p:expr, $constructor:ident) => (
         {
             let found = match ($p).token {
-                INTERPOLATED(token::$constructor(_)) => {
+                token::Interpolated(token::$constructor(_)) => {
                     Some(($p).bump_and_get())
                 }
                 _ => None
             };
             match found {
-                Some(INTERPOLATED(token::$constructor(x))) => {
+                Some(token::Interpolated(token::$constructor(x))) => {
                     return (Vec::new(), x)
                 }
                 _ => {}
@@ -336,7 +335,7 @@ pub struct Parser<'a> {
 }
 
 fn is_plain_ident_or_underscore(t: &token::Token) -> bool {
-    is_plain_ident(t) || *t == token::UNDERSCORE
+    t.is_plain_ident() || *t == token::Underscore
 }
 
 /// Get a token the parser cares about
@@ -344,7 +343,7 @@ fn real_token(rdr: &mut Reader) -> TokenAndSpan {
     let mut t = rdr.next_token();
     loop {
         match t.tok {
-            token::WS | token::COMMENT | token::SHEBANG(_) => {
+            token::Whitespace | token::Comment | token::Shebang(_) => {
                 t = rdr.next_token();
             },
             _ => break
@@ -362,7 +361,7 @@ impl<'a> Parser<'a> {
         let tok0 = real_token(&mut *rdr);
         let span = tok0.sp;
         let placeholder = TokenAndSpan {
-            tok: token::UNDERSCORE,
+            tok: token::Underscore,
             sp: span,
         };
 
@@ -396,7 +395,7 @@ impl<'a> Parser<'a> {
 
     /// Convert a token to a string using self's reader
     pub fn token_to_string(token: &token::Token) -> String {
-        token::to_string(token)
+        pprust::token_to_string(token)
     }
 
     /// Convert the current token to a string using self's reader
@@ -475,15 +474,15 @@ impl<'a> Parser<'a> {
     /// recover (without consuming any expected input token).  Returns
     /// true if and only if input was consumed for recovery.
     pub fn check_for_erroneous_unit_struct_expecting(&mut self, expected: &[token::Token]) -> bool {
-        if self.token == token::LBRACE
-            && expected.iter().all(|t| *t != token::LBRACE)
-            && self.look_ahead(1, |t| *t == token::RBRACE) {
+        if self.token == token::LBrace
+            && expected.iter().all(|t| *t != token::LBrace)
+            && self.look_ahead(1, |t| *t == token::RBrace) {
             // matched; signal non-fatal error and recover.
             let span = self.span;
             self.span_err(span,
                           "unit-like struct construction is written with no trailing `{ }`");
-            self.eat(&token::LBRACE);
-            self.eat(&token::RBRACE);
+            self.eat(&token::LBrace);
+            self.eat(&token::RBrace);
             true
         } else {
             false
@@ -518,7 +517,7 @@ impl<'a> Parser<'a> {
     pub fn commit_stmt(&mut self, edible: &[token::Token], inedible: &[token::Token]) {
         if self.last_token
                .as_ref()
-               .map_or(false, |t| is_ident_or_path(&**t)) {
+               .map_or(false, |t| t.is_ident() || t.is_path()) {
             let mut expected = edible.iter().map(|x| x.clone()).collect::<Vec<_>>();
             expected.push_all(inedible.as_slice());
             self.check_for_erroneous_unit_struct_expecting(
@@ -535,11 +534,11 @@ impl<'a> Parser<'a> {
         self.check_strict_keywords();
         self.check_reserved_keywords();
         match self.token {
-            token::IDENT(i, _) => {
+            token::Ident(i, _) => {
                 self.bump();
                 i
             }
-            token::INTERPOLATED(token::NtIdent(..)) => {
+            token::Interpolated(token::NtIdent(..)) => {
                 self.bug("ident interpolation not converted to real token");
             }
             _ => {
@@ -570,14 +569,10 @@ impl<'a> Parser<'a> {
         is_present
     }
 
-    pub fn is_keyword(&mut self, kw: keywords::Keyword) -> bool {
-        token::is_keyword(kw, &self.token)
-    }
-
     /// If the next token is the given keyword, eat it and return
     /// true. Otherwise, return false.
     pub fn eat_keyword(&mut self, kw: keywords::Keyword) -> bool {
-        if self.is_keyword(kw) {
+        if self.token.is_keyword(kw) {
             self.bump();
             true
         } else {
@@ -599,7 +594,7 @@ impl<'a> Parser<'a> {
 
     /// Signal an error if the given string is a strict keyword
     pub fn check_strict_keywords(&mut self) {
-        if token::is_strict_keyword(&self.token) {
+        if self.token.is_strict_keyword() {
             let token_str = self.this_token_to_string();
             let span = self.span;
             self.span_err(span,
@@ -610,7 +605,7 @@ impl<'a> Parser<'a> {
 
     /// Signal an error if the current token is a reserved keyword
     pub fn check_reserved_keywords(&mut self) {
-        if token::is_reserved_keyword(&self.token) {
+        if self.token.is_reserved_keyword() {
             let token_str = self.this_token_to_string();
             self.fatal(format!("`{}` is a reserved keyword",
                                token_str).as_slice())
@@ -621,16 +616,16 @@ impl<'a> Parser<'a> {
     /// `&` and continue. If an `&` is not seen, signal an error.
     fn expect_and(&mut self) {
         match self.token {
-            token::BINOP(token::AND) => self.bump(),
-            token::ANDAND => {
+            token::BinOp(token::And) => self.bump(),
+            token::AndAnd => {
                 let span = self.span;
                 let lo = span.lo + BytePos(1);
-                self.replace_token(token::BINOP(token::AND), lo, span.hi)
+                self.replace_token(token::BinOp(token::And), lo, span.hi)
             }
             _ => {
                 let token_str = self.this_token_to_string();
                 let found_token =
-                    Parser::token_to_string(&token::BINOP(token::AND));
+                    Parser::token_to_string(&token::BinOp(token::And));
                 self.fatal(format!("expected `{}`, found `{}`",
                                    found_token,
                                    token_str).as_slice())
@@ -642,16 +637,16 @@ impl<'a> Parser<'a> {
     /// `|` and continue. If a `|` is not seen, signal an error.
     fn expect_or(&mut self) {
         match self.token {
-            token::BINOP(token::OR) => self.bump(),
-            token::OROR => {
+            token::BinOp(token::Or) => self.bump(),
+            token::OrOr => {
                 let span = self.span;
                 let lo = span.lo + BytePos(1);
-                self.replace_token(token::BINOP(token::OR), lo, span.hi)
+                self.replace_token(token::BinOp(token::Or), lo, span.hi)
             }
             _ => {
                 let found_token = self.this_token_to_string();
                 let token_str =
-                    Parser::token_to_string(&token::BINOP(token::OR));
+                    Parser::token_to_string(&token::BinOp(token::Or));
                 self.fatal(format!("expected `{}`, found `{}`",
                                    token_str,
                                    found_token).as_slice())
@@ -681,16 +676,16 @@ impl<'a> Parser<'a> {
     ///      impl Foo<<'a> ||>() { ... }
     fn eat_lt(&mut self, force: bool) -> bool {
         match self.token {
-            token::LT => { self.bump(); true }
-            token::BINOP(token::SHL) => {
+            token::Lt => { self.bump(); true }
+            token::BinOp(token::Shl) => {
                 let next_lifetime = self.look_ahead(1, |t| match *t {
-                    token::LIFETIME(..) => true,
+                    token::Lifetime(..) => true,
                     _ => false,
                 });
                 if force || next_lifetime {
                     let span = self.span;
                     let lo = span.lo + BytePos(1);
-                    self.replace_token(token::LT, lo, span.hi);
+                    self.replace_token(token::Lt, lo, span.hi);
                     true
                 } else {
                     false
@@ -703,7 +698,7 @@ impl<'a> Parser<'a> {
     fn expect_lt(&mut self) {
         if !self.eat_lt(true) {
             let found_token = self.this_token_to_string();
-            let token_str = Parser::token_to_string(&token::LT);
+            let token_str = Parser::token_to_string(&token::Lt);
             self.fatal(format!("expected `{}`, found `{}`",
                                token_str,
                                found_token).as_slice())
@@ -718,8 +713,8 @@ impl<'a> Parser<'a> {
                               -> Vec<T> {
         let mut first = true;
         let mut vector = Vec::new();
-        while self.token != token::BINOP(token::OR) &&
-                self.token != token::OROR {
+        while self.token != token::BinOp(token::Or) &&
+                self.token != token::OrOr {
             if first {
                 first = false
             } else {
@@ -736,24 +731,24 @@ impl<'a> Parser<'a> {
     /// signal an error.
     pub fn expect_gt(&mut self) {
         match self.token {
-            token::GT => self.bump(),
-            token::BINOP(token::SHR) => {
+            token::Gt => self.bump(),
+            token::BinOp(token::Shr) => {
                 let span = self.span;
                 let lo = span.lo + BytePos(1);
-                self.replace_token(token::GT, lo, span.hi)
+                self.replace_token(token::Gt, lo, span.hi)
             }
-            token::BINOPEQ(token::SHR) => {
+            token::BinOpEq(token::Shr) => {
                 let span = self.span;
                 let lo = span.lo + BytePos(1);
-                self.replace_token(token::GE, lo, span.hi)
+                self.replace_token(token::Ge, lo, span.hi)
             }
-            token::GE => {
+            token::Ge => {
                 let span = self.span;
                 let lo = span.lo + BytePos(1);
-                self.replace_token(token::EQ, lo, span.hi)
+                self.replace_token(token::Eq, lo, span.hi)
             }
             _ => {
-                let gt_str = Parser::token_to_string(&token::GT);
+                let gt_str = Parser::token_to_string(&token::Gt);
                 let this_token_str = self.this_token_to_string();
                 self.fatal(format!("expected `{}`, found `{}`",
                                    gt_str,
@@ -777,10 +772,10 @@ impl<'a> Parser<'a> {
         // commas in generic parameters, because it can stop either after
         // parsing a type or after parsing a comma.
         for i in iter::count(0u, 1) {
-            if self.token == token::GT
-                || self.token == token::BINOP(token::SHR)
-                || self.token == token::GE
-                || self.token == token::BINOPEQ(token::SHR) {
+            if self.token == token::Gt
+                || self.token == token::BinOp(token::Shr)
+                || self.token == token::Ge
+                || self.token == token::BinOpEq(token::Shr) {
                 break;
             }
 
@@ -897,7 +892,7 @@ impl<'a> Parser<'a> {
     pub fn bump(&mut self) {
         self.last_span = self.span;
         // Stash token for error recovery (sometimes; clone is not necessarily cheap).
-        self.last_token = if is_ident_or_path(&self.token) {
+        self.last_token = if self.token.is_ident() || self.token.is_path() {
             Some(box self.token.clone())
         } else {
             None
@@ -911,7 +906,7 @@ impl<'a> Parser<'a> {
             self.buffer_start = next_index as int;
 
             let placeholder = TokenAndSpan {
-                tok: token::UNDERSCORE,
+                tok: token::Underscore,
                 sp: self.span,
             };
             replace(&mut self.buffer[buffer_start], placeholder)
@@ -923,7 +918,7 @@ impl<'a> Parser<'a> {
 
     /// Advance the parser by one token and return the bumped token.
     pub fn bump_and_get(&mut self) -> token::Token {
-        let old_token = replace(&mut self.token, token::UNDERSCORE);
+        let old_token = replace(&mut self.token, token::Underscore);
         self.bump();
         old_token
     }
@@ -987,13 +982,13 @@ impl<'a> Parser<'a> {
     /// Is the current token one of the keywords that signals a bare function
     /// type?
     pub fn token_is_bare_fn_keyword(&mut self) -> bool {
-        if token::is_keyword(keywords::Fn, &self.token) {
+        if self.token.is_keyword(keywords::Fn) {
             return true
         }
 
-        if token::is_keyword(keywords::Unsafe, &self.token) ||
-            token::is_keyword(keywords::Once, &self.token) {
-            return self.look_ahead(1, |t| token::is_keyword(keywords::Fn, t))
+        if self.token.is_keyword(keywords::Unsafe) ||
+            self.token.is_keyword(keywords::Once) {
+            return self.look_ahead(1, |t| t.is_keyword(keywords::Fn))
         }
 
         false
@@ -1001,28 +996,21 @@ impl<'a> Parser<'a> {
 
     /// Is the current token one of the keywords that signals a closure type?
     pub fn token_is_closure_keyword(&mut self) -> bool {
-        token::is_keyword(keywords::Unsafe, &self.token) ||
-            token::is_keyword(keywords::Once, &self.token)
+        self.token.is_keyword(keywords::Unsafe) ||
+            self.token.is_keyword(keywords::Once)
     }
 
     /// Is the current token one of the keywords that signals an old-style
     /// closure type (with explicit sigil)?
     pub fn token_is_old_style_closure_keyword(&mut self) -> bool {
-        token::is_keyword(keywords::Unsafe, &self.token) ||
-            token::is_keyword(keywords::Once, &self.token) ||
-            token::is_keyword(keywords::Fn, &self.token)
-    }
-
-    pub fn token_is_lifetime(tok: &token::Token) -> bool {
-        match *tok {
-            token::LIFETIME(..) => true,
-            _ => false,
-        }
+        self.token.is_keyword(keywords::Unsafe) ||
+            self.token.is_keyword(keywords::Once) ||
+            self.token.is_keyword(keywords::Fn)
     }
 
     pub fn get_lifetime(&mut self) -> ast::Ident {
         match self.token {
-            token::LIFETIME(ref ident) => *ident,
+            token::Lifetime(ref ident) => *ident,
             _ => self.bug("not a lifetime"),
         }
     }
@@ -1074,7 +1062,7 @@ impl<'a> Parser<'a> {
 
         */
 
-        let lifetime_defs = if self.eat(&token::LT) {
+        let lifetime_defs = if self.eat(&token::Lt) {
             let lifetime_defs = self.parse_lifetime_defs();
             self.expect_gt();
             lifetime_defs
@@ -1103,25 +1091,23 @@ impl<'a> Parser<'a> {
     /// Parses an optional unboxed closure kind (`&:`, `&mut:`, or `:`).
     pub fn parse_optional_unboxed_closure_kind(&mut self)
                                                -> Option<UnboxedClosureKind> {
-        if self.token == token::BINOP(token::AND) &&
-                    self.look_ahead(1, |t| {
-                        token::is_keyword(keywords::Mut, t)
-                    }) &&
-                    self.look_ahead(2, |t| *t == token::COLON) {
+        if self.token == token::BinOp(token::And) &&
+                self.look_ahead(1, |t| t.is_keyword(keywords::Mut)) &&
+                self.look_ahead(2, |t| *t == token::Colon) {
             self.bump();
             self.bump();
             self.bump();
             return Some(FnMutUnboxedClosureKind)
         }
 
-        if self.token == token::BINOP(token::AND) &&
-                    self.look_ahead(1, |t| *t == token::COLON) {
+        if self.token == token::BinOp(token::And) &&
+                    self.look_ahead(1, |t| *t == token::Colon) {
             self.bump();
             self.bump();
             return Some(FnUnboxedClosureKind)
         }
 
-        if self.eat(&token::COLON) {
+        if self.eat(&token::Colon) {
             return Some(FnOnceUnboxedClosureKind)
         }
 
@@ -1147,7 +1133,7 @@ impl<'a> Parser<'a> {
         let fn_style = self.parse_unsafety();
         let onceness = if self.eat_keyword(keywords::Once) {Once} else {Many};
 
-        let lifetime_defs = if self.eat(&token::LT) {
+        let lifetime_defs = if self.eat(&token::Lt) {
             let lifetime_defs = self.parse_lifetime_defs();
             self.expect_gt();
 
@@ -1156,7 +1142,7 @@ impl<'a> Parser<'a> {
             Vec::new()
         };
 
-        let (optional_unboxed_closure_kind, inputs) = if self.eat(&token::OROR) {
+        let (optional_unboxed_closure_kind, inputs) = if self.eat(&token::OrOr) {
             (None, Vec::new())
         } else {
             self.expect_or();
@@ -1165,7 +1151,7 @@ impl<'a> Parser<'a> {
                 self.parse_optional_unboxed_closure_kind();
 
             let inputs = self.parse_seq_to_before_or(
-                &token::COMMA,
+                &token::Comma,
                 |p| p.parse_arg_general(false));
             self.expect_or();
             (optional_unboxed_closure_kind, inputs)
@@ -1221,7 +1207,7 @@ impl<'a> Parser<'a> {
            Lifetime_defs
 
         */
-        let lifetime_defs = if self.eat(&token::LT) {
+        let lifetime_defs = if self.eat(&token::Lt) {
             let lifetime_defs = self.parse_lifetime_defs();
             self.expect_gt();
             lifetime_defs
@@ -1247,7 +1233,7 @@ impl<'a> Parser<'a> {
         let lo = self.span.lo;
         let ident = self.parse_ident();
         let hi = self.span.hi;
-        self.expect(&token::SEMI);
+        self.expect(&token::Semi);
         AssociatedType {
             id: ast::DUMMY_NODE_ID,
             span: mk_sp(lo, hi),
@@ -1262,10 +1248,10 @@ impl<'a> Parser<'a> {
                      -> Typedef {
         let lo = self.span.lo;
         let ident = self.parse_ident();
-        self.expect(&token::EQ);
+        self.expect(&token::Eq);
         let typ = self.parse_ty(true);
         let hi = self.span.hi;
-        self.expect(&token::SEMI);
+        self.expect(&token::Semi);
         Typedef {
             id: ast::DUMMY_NODE_ID,
             span: mk_sp(lo, hi),
@@ -1279,8 +1265,8 @@ impl<'a> Parser<'a> {
     /// Parse the items in a trait declaration
     pub fn parse_trait_items(&mut self) -> Vec<TraitItem> {
         self.parse_unspanned_seq(
-            &token::LBRACE,
-            &token::RBRACE,
+            &token::LBrace,
+            &token::RBrace,
             seq_sep_none(),
             |p| {
             let attrs = p.parse_outer_attributes();
@@ -1317,7 +1303,7 @@ impl<'a> Parser<'a> {
 
                 let hi = p.last_span.hi;
                 match p.token {
-                  token::SEMI => {
+                  token::Semi => {
                     p.bump();
                     debug!("parse_trait_methods(): parsing required method");
                     RequiredMethod(TypeMethod {
@@ -1333,7 +1319,7 @@ impl<'a> Parser<'a> {
                         vis: vis,
                     })
                   }
-                  token::LBRACE => {
+                  token::LBrace => {
                     debug!("parse_trait_methods(): parsing provided method");
                     let (inner_attrs, body) =
                         p.parse_inner_attrs_and_block();
@@ -1377,7 +1363,7 @@ impl<'a> Parser<'a> {
         let lo = self.span.lo;
         let mutbl = self.parse_mutability();
         let id = self.parse_ident();
-        self.expect(&token::COLON);
+        self.expect(&token::Colon);
         let ty = self.parse_ty(true);
         let hi = ty.span.hi;
         ast::TypeField {
@@ -1389,9 +1375,9 @@ impl<'a> Parser<'a> {
 
     /// Parse optional return type [ -> TY ] in function decl
     pub fn parse_ret_ty(&mut self) -> (RetStyle, P<Ty>) {
-        return if self.eat(&token::RARROW) {
+        return if self.eat(&token::RArrow) {
             let lo = self.span.lo;
-            if self.eat(&token::NOT) {
+            if self.eat(&token::Not) {
                 (
                     NoReturn,
                     P(Ty {
@@ -1425,9 +1411,9 @@ impl<'a> Parser<'a> {
 
         let lo = self.span.lo;
 
-        let t = if self.token == token::LPAREN {
+        let t = if self.token == token::LParen {
             self.bump();
-            if self.token == token::RPAREN {
+            if self.token == token::RParen {
                 self.bump();
                 TyNil
             } else {
@@ -1436,9 +1422,9 @@ impl<'a> Parser<'a> {
                 // of type t
                 let mut ts = vec!(self.parse_ty(true));
                 let mut one_tuple = false;
-                while self.token == token::COMMA {
+                while self.token == token::Comma {
                     self.bump();
-                    if self.token != token::RPAREN {
+                    if self.token != token::RParen {
                         ts.push(self.parse_ty(true));
                     }
                     else {
@@ -1447,30 +1433,30 @@ impl<'a> Parser<'a> {
                 }
 
                 if ts.len() == 1 && !one_tuple {
-                    self.expect(&token::RPAREN);
+                    self.expect(&token::RParen);
                     TyParen(ts.into_iter().nth(0).unwrap())
                 } else {
                     let t = TyTup(ts);
-                    self.expect(&token::RPAREN);
+                    self.expect(&token::RParen);
                     t
                 }
             }
-        } else if self.token == token::TILDE {
+        } else if self.token == token::Tilde {
             // OWNED POINTER
             self.bump();
             let last_span = self.last_span;
             match self.token {
-                token::LBRACKET => self.obsolete(last_span, ObsoleteOwnedVector),
+                token::LBracket => self.obsolete(last_span, ObsoleteOwnedVector),
                 _ => self.obsolete(last_span, ObsoleteOwnedType)
             }
             TyUniq(self.parse_ty(false))
-        } else if self.token == token::BINOP(token::STAR) {
+        } else if self.token == token::BinOp(token::Star) {
             // STAR POINTER (bare pointer?)
             self.bump();
             TyPtr(self.parse_ptr())
-        } else if self.token == token::LBRACKET {
+        } else if self.token == token::LBracket {
             // VECTOR
-            self.expect(&token::LBRACKET);
+            self.expect(&token::LBracket);
             let t = self.parse_ty(true);
 
             // Parse the `, ..e` in `[ int, ..e ]`
@@ -1479,24 +1465,24 @@ impl<'a> Parser<'a> {
                 None => TyVec(t),
                 Some(suffix) => TyFixedLengthVec(t, suffix)
             };
-            self.expect(&token::RBRACKET);
+            self.expect(&token::RBracket);
             t
-        } else if self.token == token::BINOP(token::AND) ||
-                self.token == token::ANDAND {
+        } else if self.token == token::BinOp(token::And) ||
+                self.token == token::AndAnd {
             // BORROWED POINTER
             self.expect_and();
             self.parse_borrowed_pointee()
-        } else if self.is_keyword(keywords::Extern) ||
-                  self.is_keyword(keywords::Unsafe) ||
+        } else if self.token.is_keyword(keywords::Extern) ||
+                  self.token.is_keyword(keywords::Unsafe) ||
                 self.token_is_bare_fn_keyword() {
             // BARE FUNCTION
             self.parse_ty_bare_fn()
         } else if self.token_is_closure_keyword() ||
-                self.token == token::BINOP(token::OR) ||
-                self.token == token::OROR ||
-                (self.token == token::LT &&
+                self.token == token::BinOp(token::Or) ||
+                self.token == token::OrOr ||
+                (self.token == token::Lt &&
                  self.look_ahead(1, |t| {
-                     *t == token::GT || Parser::token_is_lifetime(t)
+                     *t == token::Gt || t.is_lifetime()
                  })) {
             // CLOSURE
 
@@ -1504,28 +1490,29 @@ impl<'a> Parser<'a> {
         } else if self.eat_keyword(keywords::Typeof) {
             // TYPEOF
             // In order to not be ambiguous, the type must be surrounded by parens.
-            self.expect(&token::LPAREN);
+            self.expect(&token::LParen);
             let e = self.parse_expr();
-            self.expect(&token::RPAREN);
+            self.expect(&token::RParen);
             TyTypeof(e)
         } else if self.eat_keyword(keywords::Proc) {
             self.parse_proc_type()
-        } else if self.token == token::LT {
+        } else if self.token == token::Lt {
             // QUALIFIED PATH
             self.bump();
             let for_type = self.parse_ty(true);
             self.expect_keyword(keywords::As);
             let trait_name = self.parse_path(LifetimeAndTypesWithoutColons);
-            self.expect(&token::GT);
-            self.expect(&token::MOD_SEP);
+            self.expect(&token::Gt);
+            self.expect(&token::ModSep);
             let item_name = self.parse_ident();
             TyQPath(P(QPath {
                 for_type: for_type,
                 trait_name: trait_name.path,
                 item_name: item_name,
             }))
-        } else if self.token == token::MOD_SEP
-            || is_ident_or_path(&self.token) {
+        } else if self.token == token::ModSep
+            || self.token.is_ident()
+            || self.token.is_path() {
             // NAMED TYPE
             let mode = if plus_allowed {
                 LifetimeAndTypesAndBounds
@@ -1537,7 +1524,7 @@ impl<'a> Parser<'a> {
                 bounds
             } = self.parse_path(mode);
             TyPath(path, bounds, ast::DUMMY_NODE_ID)
-        } else if self.eat(&token::UNDERSCORE) {
+        } else if self.eat(&token::Underscore) {
             // TYPE TO BE INFERRED
             TyInfer
         } else {
@@ -1576,9 +1563,9 @@ impl<'a> Parser<'a> {
 
     pub fn is_named_argument(&mut self) -> bool {
         let offset = match self.token {
-            token::BINOP(token::AND) => 1,
-            token::ANDAND => 1,
-            _ if token::is_keyword(keywords::Mut, &self.token) => 1,
+            token::BinOp(token::And) => 1,
+            token::AndAnd => 1,
+            _ if self.token.is_keyword(keywords::Mut) => 1,
             _ => 0
         };
 
@@ -1586,10 +1573,10 @@ impl<'a> Parser<'a> {
 
         if offset == 0 {
             is_plain_ident_or_underscore(&self.token)
-                && self.look_ahead(1, |t| *t == token::COLON)
+                && self.look_ahead(1, |t| *t == token::Colon)
         } else {
             self.look_ahead(offset, |t| is_plain_ident_or_underscore(t))
-                && self.look_ahead(offset + 1, |t| *t == token::COLON)
+                && self.look_ahead(offset + 1, |t| *t == token::Colon)
         }
     }
 
@@ -1601,7 +1588,7 @@ impl<'a> Parser<'a> {
                    require_name);
             let pat = self.parse_pat();
 
-            self.expect(&token::COLON);
+            self.expect(&token::Colon);
             pat
         } else {
             debug!("parse_arg_general ident_to_pat");
@@ -1627,7 +1614,7 @@ impl<'a> Parser<'a> {
     /// Parse an argument in a lambda header e.g. |arg, arg|
     pub fn parse_fn_block_arg(&mut self) -> Arg {
         let pat = self.parse_pat();
-        let t = if self.eat(&token::COLON) {
+        let t = if self.eat(&token::Colon) {
             self.parse_ty(true)
         } else {
             P(Ty {
@@ -1644,8 +1631,8 @@ impl<'a> Parser<'a> {
     }
 
     pub fn maybe_parse_fixed_vstore(&mut self) -> Option<P<ast::Expr>> {
-        if self.token == token::COMMA &&
-                self.look_ahead(1, |t| *t == token::DOTDOT) {
+        if self.token == token::Comma &&
+                self.look_ahead(1, |t| *t == token::DotDot) {
             self.bump();
             self.bump();
             Some(self.parse_expr())
@@ -1657,24 +1644,24 @@ impl<'a> Parser<'a> {
     /// Matches token_lit = LIT_INTEGER | ...
     pub fn lit_from_token(&mut self, tok: &token::Token) -> Lit_ {
         match *tok {
-            token::LIT_BYTE(i) => LitByte(parse::byte_lit(i.as_str()).val0()),
-            token::LIT_CHAR(i) => LitChar(parse::char_lit(i.as_str()).val0()),
-            token::LIT_INTEGER(s) => parse::integer_lit(s.as_str(),
+            token::LitByte(i) => LitByte(parse::byte_lit(i.as_str()).val0()),
+            token::LitChar(i) => LitChar(parse::char_lit(i.as_str()).val0()),
+            token::LitInteger(s) => parse::integer_lit(s.as_str(),
                                                         &self.sess.span_diagnostic, self.span),
-            token::LIT_FLOAT(s) => parse::float_lit(s.as_str()),
-            token::LIT_STR(s) => {
+            token::LitFloat(s) => parse::float_lit(s.as_str()),
+            token::LitStr(s) => {
                 LitStr(token::intern_and_get_ident(parse::str_lit(s.as_str()).as_slice()),
                        ast::CookedStr)
             }
-            token::LIT_STR_RAW(s, n) => {
+            token::LitStrRaw(s, n) => {
                 LitStr(token::intern_and_get_ident(parse::raw_str_lit(s.as_str()).as_slice()),
                        ast::RawStr(n))
             }
-            token::LIT_BINARY(i) =>
+            token::LitBinary(i) =>
                 LitBinary(parse::binary_lit(i.as_str())),
-            token::LIT_BINARY_RAW(i, _) =>
+            token::LitBinaryRaw(i, _) =>
                 LitBinary(Rc::new(i.as_str().as_bytes().iter().map(|&x| x).collect())),
-            token::LPAREN => { self.expect(&token::RPAREN); LitNil },
+            token::LParen => { self.expect(&token::RParen); LitNil },
             _ => { self.unexpected_last(tok); }
         }
     }
@@ -1697,7 +1684,7 @@ impl<'a> Parser<'a> {
     /// matches '-' lit | lit
     pub fn parse_literal_maybe_minus(&mut self) -> P<Expr> {
         let minus_lo = self.span.lo;
-        let minus_present = self.eat(&token::BINOP(token::MINUS));
+        let minus_present = self.eat(&token::BinOp(token::Minus));
 
         let lo = self.span.lo;
         let literal = P(self.parse_lit());
@@ -1720,11 +1707,11 @@ impl<'a> Parser<'a> {
     pub fn parse_path(&mut self, mode: PathParsingMode) -> PathAndBounds {
         // Check for a whole path...
         let found = match self.token {
-            INTERPOLATED(token::NtPath(_)) => Some(self.bump_and_get()),
+            token::Interpolated(token::NtPath(_)) => Some(self.bump_and_get()),
             _ => None,
         };
         match found {
-            Some(INTERPOLATED(token::NtPath(box path))) => {
+            Some(token::Interpolated(token::NtPath(box path))) => {
                 return PathAndBounds {
                     path: path,
                     bounds: None
@@ -1734,7 +1721,7 @@ impl<'a> Parser<'a> {
         }
 
         let lo = self.span.lo;
-        let is_global = self.eat(&token::MOD_SEP);
+        let is_global = self.eat(&token::ModSep);
 
         // Parse any number of segments and bound sets. A segment is an
         // identifier followed by an optional lifetime and a set of types.
@@ -1747,7 +1734,7 @@ impl<'a> Parser<'a> {
             // Parse the '::' before type parameters if it's required. If
             // it is required and wasn't present, then we're done.
             if mode == LifetimeAndTypesWithColons &&
-                    !self.eat(&token::MOD_SEP) {
+                    !self.eat(&token::ModSep) {
                 segments.push(ast::PathSegment {
                     identifier: identifier,
                     lifetimes: Vec::new(),
@@ -1778,7 +1765,7 @@ impl<'a> Parser<'a> {
             // a double colon to get here in the first place.
             if !(mode == LifetimeAndTypesWithColons &&
                     !any_lifetime_or_types) {
-                if !self.eat(&token::MOD_SEP) {
+                if !self.eat(&token::ModSep) {
                     break
                 }
             }
@@ -1790,7 +1777,7 @@ impl<'a> Parser<'a> {
         // error.
         let opt_bounds = {
             if mode == LifetimeAndTypesAndBounds &&
-                self.eat(&token::BINOP(token::PLUS))
+                self.eat(&token::BinOp(token::Plus))
             {
                 let bounds = self.parse_ty_param_bounds();
 
@@ -1828,7 +1815,7 @@ impl<'a> Parser<'a> {
     /// parses 0 or 1 lifetime
     pub fn parse_opt_lifetime(&mut self) -> Option<ast::Lifetime> {
         match self.token {
-            token::LIFETIME(..) => {
+            token::Lifetime(..) => {
                 Some(self.parse_lifetime())
             }
             _ => {
@@ -1841,7 +1828,7 @@ impl<'a> Parser<'a> {
     /// Matches lifetime = LIFETIME
     pub fn parse_lifetime(&mut self) -> ast::Lifetime {
         match self.token {
-            token::LIFETIME(i) => {
+            token::Lifetime(i) => {
                 let span = self.span;
                 self.bump();
                 return ast::Lifetime {
@@ -1865,11 +1852,11 @@ impl<'a> Parser<'a> {
         let mut res = Vec::new();
         loop {
             match self.token {
-                token::LIFETIME(_) => {
+                token::Lifetime(_) => {
                     let lifetime = self.parse_lifetime();
                     let bounds =
-                        if self.eat(&token::COLON) {
-                            self.parse_lifetimes(token::BINOP(token::PLUS))
+                        if self.eat(&token::Colon) {
+                            self.parse_lifetimes(token::BinOp(token::Plus))
                         } else {
                             Vec::new()
                         };
@@ -1883,9 +1870,9 @@ impl<'a> Parser<'a> {
             }
 
             match self.token {
-                token::COMMA => { self.bump(); }
-                token::GT => { return res; }
-                token::BINOP(token::SHR) => { return res; }
+                token::Comma => { self.bump(); }
+                token::Gt => { return res; }
+                token::BinOp(token::Shr) => { return res; }
                 _ => {
                     let msg = format!("expected `,` or `>` after lifetime \
                                       name, got: {}",
@@ -1910,7 +1897,7 @@ impl<'a> Parser<'a> {
         let mut res = Vec::new();
         loop {
             match self.token {
-                token::LIFETIME(_) => {
+                token::Lifetime(_) => {
                     res.push(self.parse_lifetime());
                 }
                 _ => {
@@ -1926,11 +1913,6 @@ impl<'a> Parser<'a> {
         }
     }
 
-    pub fn token_is_mutability(tok: &token::Token) -> bool {
-        token::is_keyword(keywords::Mut, tok) ||
-        token::is_keyword(keywords::Const, tok)
-    }
-
     /// Parse mutability declaration (mut/const/imm)
     pub fn parse_mutability(&mut self) -> Mutability {
         if self.eat_keyword(keywords::Mut) {
@@ -1945,7 +1927,7 @@ impl<'a> Parser<'a> {
         let lo = self.span.lo;
         let i = self.parse_ident();
         let hi = self.last_span.hi;
-        self.expect(&token::COLON);
+        self.expect(&token::Colon);
         let e = self.parse_expr();
         ast::Field {
             ident: spanned(lo, hi, i),
@@ -2043,31 +2025,31 @@ impl<'a> Parser<'a> {
         let ex: Expr_;
 
         match self.token {
-            token::LPAREN => {
+            token::LParen => {
                 self.bump();
                 // (e) is parenthesized e
                 // (e,) is a tuple with only one field, e
                 let mut trailing_comma = false;
-                if self.token == token::RPAREN {
+                if self.token == token::RParen {
                     hi = self.span.hi;
                     self.bump();
                     let lit = P(spanned(lo, hi, LitNil));
                     return self.mk_expr(lo, hi, ExprLit(lit));
                 }
                 let mut es = vec!(self.parse_expr());
-                self.commit_expr(&**es.last().unwrap(), &[], &[token::COMMA, token::RPAREN]);
-                while self.token == token::COMMA {
+                self.commit_expr(&**es.last().unwrap(), &[], &[token::Comma, token::RParen]);
+                while self.token == token::Comma {
                     self.bump();
-                    if self.token != token::RPAREN {
+                    if self.token != token::RParen {
                         es.push(self.parse_expr());
                         self.commit_expr(&**es.last().unwrap(), &[],
-                                         &[token::COMMA, token::RPAREN]);
+                                         &[token::Comma, token::RParen]);
                     } else {
                         trailing_comma = true;
                     }
                 }
                 hi = self.span.hi;
-                self.commit_expr_expecting(&**es.last().unwrap(), token::RPAREN);
+                self.commit_expr_expecting(&**es.last().unwrap(), token::RParen);
 
                 return if es.len() == 1 && !trailing_comma {
                    self.mk_expr(lo, hi, ExprParen(es.into_iter().nth(0).unwrap()))
@@ -2075,50 +2057,50 @@ impl<'a> Parser<'a> {
                     self.mk_expr(lo, hi, ExprTup(es))
                 }
             },
-            token::LBRACE => {
+            token::LBrace => {
                 self.bump();
                 let blk = self.parse_block_tail(lo, DefaultBlock);
                 return self.mk_expr(blk.span.lo, blk.span.hi,
                                     ExprBlock(blk));
             },
-            token::BINOP(token::OR) |  token::OROR => {
+            token::BinOp(token::Or) |  token::OrOr => {
                 return self.parse_lambda_expr(CaptureByRef);
             },
             // FIXME #13626: Should be able to stick in
             // token::SELF_KEYWORD_NAME
-            token::IDENT(id @ ast::Ident{
-                        name: ast::Name(token::SELF_KEYWORD_NAME_NUM),
-                        ctxt: _
-                    } ,false) => {
+            token::Ident(id @ ast::Ident {
+                            name: ast::Name(token::SELF_KEYWORD_NAME_NUM),
+                            ctxt: _
+                         }, token::Plain) => {
                 self.bump();
                 let path = ast_util::ident_to_path(mk_sp(lo, hi), id);
                 ex = ExprPath(path);
                 hi = self.last_span.hi;
             }
-            token::LBRACKET => {
+            token::LBracket => {
                 self.bump();
 
-                if self.token == token::RBRACKET {
+                if self.token == token::RBracket {
                     // Empty vector.
                     self.bump();
                     ex = ExprVec(Vec::new());
                 } else {
                     // Nonempty vector.
                     let first_expr = self.parse_expr();
-                    if self.token == token::COMMA &&
-                        self.look_ahead(1, |t| *t == token::DOTDOT) {
+                    if self.token == token::Comma &&
+                        self.look_ahead(1, |t| *t == token::DotDot) {
                         // Repeating vector syntax: [ 0, ..512 ]
                         self.bump();
                         self.bump();
                         let count = self.parse_expr();
-                        self.expect(&token::RBRACKET);
+                        self.expect(&token::RBracket);
                         ex = ExprRepeat(first_expr, count);
-                    } else if self.token == token::COMMA {
+                    } else if self.token == token::Comma {
                         // Vector with two or more elements.
                         self.bump();
                         let remaining_exprs = self.parse_seq_to_end(
-                            &token::RBRACKET,
-                            seq_sep_trailing_allowed(token::COMMA),
+                            &token::RBracket,
+                            seq_sep_trailing_allowed(token::Comma),
                             |p| p.parse_expr()
                                 );
                         let mut exprs = vec!(first_expr);
@@ -2126,7 +2108,7 @@ impl<'a> Parser<'a> {
                         ex = ExprVec(exprs);
                     } else {
                         // Vector with one element.
-                        self.expect(&token::RBRACKET);
+                        self.expect(&token::RBracket);
                         ex = ExprVec(vec!(first_expr));
                     }
                 }
@@ -2158,10 +2140,10 @@ impl<'a> Parser<'a> {
                 if self.eat_keyword(keywords::While) {
                     return self.parse_while_expr(None);
                 }
-                if Parser::token_is_lifetime(&self.token) {
+                if self.token.is_lifetime() {
                     let lifetime = self.get_lifetime();
                     self.bump();
-                    self.expect(&token::COLON);
+                    self.expect(&token::Colon);
                     if self.eat_keyword(keywords::While) {
                         return self.parse_while_expr(Some(lifetime))
                     }
@@ -2178,7 +2160,7 @@ impl<'a> Parser<'a> {
                 }
                 if self.eat_keyword(keywords::Continue) {
                     let lo = self.span.lo;
-                    let ex = if Parser::token_is_lifetime(&self.token) {
+                    let ex = if self.token.is_lifetime() {
                         let lifetime = self.get_lifetime();
                         self.bump();
                         ExprAgain(Some(lifetime))
@@ -2198,7 +2180,7 @@ impl<'a> Parser<'a> {
                 }
                 if self.eat_keyword(keywords::Return) {
                     // RETURN expression
-                    if can_begin_expr(&self.token) {
+                    if self.token.can_begin_expr() {
                         let e = self.parse_expr();
                         hi = e.span.hi;
                         ex = ExprRet(Some(e));
@@ -2207,7 +2189,7 @@ impl<'a> Parser<'a> {
                     }
                 } else if self.eat_keyword(keywords::Break) {
                     // BREAK expression
-                    if Parser::token_is_lifetime(&self.token) {
+                    if self.token.is_lifetime() {
                         let lifetime = self.get_lifetime();
                         self.bump();
                         ex = ExprBreak(Some(lifetime));
@@ -2215,19 +2197,19 @@ impl<'a> Parser<'a> {
                         ex = ExprBreak(None);
                     }
                     hi = self.span.hi;
-                } else if self.token == token::MOD_SEP ||
-                        is_ident(&self.token) &&
-                        !self.is_keyword(keywords::True) &&
-                        !self.is_keyword(keywords::False) {
+                } else if self.token == token::ModSep ||
+                        self.token.is_ident() &&
+                        !self.token.is_keyword(keywords::True) &&
+                        !self.token.is_keyword(keywords::False) {
                     let pth =
                         self.parse_path(LifetimeAndTypesWithColons).path;
 
                     // `!`, as an operator, is prefix, so we know this isn't that
-                    if self.token == token::NOT {
+                    if self.token == token::Not {
                         // MACRO INVOCATION expression
                         self.bump();
 
-                        let ket = token::close_delimiter_for(&self.token)
+                        let ket = self.token.get_close_delimiter()
                             .unwrap_or_else(|| {
                                 self.fatal("expected open delimiter")
                             });
@@ -2245,7 +2227,7 @@ impl<'a> Parser<'a> {
                                                            tts,
                                                            EMPTY_CTXT));
                     }
-                    if self.token == token::LBRACE {
+                    if self.token == token::LBrace {
                         // This is a struct literal, unless we're prohibited
                         // from parsing struct literals here.
                         if !self.restrictions.contains(RESTRICTION_NO_STRUCT_LITERAL) {
@@ -2254,16 +2236,16 @@ impl<'a> Parser<'a> {
                             let mut fields = Vec::new();
                             let mut base = None;
 
-                            while self.token != token::RBRACE {
-                                if self.eat(&token::DOTDOT) {
+                            while self.token != token::RBrace {
+                                if self.eat(&token::DotDot) {
                                     base = Some(self.parse_expr());
                                     break;
                                 }
 
                                 fields.push(self.parse_field());
                                 self.commit_expr(&*fields.last().unwrap().expr,
-                                                 &[token::COMMA],
-                                                 &[token::RBRACE]);
+                                                 &[token::Comma],
+                                                 &[token::RBrace]);
                             }
 
                             if fields.len() == 0 && base.is_none() {
@@ -2276,7 +2258,7 @@ impl<'a> Parser<'a> {
                             }
 
                             hi = self.span.hi;
-                            self.expect(&token::RBRACE);
+                            self.expect(&token::RBrace);
                             ex = ExprStruct(pth, fields, base);
                             return self.mk_expr(lo, hi, ex);
                         }
@@ -2299,7 +2281,7 @@ impl<'a> Parser<'a> {
     /// Parse a block or unsafe block
     pub fn parse_block_expr(&mut self, lo: BytePos, blk_mode: BlockCheckMode)
                             -> P<Expr> {
-        self.expect(&token::LBRACE);
+        self.expect(&token::LBrace);
         let blk = self.parse_block_tail(lo, blk_mode);
         return self.mk_expr(blk.span.lo, blk.span.hi, ExprBlock(blk));
     }
@@ -2316,13 +2298,13 @@ impl<'a> Parser<'a> {
         let mut hi;
         loop {
             // expr.f
-            if self.eat(&token::DOT) {
+            if self.eat(&token::Dot) {
                 match self.token {
-                  token::IDENT(i, _) => {
+                  token::Ident(i, _) => {
                     let dot = self.last_span.hi;
                     hi = self.span.hi;
                     self.bump();
-                    let (_, tys) = if self.eat(&token::MOD_SEP) {
+                    let (_, tys) = if self.eat(&token::ModSep) {
                         self.expect_lt();
                         self.parse_generic_values_after_lt()
                     } else {
@@ -2331,11 +2313,11 @@ impl<'a> Parser<'a> {
 
                     // expr.f() method call
                     match self.token {
-                        token::LPAREN => {
+                        token::LParen => {
                             let mut es = self.parse_unspanned_seq(
-                                &token::LPAREN,
-                                &token::RPAREN,
-                                seq_sep_trailing_allowed(token::COMMA),
+                                &token::LParen,
+                                &token::RParen,
+                                seq_sep_trailing_allowed(token::Comma),
                                 |p| p.parse_expr()
                             );
                             hi = self.last_span.hi;
@@ -2352,12 +2334,12 @@ impl<'a> Parser<'a> {
                         }
                     }
                   }
-                  token::LIT_INTEGER(n) => {
+                  token::LitInteger(n) => {
                     let index = n.as_str();
                     let dot = self.last_span.hi;
                     hi = self.span.hi;
                     self.bump();
-                    let (_, tys) = if self.eat(&token::MOD_SEP) {
+                    let (_, tys) = if self.eat(&token::ModSep) {
                         self.expect_lt();
                         self.parse_generic_values_after_lt()
                     } else {
@@ -2377,7 +2359,7 @@ impl<'a> Parser<'a> {
                         }
                     }
                   }
-                  token::LIT_FLOAT(n) => {
+                  token::LitFloat(n) => {
                     self.bump();
                     let last_span = self.last_span;
                     self.span_err(last_span,
@@ -2394,11 +2376,11 @@ impl<'a> Parser<'a> {
             if self.expr_is_complete(&*e) { break; }
             match self.token {
               // expr(...)
-              token::LPAREN => {
+              token::LParen => {
                 let es = self.parse_unspanned_seq(
-                    &token::LPAREN,
-                    &token::RPAREN,
-                    seq_sep_trailing_allowed(token::COMMA),
+                    &token::LParen,
+                    &token::RParen,
+                    seq_sep_trailing_allowed(token::Comma),
                     |p| p.parse_expr()
                 );
                 hi = self.last_span.hi;
@@ -2411,7 +2393,7 @@ impl<'a> Parser<'a> {
               // Could be either an index expression or a slicing expression.
               // Any slicing non-terminal can have a mutable version with `mut`
               // after the opening square bracket.
-              token::LBRACKET => {
+              token::LBracket => {
                 self.bump();
                 let mutbl = if self.eat_keyword(keywords::Mut) {
                     MutMutable
@@ -2420,18 +2402,18 @@ impl<'a> Parser<'a> {
                 };
                 match self.token {
                     // e[]
-                    token::RBRACKET => {
+                    token::RBracket => {
                         self.bump();
                         hi = self.span.hi;
                         let slice = self.mk_slice(e, None, None, mutbl);
                         e = self.mk_expr(lo, hi, slice)
                     }
                     // e[..e]
-                    token::DOTDOT => {
+                    token::DotDot => {
                         self.bump();
                         match self.token {
                             // e[..]
-                            token::RBRACKET => {
+                            token::RBracket => {
                                 self.bump();
                                 hi = self.span.hi;
                                 let slice = self.mk_slice(e, None, None, mutbl);
@@ -2445,7 +2427,7 @@ impl<'a> Parser<'a> {
                             _ => {
                                 hi = self.span.hi;
                                 let e2 = self.parse_expr();
-                                self.commit_expr_expecting(&*e2, token::RBRACKET);
+                                self.commit_expr_expecting(&*e2, token::RBracket);
                                 let slice = self.mk_slice(e, None, Some(e2), mutbl);
                                 e = self.mk_expr(lo, hi, slice)
                             }
@@ -2456,18 +2438,18 @@ impl<'a> Parser<'a> {
                         let ix = self.parse_expr();
                         match self.token {
                             // e[e..] | e[e..e]
-                            token::DOTDOT => {
+                            token::DotDot => {
                                 self.bump();
                                 let e2 = match self.token {
                                     // e[e..]
-                                    token::RBRACKET => {
+                                    token::RBracket => {
                                         self.bump();
                                         None
                                     }
                                     // e[e..e]
                                     _ => {
                                         let e2 = self.parse_expr();
-                                        self.commit_expr_expecting(&*e2, token::RBRACKET);
+                                        self.commit_expr_expecting(&*e2, token::RBracket);
                                         Some(e2)
                                     }
                                 };
@@ -2482,7 +2464,7 @@ impl<'a> Parser<'a> {
                                                   "`mut` keyword is invalid in index expressions");
                                 }
                                 hi = self.span.hi;
-                                self.commit_expr_expecting(&*ix, token::RBRACKET);
+                                self.commit_expr_expecting(&*ix, token::RBracket);
                                 let index = self.mk_index(e, ix);
                                 e = self.mk_expr(lo, hi, index)
                             }
@@ -2502,11 +2484,11 @@ impl<'a> Parser<'a> {
     pub fn parse_sep_and_kleene_op(&mut self) -> (Option<token::Token>, ast::KleeneOp) {
         fn parse_kleene_op(parser: &mut Parser) -> Option<ast::KleeneOp> {
             match parser.token {
-                token::BINOP(token::STAR) => {
+                token::BinOp(token::Star) => {
                     parser.bump();
                     Some(ast::ZeroOrMore)
                 },
-                token::BINOP(token::PLUS) => {
+                token::BinOp(token::Plus) => {
                     parser.bump();
                     Some(ast::OneOrMore)
                 },
@@ -2543,7 +2525,7 @@ impl<'a> Parser<'a> {
         fn parse_non_delim_tt_tok(p: &mut Parser) -> TokenTree {
             maybe_whole!(deref p, NtTT);
             match p.token {
-              token::RPAREN | token::RBRACE | token::RBRACKET => {
+              token::RParen | token::RBrace | token::RBracket => {
                   // This is a conservative error: only report the last unclosed delimiter. The
                   // previous unclosed delimiters could actually be closed! The parser just hasn't
                   // gotten to them yet.
@@ -2556,14 +2538,14 @@ impl<'a> Parser<'a> {
                                   token_str).as_slice())
               },
               /* we ought to allow different depths of unquotation */
-              token::DOLLAR if p.quote_depth > 0u => {
+              token::Dollar if p.quote_depth > 0u => {
                 p.bump();
                 let sp = p.span;
 
-                if p.token == token::LPAREN {
+                if p.token == token::LParen {
                     let seq = p.parse_seq(
-                        &token::LPAREN,
-                        &token::RPAREN,
+                        &token::LParen,
+                        &token::RParen,
                         seq_sep_none(),
                         |p| p.parse_token_tree()
                     );
@@ -2582,8 +2564,8 @@ impl<'a> Parser<'a> {
             }
         }
 
-        match (&self.token, token::close_delimiter_for(&self.token)) {
-            (&token::EOF, _) => {
+        match (&self.token, self.token.get_close_delimiter()) {
+            (&token::Eof, _) => {
                 let open_braces = self.open_braces.clone();
                 for sp in open_braces.iter() {
                     self.span_note(*sp, "Did you mean to close this delimiter?");
@@ -2628,7 +2610,7 @@ impl<'a> Parser<'a> {
     // up to EOF.
     pub fn parse_all_token_trees(&mut self) -> Vec<TokenTree> {
         let mut tts = Vec::new();
-        while self.token != token::EOF {
+        while self.token != token::Eof {
             tts.push(self.parse_token_tree());
         }
         tts
@@ -2639,7 +2621,7 @@ impl<'a> Parser<'a> {
         // the interpolation of Matcher's
         maybe_whole!(self, NtMatchers);
         let mut name_idx = 0u;
-        match token::close_delimiter_for(&self.token) {
+        match self.token.get_close_delimiter() {
             Some(other_delimiter) => {
                 self.bump();
                 self.parse_matcher_subseq_upto(&mut name_idx, &other_delimiter)
@@ -2659,8 +2641,8 @@ impl<'a> Parser<'a> {
         let mut lparens = 0u;
 
         while self.token != *ket || lparens > 0u {
-            if self.token == token::LPAREN { lparens += 1u; }
-            if self.token == token::RPAREN { lparens -= 1u; }
+            if self.token == token::LParen { lparens += 1u; }
+            if self.token == token::RParen { lparens -= 1u; }
             ret_val.push(self.parse_matcher(name_idx));
         }
 
@@ -2672,13 +2654,13 @@ impl<'a> Parser<'a> {
     pub fn parse_matcher(&mut self, name_idx: &mut uint) -> Matcher {
         let lo = self.span.lo;
 
-        let m = if self.token == token::DOLLAR {
+        let m = if self.token == token::Dollar {
             self.bump();
-            if self.token == token::LPAREN {
+            if self.token == token::LParen {
                 let name_idx_lo = *name_idx;
                 self.bump();
                 let ms = self.parse_matcher_subseq_upto(name_idx,
-                                                        &token::RPAREN);
+                                                        &token::RParen);
                 if ms.len() == 0u {
                     self.fatal("repetition body must be nonempty");
                 }
@@ -2686,7 +2668,7 @@ impl<'a> Parser<'a> {
                 MatchSeq(ms, sep, kleene_op, name_idx_lo, *name_idx)
             } else {
                 let bound_to = self.parse_ident();
-                self.expect(&token::COLON);
+                self.expect(&token::Colon);
                 let nt_name = self.parse_ident();
                 let m = MatchNonterminal(bound_to, nt_name, *name_idx);
                 *name_idx += 1;
@@ -2706,36 +2688,36 @@ impl<'a> Parser<'a> {
 
         let ex;
         match self.token {
-          token::NOT => {
+          token::Not => {
             self.bump();
             let e = self.parse_prefix_expr();
             hi = e.span.hi;
             ex = self.mk_unary(UnNot, e);
           }
-          token::BINOP(token::MINUS) => {
+          token::BinOp(token::Minus) => {
             self.bump();
             let e = self.parse_prefix_expr();
             hi = e.span.hi;
             ex = self.mk_unary(UnNeg, e);
           }
-          token::BINOP(token::STAR) => {
+          token::BinOp(token::Star) => {
             self.bump();
             let e = self.parse_prefix_expr();
             hi = e.span.hi;
             ex = self.mk_unary(UnDeref, e);
           }
-          token::BINOP(token::AND) | token::ANDAND => {
+          token::BinOp(token::And) | token::AndAnd => {
             self.expect_and();
             let m = self.parse_mutability();
             let e = self.parse_prefix_expr();
             hi = e.span.hi;
             ex = ExprAddrOf(m, e);
           }
-          token::TILDE => {
+          token::Tilde => {
             self.bump();
             let last_span = self.last_span;
             match self.token {
-                token::LBRACKET => self.obsolete(last_span, ObsoleteOwnedVector),
+                token::LBracket => self.obsolete(last_span, ObsoleteOwnedVector),
                 _ => self.obsolete(last_span, ObsoleteOwnedExpr)
             }
 
@@ -2743,19 +2725,19 @@ impl<'a> Parser<'a> {
             hi = e.span.hi;
             ex = self.mk_unary(UnUniq, e);
           }
-          token::IDENT(_, _) => {
-            if !self.is_keyword(keywords::Box) {
+          token::Ident(_, _) => {
+            if !self.token.is_keyword(keywords::Box) {
                 return self.parse_dot_or_call_expr();
             }
 
             self.bump();
 
             // Check for a place: `box(PLACE) EXPR`.
-            if self.eat(&token::LPAREN) {
+            if self.eat(&token::LParen) {
                 // Support `box() EXPR` as the default.
-                if !self.eat(&token::RPAREN) {
+                if !self.eat(&token::RParen) {
                     let place = self.parse_expr();
-                    self.expect(&token::RPAREN);
+                    self.expect(&token::RParen);
                     let subexpression = self.parse_prefix_expr();
                     hi = subexpression.span.hi;
                     ex = ExprBox(place, subexpression);
@@ -2785,12 +2767,12 @@ impl<'a> Parser<'a> {
 
         // Prevent dynamic borrow errors later on by limiting the
         // scope of the borrows.
-        if self.token == token::BINOP(token::OR) &&
+        if self.token == token::BinOp(token::Or) &&
             self.restrictions.contains(RESTRICTION_NO_BAR_OP) {
             return lhs;
         }
 
-        let cur_opt = token_to_binop(&self.token);
+        let cur_opt = self.token.to_binop();
         match cur_opt {
             Some(cur_op) => {
                 let cur_prec = operator_prec(cur_op);
@@ -2829,25 +2811,25 @@ impl<'a> Parser<'a> {
         let lhs = self.parse_binops();
         let restrictions = self.restrictions & RESTRICTION_NO_STRUCT_LITERAL;
         match self.token {
-          token::EQ => {
+          token::Eq => {
               self.bump();
               let rhs = self.parse_expr_res(restrictions);
               self.mk_expr(lo, rhs.span.hi, ExprAssign(lhs, rhs))
           }
-          token::BINOPEQ(op) => {
+          token::BinOpEq(op) => {
               self.bump();
               let rhs = self.parse_expr_res(restrictions);
               let aop = match op {
-                  token::PLUS =>    BiAdd,
-                  token::MINUS =>   BiSub,
-                  token::STAR =>    BiMul,
-                  token::SLASH =>   BiDiv,
-                  token::PERCENT => BiRem,
-                  token::CARET =>   BiBitXor,
-                  token::AND =>     BiBitAnd,
-                  token::OR =>      BiBitOr,
-                  token::SHL =>     BiShl,
-                  token::SHR =>     BiShr
+                  token::Plus =>    BiAdd,
+                  token::Minus =>   BiSub,
+                  token::Star =>    BiMul,
+                  token::Slash =>   BiDiv,
+                  token::Percent => BiRem,
+                  token::Caret =>   BiBitXor,
+                  token::And =>     BiBitAnd,
+                  token::Or =>      BiBitOr,
+                  token::Shl =>     BiShl,
+                  token::Shr =>     BiShr
               };
               let rhs_span = rhs.span;
               let assign_op = self.mk_assign_op(aop, lhs, rhs);
@@ -2861,7 +2843,7 @@ impl<'a> Parser<'a> {
 
     /// Parse an 'if' or 'if let' expression ('if' token already eaten)
     pub fn parse_if_expr(&mut self) -> P<Expr> {
-        if self.is_keyword(keywords::Let) {
+        if self.token.is_keyword(keywords::Let) {
             return self.parse_if_let_expr();
         }
         let lo = self.last_span.lo;
@@ -2882,7 +2864,7 @@ impl<'a> Parser<'a> {
         let lo = self.last_span.lo;
         self.expect_keyword(keywords::Let);
         let pat = self.parse_pat();
-        self.expect(&token::EQ);
+        self.expect(&token::Eq);
         let expr = self.parse_expr_res(RESTRICTION_NO_STRUCT_LITERAL);
         let thn = self.parse_block();
         let (hi, els) = if self.eat_keyword(keywords::Else) {
@@ -2952,7 +2934,7 @@ impl<'a> Parser<'a> {
 
     /// Parse a 'while' or 'while let' expression ('while' token already eaten)
     pub fn parse_while_expr(&mut self, opt_ident: Option<ast::Ident>) -> P<Expr> {
-        if self.is_keyword(keywords::Let) {
+        if self.token.is_keyword(keywords::Let) {
             return self.parse_while_let_expr(opt_ident);
         }
         let lo = self.last_span.lo;
@@ -2967,7 +2949,7 @@ impl<'a> Parser<'a> {
         let lo = self.last_span.lo;
         self.expect_keyword(keywords::Let);
         let pat = self.parse_pat();
-        self.expect(&token::EQ);
+        self.expect(&token::Eq);
         let expr = self.parse_expr_res(RESTRICTION_NO_STRUCT_LITERAL);
         let body = self.parse_block();
         let hi = body.span.hi;
@@ -2984,9 +2966,9 @@ impl<'a> Parser<'a> {
     fn parse_match_expr(&mut self) -> P<Expr> {
         let lo = self.last_span.lo;
         let discriminant = self.parse_expr_res(RESTRICTION_NO_STRUCT_LITERAL);
-        self.commit_expr_expecting(&*discriminant, token::LBRACE);
+        self.commit_expr_expecting(&*discriminant, token::LBrace);
         let mut arms: Vec<Arm> = Vec::new();
-        while self.token != token::RBRACE {
+        while self.token != token::RBrace {
             arms.push(self.parse_arm());
         }
         let hi = self.span.hi;
@@ -3001,17 +2983,17 @@ impl<'a> Parser<'a> {
         if self.eat_keyword(keywords::If) {
             guard = Some(self.parse_expr());
         }
-        self.expect(&token::FAT_ARROW);
+        self.expect(&token::FatArrow);
         let expr = self.parse_expr_res(RESTRICTION_STMT_EXPR);
 
         let require_comma =
             !classify::expr_is_simple_block(&*expr)
-            && self.token != token::RBRACE;
+            && self.token != token::RBrace;
 
         if require_comma {
-            self.commit_expr(&*expr, &[token::COMMA], &[token::RBRACE]);
+            self.commit_expr(&*expr, &[token::Comma], &[token::RBrace]);
         } else {
-            self.eat(&token::COMMA);
+            self.eat(&token::Comma);
         }
 
         ast::Arm {
@@ -3038,7 +3020,7 @@ impl<'a> Parser<'a> {
 
     /// Parse the RHS of a local variable declaration (e.g. '= 14;')
     fn parse_initializer(&mut self) -> Option<P<Expr>> {
-        if self.token == token::EQ {
+        if self.token == token::Eq {
             self.bump();
             Some(self.parse_expr())
         } else {
@@ -3051,7 +3033,7 @@ impl<'a> Parser<'a> {
         let mut pats = Vec::new();
         loop {
             pats.push(self.parse_pat());
-            if self.token == token::BINOP(token::OR) { self.bump(); }
+            if self.token == token::BinOp(token::Or) { self.bump(); }
             else { return pats; }
         };
     }
@@ -3065,19 +3047,19 @@ impl<'a> Parser<'a> {
         let mut first = true;
         let mut before_slice = true;
 
-        while self.token != token::RBRACKET {
+        while self.token != token::RBracket {
             if first {
                 first = false;
             } else {
-                self.expect(&token::COMMA);
+                self.expect(&token::Comma);
             }
 
             if before_slice {
-                if self.token == token::DOTDOT {
+                if self.token == token::DotDot {
                     self.bump();
 
-                    if self.token == token::COMMA ||
-                            self.token == token::RBRACKET {
+                    if self.token == token::Comma ||
+                            self.token == token::RBracket {
                         slice = Some(P(ast::Pat {
                             id: ast::DUMMY_NODE_ID,
                             node: PatWild(PatWildMulti),
@@ -3094,7 +3076,7 @@ impl<'a> Parser<'a> {
             }
 
             let subpat = self.parse_pat();
-            if before_slice && self.token == token::DOTDOT {
+            if before_slice && self.token == token::DotDot {
                 self.bump();
                 slice = Some(subpat);
                 before_slice = false;
@@ -3113,21 +3095,21 @@ impl<'a> Parser<'a> {
         let mut fields = Vec::new();
         let mut etc = false;
         let mut first = true;
-        while self.token != token::RBRACE {
+        while self.token != token::RBrace {
             if first {
                 first = false;
             } else {
-                self.expect(&token::COMMA);
+                self.expect(&token::Comma);
                 // accept trailing commas
-                if self.token == token::RBRACE { break }
+                if self.token == token::RBrace { break }
             }
 
             let lo = self.span.lo;
             let hi;
 
-            if self.token == token::DOTDOT {
+            if self.token == token::DotDot {
                 self.bump();
-                if self.token != token::RBRACE {
+                if self.token != token::RBrace {
                     let token_str = self.this_token_to_string();
                     self.fatal(format!("expected `{}`, found `{}`", "}",
                                        token_str).as_slice())
@@ -3146,7 +3128,7 @@ impl<'a> Parser<'a> {
 
             let fieldname = self.parse_ident();
 
-            let (subpat, is_shorthand) = if self.token == token::COLON {
+            let (subpat, is_shorthand) = if self.token == token::Colon {
                 match bind_type {
                     BindByRef(..) | BindByValue(MutMutable) => {
                         let token_str = self.this_token_to_string();
@@ -3186,7 +3168,7 @@ impl<'a> Parser<'a> {
         let pat;
         match self.token {
             // parse _
-          token::UNDERSCORE => {
+          token::Underscore => {
             self.bump();
             pat = PatWild(PatWildSingle);
             hi = self.last_span.hi;
@@ -3196,7 +3178,7 @@ impl<'a> Parser<'a> {
                 span: mk_sp(lo, hi)
             })
           }
-          token::TILDE => {
+          token::Tilde => {
             // parse ~pat
             self.bump();
             let sub = self.parse_pat();
@@ -3210,7 +3192,7 @@ impl<'a> Parser<'a> {
                 span: mk_sp(lo, hi)
             })
           }
-          token::BINOP(token::AND) | token::ANDAND => {
+          token::BinOp(token::And) | token::AndAnd => {
             // parse &pat
             let lo = self.span.lo;
             self.expect_and();
@@ -3223,10 +3205,10 @@ impl<'a> Parser<'a> {
                 span: mk_sp(lo, hi)
             })
           }
-          token::LPAREN => {
+          token::LParen => {
             // parse (pat,pat,pat,...) as tuple
             self.bump();
-            if self.token == token::RPAREN {
+            if self.token == token::RParen {
                 hi = self.span.hi;
                 self.bump();
                 let lit = P(codemap::Spanned {
@@ -3236,15 +3218,15 @@ impl<'a> Parser<'a> {
                 pat = PatLit(expr);
             } else {
                 let mut fields = vec!(self.parse_pat());
-                if self.look_ahead(1, |t| *t != token::RPAREN) {
-                    while self.token == token::COMMA {
+                if self.look_ahead(1, |t| *t != token::RParen) {
+                    while self.token == token::Comma {
                         self.bump();
-                        if self.token == token::RPAREN { break; }
+                        if self.token == token::RParen { break; }
                         fields.push(self.parse_pat());
                     }
                 }
-                if fields.len() == 1 { self.expect(&token::COMMA); }
-                self.expect(&token::RPAREN);
+                if fields.len() == 1 { self.expect(&token::Comma); }
+                self.expect(&token::RParen);
                 pat = PatTup(fields);
             }
             hi = self.last_span.hi;
@@ -3254,13 +3236,13 @@ impl<'a> Parser<'a> {
                 span: mk_sp(lo, hi)
             })
           }
-          token::LBRACKET => {
+          token::LBracket => {
             // parse [pat,pat,...] as vector pattern
             self.bump();
             let (before, slice, after) =
                 self.parse_pat_vec_elements();
 
-            self.expect(&token::RBRACKET);
+            self.expect(&token::RBracket);
             pat = ast::PatVec(before, slice, after);
             hi = self.last_span.hi;
             return P(ast::Pat {
@@ -3273,20 +3255,21 @@ impl<'a> Parser<'a> {
         }
         // at this point, token != _, ~, &, &&, (, [
 
-        if (!is_ident_or_path(&self.token) && self.token != token::MOD_SEP)
-                || self.is_keyword(keywords::True)
-                || self.is_keyword(keywords::False) {
+        if (!(self.token.is_ident() || self.token.is_path())
+              && self.token != token::ModSep)
+                || self.token.is_keyword(keywords::True)
+                || self.token.is_keyword(keywords::False) {
             // Parse an expression pattern or exp .. exp.
             //
             // These expressions are limited to literals (possibly
             // preceded by unary-minus) or identifiers.
             let val = self.parse_literal_maybe_minus();
-            if (self.token == token::DOTDOTDOT) &&
+            if (self.token == token::DotDotDot) &&
                     self.look_ahead(1, |t| {
-                        *t != token::COMMA && *t != token::RBRACKET
+                        *t != token::Comma && *t != token::RBracket
                     }) {
                 self.bump();
-                let end = if is_ident_or_path(&self.token) {
+                let end = if self.token.is_ident() || self.token.is_path() {
                     let path = self.parse_path(LifetimeAndTypesWithColons)
                                    .path;
                     let hi = self.span.hi;
@@ -3320,27 +3303,27 @@ impl<'a> Parser<'a> {
         } else {
             let can_be_enum_or_struct = self.look_ahead(1, |t| {
                 match *t {
-                    token::LPAREN | token::LBRACKET | token::LT |
-                    token::LBRACE | token::MOD_SEP => true,
+                    token::LParen | token::LBracket | token::Lt |
+                    token::LBrace | token::ModSep => true,
                     _ => false,
                 }
             });
 
-            if self.look_ahead(1, |t| *t == token::DOTDOTDOT) &&
+            if self.look_ahead(1, |t| *t == token::DotDotDot) &&
                     self.look_ahead(2, |t| {
-                        *t != token::COMMA && *t != token::RBRACKET
+                        *t != token::Comma && *t != token::RBracket
                     }) {
                 let start = self.parse_expr_res(RESTRICTION_NO_BAR_OP);
-                self.eat(&token::DOTDOTDOT);
+                self.eat(&token::DotDotDot);
                 let end = self.parse_expr_res(RESTRICTION_NO_BAR_OP);
                 pat = PatRange(start, end);
-            } else if is_plain_ident(&self.token) && !can_be_enum_or_struct {
+            } else if self.token.is_plain_ident() && !can_be_enum_or_struct {
                 let id = self.parse_ident();
                 let id_span = self.last_span;
                 let pth1 = codemap::Spanned{span:id_span, node: id};
-                if self.eat(&token::NOT) {
+                if self.eat(&token::Not) {
                     // macro invocation
-                    let ket = token::close_delimiter_for(&self.token)
+                    let ket = self.token.get_close_delimiter()
                                     .unwrap_or_else(|| self.fatal("expected open delimiter"));
                     self.bump();
 
@@ -3351,7 +3334,7 @@ impl<'a> Parser<'a> {
                     let mac = MacInvocTT(ident_to_path(id_span,id), tts, EMPTY_CTXT);
                     pat = ast::PatMac(codemap::Spanned {node: mac, span: self.span});
                 } else {
-                    let sub = if self.eat(&token::AT) {
+                    let sub = if self.eat(&token::At) {
                         // parse foo @ pat
                         Some(self.parse_pat())
                     } else {
@@ -3365,7 +3348,7 @@ impl<'a> Parser<'a> {
                 let enum_path = self.parse_path(LifetimeAndTypesWithColons)
                                     .path;
                 match self.token {
-                    token::LBRACE => {
+                    token::LBrace => {
                         self.bump();
                         let (fields, etc) =
                             self.parse_pat_fields();
@@ -3375,10 +3358,10 @@ impl<'a> Parser<'a> {
                     _ => {
                         let mut args: Vec<P<Pat>> = Vec::new();
                         match self.token {
-                          token::LPAREN => {
+                          token::LParen => {
                             let is_dotdot = self.look_ahead(1, |t| {
                                 match *t {
-                                    token::DOTDOT => true,
+                                    token::DotDot => true,
                                     _ => false,
                                 }
                             });
@@ -3386,13 +3369,13 @@ impl<'a> Parser<'a> {
                                 // This is a "top constructor only" pat
                                 self.bump();
                                 self.bump();
-                                self.expect(&token::RPAREN);
+                                self.expect(&token::RParen);
                                 pat = PatEnum(enum_path, None);
                             } else {
                                 args = self.parse_enum_variant_seq(
-                                    &token::LPAREN,
-                                    &token::RPAREN,
-                                    seq_sep_trailing_allowed(token::COMMA),
+                                    &token::LParen,
+                                    &token::RParen,
+                                    seq_sep_trailing_allowed(token::Comma),
                                     |p| p.parse_pat()
                                 );
                                 pat = PatEnum(enum_path, Some(args));
@@ -3439,7 +3422,7 @@ impl<'a> Parser<'a> {
     fn parse_pat_ident(&mut self,
                        binding_mode: ast::BindingMode)
                        -> ast::Pat_ {
-        if !is_plain_ident(&self.token) {
+        if !self.token.is_plain_ident() {
             let span = self.span;
             let tok_str = self.this_token_to_string();
             self.span_fatal(span,
@@ -3448,7 +3431,7 @@ impl<'a> Parser<'a> {
         let ident = self.parse_ident();
         let last_span = self.last_span;
         let name = codemap::Spanned{span: last_span, node: ident};
-        let sub = if self.eat(&token::AT) {
+        let sub = if self.eat(&token::At) {
             Some(self.parse_pat())
         } else {
             None
@@ -3460,7 +3443,7 @@ impl<'a> Parser<'a> {
         // leads to a parse error.  Note that if there is no explicit
         // binding mode then we do not end up here, because the lookahead
         // will direct us over to parse_enum_variant()
-        if self.token == token::LPAREN {
+        if self.token == token::LParen {
             let last_span = self.last_span;
             self.span_fatal(
                 last_span,
@@ -3480,7 +3463,7 @@ impl<'a> Parser<'a> {
             node: TyInfer,
             span: mk_sp(lo, lo),
         });
-        if self.eat(&token::COLON) {
+        if self.eat(&token::Colon) {
             ty = self.parse_ty(true);
         }
         let init = self.parse_initializer();
@@ -3505,11 +3488,11 @@ impl<'a> Parser<'a> {
     fn parse_name_and_ty(&mut self, pr: Visibility,
                          attrs: Vec<Attribute> ) -> StructField {
         let lo = self.span.lo;
-        if !is_plain_ident(&self.token) {
+        if !self.token.is_plain_ident() {
             self.fatal("expected ident");
         }
         let name = self.parse_ident();
-        self.expect(&token::COLON);
+        self.expect(&token::Colon);
         let ty = self.parse_ty(true);
         spanned(lo, self.last_span.hi, ast::StructField_ {
             kind: NamedField(name, pr),
@@ -3543,14 +3526,14 @@ impl<'a> Parser<'a> {
         }
 
         let lo = self.span.lo;
-        if self.is_keyword(keywords::Let) {
+        if self.token.is_keyword(keywords::Let) {
             check_expected_item(self, item_attrs.as_slice());
             self.expect_keyword(keywords::Let);
             let decl = self.parse_let();
             P(spanned(lo, decl.span.hi, StmtDecl(decl, ast::DUMMY_NODE_ID)))
-        } else if is_ident(&self.token)
-            && !token::is_any_keyword(&self.token)
-            && self.look_ahead(1, |t| *t == token::NOT) {
+        } else if self.token.is_ident()
+            && !self.token.is_any_keyword()
+            && self.look_ahead(1, |t| *t == token::Not) {
             // it's a macro invocation:
 
             check_expected_item(self, item_attrs.as_slice());
@@ -3560,7 +3543,7 @@ impl<'a> Parser<'a> {
             let pth = self.parse_path(NoTypesAllowed).path;
             self.bump();
 
-            let id = if token::close_delimiter_for(&self.token).is_some() {
+            let id = if self.token.get_close_delimiter().is_some() {
                 token::special_idents::invalid // no special identifier
             } else {
                 self.parse_ident()
@@ -3569,7 +3552,7 @@ impl<'a> Parser<'a> {
             // check that we're pointing at delimiters (need to check
             // again after the `if`, because of `parse_ident`
             // consuming more tokens).
-            let (bra, ket) = match token::close_delimiter_for(&self.token) {
+            let (bra, ket) = match self.token.get_close_delimiter() {
                 Some(ket) => (self.token.clone(), ket),
                 None      => {
                     // we only expect an ident if we didn't parse one
@@ -3649,7 +3632,7 @@ impl<'a> Parser<'a> {
         maybe_whole!(no_clone self, NtBlock);
 
         let lo = self.span.lo;
-        self.expect(&token::LBRACE);
+        self.expect(&token::LBrace);
 
         return self.parse_block_tail_(lo, DefaultBlock, Vec::new());
     }
@@ -3661,7 +3644,7 @@ impl<'a> Parser<'a> {
         maybe_whole!(pair_empty self, NtBlock);
 
         let lo = self.span.lo;
-        self.expect(&token::LBRACE);
+        self.expect(&token::LBrace);
         let (inner, next) = self.parse_inner_attrs_and_next();
 
         (inner, self.parse_block_tail_(lo, DefaultBlock, next))
@@ -3698,12 +3681,12 @@ impl<'a> Parser<'a> {
 
         let mut attributes_box = attrs_remaining;
 
-        while self.token != token::RBRACE {
+        while self.token != token::RBrace {
             // parsing items even when they're not allowed lets us give
             // better error messages and recover more gracefully.
             attributes_box.push_all(self.parse_outer_attributes().as_slice());
             match self.token {
-                token::SEMI => {
+                token::Semi => {
                     if !attributes_box.is_empty() {
                         let last_span = self.last_span;
                         self.span_err(last_span,
@@ -3712,7 +3695,7 @@ impl<'a> Parser<'a> {
                     }
                     self.bump(); // empty
                 }
-                token::RBRACE => {
+                token::RBrace => {
                     // fall through and out.
                 }
                 _ => {
@@ -3723,11 +3706,11 @@ impl<'a> Parser<'a> {
                             // expression without semicolon
                             if classify::expr_requires_semi_to_be_stmt(&*e) {
                                 // Just check for errors and recover; do not eat semicolon yet.
-                                self.commit_stmt(&[], &[token::SEMI, token::RBRACE]);
+                                self.commit_stmt(&[], &[token::Semi, token::RBrace]);
                             }
 
                             match self.token {
-                                token::SEMI => {
+                                token::Semi => {
                                     self.bump();
                                     let span_with_semi = Span {
                                         lo: span.lo,
@@ -3739,7 +3722,7 @@ impl<'a> Parser<'a> {
                                         span: span_with_semi,
                                     }));
                                 }
-                                token::RBRACE => {
+                                token::RBrace => {
                                     expr = Some(e);
                                 }
                                 _ => {
@@ -3753,14 +3736,14 @@ impl<'a> Parser<'a> {
                         StmtMac(m, semi) => {
                             // statement macro; might be an expr
                             match self.token {
-                                token::SEMI => {
+                                token::Semi => {
                                     stmts.push(P(Spanned {
                                         node: StmtMac(m, true),
                                         span: span,
                                     }));
                                     self.bump();
                                 }
-                                token::RBRACE => {
+                                token::RBrace => {
                                     // if a block ends in `m!(arg)` without
                                     // a `;`, it must be an expr
                                     expr = Some(
@@ -3778,7 +3761,7 @@ impl<'a> Parser<'a> {
                         }
                         _ => { // all other kinds of statements:
                             if classify::stmt_ends_with_semi(&node) {
-                                self.commit_stmt_expecting(token::SEMI);
+                                self.commit_stmt_expecting(token::Semi);
                             }
 
                             stmts.push(P(Spanned {
@@ -3814,7 +3797,7 @@ impl<'a> Parser<'a> {
     fn parse_colon_then_ty_param_bounds(&mut self)
                                         -> OwnedSlice<TyParamBound>
     {
-        if !self.eat(&token::COLON) {
+        if !self.eat(&token::Colon) {
             OwnedSlice::empty()
         } else {
             self.parse_ty_param_bounds()
@@ -3830,7 +3813,7 @@ impl<'a> Parser<'a> {
     {
         let mut result = vec!();
         loop {
-            let lifetime_defs = if self.eat(&token::LT) {
+            let lifetime_defs = if self.eat(&token::Lt) {
                 let lifetime_defs = self.parse_lifetime_defs();
                 self.expect_gt();
                 lifetime_defs
@@ -3838,7 +3821,7 @@ impl<'a> Parser<'a> {
                 Vec::new()
             };
             match self.token {
-                token::LIFETIME(lifetime) => {
+                token::Lifetime(lifetime) => {
                     if lifetime_defs.len() > 0 {
                         let span = self.last_span;
                         self.span_err(span, "lifetime declarations are not \
@@ -3852,14 +3835,14 @@ impl<'a> Parser<'a> {
                     }));
                     self.bump();
                 }
-                token::MOD_SEP | token::IDENT(..) => {
+                token::ModSep | token::Ident(..) => {
                     let path =
                         self.parse_path(LifetimeAndTypesWithoutColons).path;
-                    if self.token == token::LPAREN {
+                    if self.token == token::LParen {
                         self.bump();
                         let inputs = self.parse_seq_to_end(
-                            &token::RPAREN,
-                            seq_sep_trailing_allowed(token::COMMA),
+                            &token::RParen,
+                            seq_sep_trailing_allowed(token::Comma),
                             |p| p.parse_arg_general(false));
                         let (return_style, output) = self.parse_ret_ty();
                         result.push(UnboxedFnTyParamBound(P(UnboxedFnBound {
@@ -3884,7 +3867,7 @@ impl<'a> Parser<'a> {
                 _ => break,
             }
 
-            if !self.eat(&token::BINOP(token::PLUS)) {
+            if !self.eat(&token::BinOp(token::Plus)) {
                 break;
             }
         }
@@ -3920,7 +3903,7 @@ impl<'a> Parser<'a> {
         let mut span = self.span;
         let mut ident = self.parse_ident();
         let mut unbound = None;
-        if self.eat(&token::QUESTION) {
+        if self.eat(&token::Question) {
             let tref = Parser::trait_ref_from_ident(ident, span);
             unbound = Some(TraitTyParamBound(tref));
             span = self.span;
@@ -3929,7 +3912,7 @@ impl<'a> Parser<'a> {
 
         let bounds = self.parse_colon_then_ty_param_bounds();
 
-        let default = if self.token == token::EQ {
+        let default = if self.token == token::Eq {
             self.bump();
             Some(self.parse_ty(true))
         }
@@ -3953,10 +3936,10 @@ impl<'a> Parser<'a> {
     ///                  | ( < lifetimes , typaramseq ( , )? > )
     /// where   typaramseq = ( typaram ) | ( typaram , typaramseq )
     pub fn parse_generics(&mut self) -> ast::Generics {
-        if self.eat(&token::LT) {
+        if self.eat(&token::Lt) {
             let lifetime_defs = self.parse_lifetime_defs();
             let mut seen_default = false;
-            let ty_params = self.parse_seq_to_gt(Some(token::COMMA), |p| {
+            let ty_params = self.parse_seq_to_gt(Some(token::Comma), |p| {
                 p.forbid_lifetime();
                 let ty_param = p.parse_ty_param();
                 if ty_param.default.is_some() {
@@ -3982,9 +3965,9 @@ impl<'a> Parser<'a> {
     }
 
     fn parse_generic_values_after_lt(&mut self) -> (Vec<ast::Lifetime>, Vec<P<Ty>> ) {
-        let lifetimes = self.parse_lifetimes(token::COMMA);
+        let lifetimes = self.parse_lifetimes(token::Comma);
         let result = self.parse_seq_to_gt(
-            Some(token::COMMA),
+            Some(token::Comma),
             |p| {
                 p.forbid_lifetime();
                 p.parse_ty(true)
@@ -3994,7 +3977,7 @@ impl<'a> Parser<'a> {
     }
 
     fn forbid_lifetime(&mut self) {
-        if Parser::token_is_lifetime(&self.token) {
+        if self.token.is_lifetime() {
             let span = self.span;
             self.span_fatal(span, "lifetime parameters must be declared \
                                         prior to type parameters");
@@ -4011,10 +3994,10 @@ impl<'a> Parser<'a> {
         loop {
             let lo = self.span.lo;
             let ident = match self.token {
-                token::IDENT(..) => self.parse_ident(),
+                token::Ident(..) => self.parse_ident(),
                 _ => break,
             };
-            self.expect(&token::COLON);
+            self.expect(&token::Colon);
 
             let bounds = self.parse_ty_param_bounds();
             let hi = self.span.hi;
@@ -4034,7 +4017,7 @@ impl<'a> Parser<'a> {
             });
             parsed_something = true;
 
-            if !self.eat(&token::COMMA) {
+            if !self.eat(&token::Comma) {
                 break
             }
         }
@@ -4052,14 +4035,14 @@ impl<'a> Parser<'a> {
         let sp = self.span;
         let mut args: Vec<Option<Arg>> =
             self.parse_unspanned_seq(
-                &token::LPAREN,
-                &token::RPAREN,
-                seq_sep_trailing_allowed(token::COMMA),
+                &token::LParen,
+                &token::RParen,
+                seq_sep_trailing_allowed(token::Comma),
                 |p| {
-                    if p.token == token::DOTDOTDOT {
+                    if p.token == token::DotDotDot {
                         p.bump();
                         if allow_variadic {
-                            if p.token != token::RPAREN {
+                            if p.token != token::RParen {
                                 let span = p.span;
                                 p.span_fatal(span,
                                     "`...` must be last in argument list for variadic function");
@@ -4112,14 +4095,14 @@ impl<'a> Parser<'a> {
 
     fn is_self_ident(&mut self) -> bool {
         match self.token {
-          token::IDENT(id, false) => id.name == special_idents::self_.name,
+          token::Ident(id, token::Plain) => id.name == special_idents::self_.name,
           _ => false
         }
     }
 
     fn expect_self_ident(&mut self) -> ast::Ident {
         match self.token {
-            token::IDENT(id, false) if id.name == special_idents::self_.name => {
+            token::Ident(id, token::Plain) if id.name == special_idents::self_.name => {
                 self.bump();
                 id
             },
@@ -4146,29 +4129,22 @@ impl<'a> Parser<'a> {
             //
             // We already know that the current token is `&`.
 
-            if this.look_ahead(1, |t| token::is_keyword(keywords::Self, t)) {
+            if this.look_ahead(1, |t| t.is_keyword(keywords::Self)) {
                 this.bump();
                 SelfRegion(None, MutImmutable, this.expect_self_ident())
-            } else if this.look_ahead(1, |t| Parser::token_is_mutability(t)) &&
-                    this.look_ahead(2,
-                                    |t| token::is_keyword(keywords::Self,
-                                                          t)) {
+            } else if this.look_ahead(1, |t| t.is_mutability()) &&
+                      this.look_ahead(2, |t| t.is_keyword(keywords::Self)) {
                 this.bump();
                 let mutability = this.parse_mutability();
                 SelfRegion(None, mutability, this.expect_self_ident())
-            } else if this.look_ahead(1, |t| Parser::token_is_lifetime(t)) &&
-                       this.look_ahead(2,
-                                       |t| token::is_keyword(keywords::Self,
-                                                             t)) {
+            } else if this.look_ahead(1, |t| t.is_lifetime()) &&
+                      this.look_ahead(2, |t| t.is_keyword(keywords::Self)) {
                 this.bump();
                 let lifetime = this.parse_lifetime();
                 SelfRegion(Some(lifetime), MutImmutable, this.expect_self_ident())
-            } else if this.look_ahead(1, |t| Parser::token_is_lifetime(t)) &&
-                      this.look_ahead(2, |t| {
-                          Parser::token_is_mutability(t)
-                      }) &&
-                      this.look_ahead(3, |t| token::is_keyword(keywords::Self,
-                                                               t)) {
+            } else if this.look_ahead(1, |t| t.is_lifetime()) &&
+                      this.look_ahead(2, |t| t.is_mutability()) &&
+                      this.look_ahead(3, |t| t.is_keyword(keywords::Self)) {
                 this.bump();
                 let lifetime = this.parse_lifetime();
                 let mutability = this.parse_mutability();
@@ -4178,7 +4154,7 @@ impl<'a> Parser<'a> {
             }
         }
 
-        self.expect(&token::LPAREN);
+        self.expect(&token::LParen);
 
         // A bit of complexity and lookahead is needed here in order to be
         // backwards compatible.
@@ -4188,15 +4164,15 @@ impl<'a> Parser<'a> {
 
         let mut mutbl_self = MutImmutable;
         let explicit_self = match self.token {
-            token::BINOP(token::AND) => {
+            token::BinOp(token::And) => {
                 let eself = maybe_parse_borrowed_explicit_self(self);
                 self_ident_lo = self.last_span.lo;
                 self_ident_hi = self.last_span.hi;
                 eself
             }
-            token::TILDE => {
+            token::Tilde => {
                 // We need to make sure it isn't a type
-                if self.look_ahead(1, |t| token::is_keyword(keywords::Self, t)) {
+                if self.look_ahead(1, |t| t.is_keyword(keywords::Self)) {
                     self.bump();
                     drop(self.expect_self_ident());
                     let last_span = self.last_span;
@@ -4204,11 +4180,11 @@ impl<'a> Parser<'a> {
                 }
                 SelfStatic
             }
-            token::BINOP(token::STAR) => {
+            token::BinOp(token::Star) => {
                 // Possibly "*self" or "*mut self" -- not supported. Try to avoid
                 // emitting cryptic "unexpected token" errors.
                 self.bump();
-                let _mutability = if Parser::token_is_mutability(&self.token) {
+                let _mutability = if self.token.is_mutability() {
                     self.parse_mutability()
                 } else {
                     MutImmutable
@@ -4221,36 +4197,32 @@ impl<'a> Parser<'a> {
                 // error case, making bogus self ident:
                 SelfValue(special_idents::self_)
             }
-            token::IDENT(..) => {
+            token::Ident(..) => {
                 if self.is_self_ident() {
                     let self_ident = self.expect_self_ident();
 
                     // Determine whether this is the fully explicit form, `self:
                     // TYPE`.
-                    if self.eat(&token::COLON) {
+                    if self.eat(&token::Colon) {
                         SelfExplicit(self.parse_ty(false), self_ident)
                     } else {
                         SelfValue(self_ident)
                     }
-                } else if Parser::token_is_mutability(&self.token) &&
-                        self.look_ahead(1, |t| {
-                            token::is_keyword(keywords::Self, t)
-                        }) {
+                } else if self.token.is_mutability() &&
+                        self.look_ahead(1, |t| t.is_keyword(keywords::Self)) {
                     mutbl_self = self.parse_mutability();
                     let self_ident = self.expect_self_ident();
 
                     // Determine whether this is the fully explicit form,
                     // `self: TYPE`.
-                    if self.eat(&token::COLON) {
+                    if self.eat(&token::Colon) {
                         SelfExplicit(self.parse_ty(false), self_ident)
                     } else {
                         SelfValue(self_ident)
                     }
-                } else if Parser::token_is_mutability(&self.token) &&
-                        self.look_ahead(1, |t| *t == token::TILDE) &&
-                        self.look_ahead(2, |t| {
-                            token::is_keyword(keywords::Self, t)
-                        }) {
+                } else if self.token.is_mutability() &&
+                        self.look_ahead(1, |t| *t == token::Tilde) &&
+                        self.look_ahead(2, |t| t.is_keyword(keywords::Self)) {
                     mutbl_self = self.parse_mutability();
                     self.bump();
                     drop(self.expect_self_ident());
@@ -4273,18 +4245,18 @@ impl<'a> Parser<'a> {
             {
             // If we parsed a self type, expect a comma before the argument list.
             match self.token {
-                token::COMMA => {
+                token::Comma => {
                     self.bump();
-                    let sep = seq_sep_trailing_allowed(token::COMMA);
+                    let sep = seq_sep_trailing_allowed(token::Comma);
                     let mut fn_inputs = self.parse_seq_to_before_end(
-                        &token::RPAREN,
+                        &token::RParen,
                         sep,
                         parse_arg_fn
                     );
                     fn_inputs.insert(0, Arg::new_self(explicit_self_sp, mutbl_self, $self_id));
                     fn_inputs
                 }
-                token::RPAREN => {
+                token::RParen => {
                     vec!(Arg::new_self(explicit_self_sp, mutbl_self, $self_id))
                 }
                 _ => {
@@ -4298,8 +4270,8 @@ impl<'a> Parser<'a> {
 
         let fn_inputs = match explicit_self {
             SelfStatic =>  {
-                let sep = seq_sep_trailing_allowed(token::COMMA);
-                self.parse_seq_to_before_end(&token::RPAREN, sep, parse_arg_fn)
+                let sep = seq_sep_trailing_allowed(token::Comma);
+                self.parse_seq_to_before_end(&token::RParen, sep, parse_arg_fn)
             }
             SelfValue(id) => parse_remaining_arguments!(id),
             SelfRegion(_,_,id) => parse_remaining_arguments!(id),
@@ -4307,7 +4279,7 @@ impl<'a> Parser<'a> {
         };
 
 
-        self.expect(&token::RPAREN);
+        self.expect(&token::RParen);
 
         let hi = self.span.hi;
 
@@ -4327,22 +4299,22 @@ impl<'a> Parser<'a> {
     fn parse_fn_block_decl(&mut self)
                            -> (P<FnDecl>, Option<UnboxedClosureKind>) {
         let (optional_unboxed_closure_kind, inputs_captures) = {
-            if self.eat(&token::OROR) {
+            if self.eat(&token::OrOr) {
                 (None, Vec::new())
             } else {
-                self.expect(&token::BINOP(token::OR));
+                self.expect(&token::BinOp(token::Or));
                 let optional_unboxed_closure_kind =
                     self.parse_optional_unboxed_closure_kind();
                 let args = self.parse_seq_to_before_end(
-                    &token::BINOP(token::OR),
-                    seq_sep_trailing_allowed(token::COMMA),
+                    &token::BinOp(token::Or),
+                    seq_sep_trailing_allowed(token::Comma),
                     |p| p.parse_fn_block_arg()
                 );
                 self.bump();
                 (optional_unboxed_closure_kind, args)
             }
         };
-        let (style, output) = if self.token == token::RARROW {
+        let (style, output) = if self.token == token::RArrow {
             self.parse_ret_ty()
         } else {
             (Return, P(Ty {
@@ -4363,12 +4335,12 @@ impl<'a> Parser<'a> {
     /// Parses the `(arg, arg) -> return_type` header on a procedure.
     fn parse_proc_decl(&mut self) -> P<FnDecl> {
         let inputs =
-            self.parse_unspanned_seq(&token::LPAREN,
-                                     &token::RPAREN,
-                                     seq_sep_trailing_allowed(token::COMMA),
+            self.parse_unspanned_seq(&token::LParen,
+                                     &token::RParen,
+                                     seq_sep_trailing_allowed(token::Comma),
                                      |p| p.parse_fn_block_arg());
 
-        let (style, output) = if self.token == token::RARROW {
+        let (style, output) = if self.token == token::RArrow {
             self.parse_ret_ty()
         } else {
             (Return, P(Ty {
@@ -4431,16 +4403,16 @@ impl<'a> Parser<'a> {
 
         // code copied from parse_macro_use_or_failure... abstraction!
         let (method_, hi, new_attrs) = {
-            if !token::is_any_keyword(&self.token)
-                && self.look_ahead(1, |t| *t == token::NOT)
-                && (self.look_ahead(2, |t| *t == token::LPAREN)
-                    || self.look_ahead(2, |t| *t == token::LBRACE)) {
+            if !self.token.is_any_keyword()
+                && self.look_ahead(1, |t| *t == token::Not)
+                && (self.look_ahead(2, |t| *t == token::LParen)
+                    || self.look_ahead(2, |t| *t == token::LBrace)) {
                 // method macro.
                 let pth = self.parse_path(NoTypesAllowed).path;
-                self.expect(&token::NOT);
+                self.expect(&token::Not);
 
                 // eat a matched-delimiter token tree:
-                let tts = match token::close_delimiter_for(&self.token) {
+                let tts = match self.token.get_close_delimiter() {
                     Some(ket) => {
                         self.bump();
                         self.parse_seq_to_end(&ket,
@@ -4512,10 +4484,10 @@ impl<'a> Parser<'a> {
 
     fn parse_impl_items(&mut self) -> (Vec<ImplItem>, Vec<Attribute>) {
         let mut impl_items = Vec::new();
-        self.expect(&token::LBRACE);
+        self.expect(&token::LBrace);
         let (inner_attrs, mut method_attrs) =
             self.parse_inner_attrs_and_next();
-        while !self.eat(&token::RBRACE) {
+        while !self.eat(&token::RBrace) {
             method_attrs.extend(self.parse_outer_attributes().into_iter());
             let vis = self.parse_visibility();
             if self.eat_keyword(keywords::Type) {
@@ -4541,7 +4513,7 @@ impl<'a> Parser<'a> {
 
         // Special case: if the next identifier that follows is '(', don't
         // allow this to be parsed as a trait.
-        let could_be_trait = self.token != token::LPAREN;
+        let could_be_trait = self.token != token::LParen;
 
         // Parse the trait.
         let mut ty = self.parse_ty(true);
@@ -4589,7 +4561,7 @@ impl<'a> Parser<'a> {
         let class_name = self.parse_ident();
         let mut generics = self.parse_generics();
 
-        if self.eat(&token::COLON) {
+        if self.eat(&token::Colon) {
             let ty = self.parse_ty(true);
             self.span_err(ty.span, "`virtual` structs have been removed from the language");
         }
@@ -4599,11 +4571,11 @@ impl<'a> Parser<'a> {
         let mut fields: Vec<StructField>;
         let is_tuple_like;
 
-        if self.eat(&token::LBRACE) {
+        if self.eat(&token::LBrace) {
             // It's a record-like struct.
             is_tuple_like = false;
             fields = Vec::new();
-            while self.token != token::RBRACE {
+            while self.token != token::RBrace {
                 fields.push(self.parse_struct_decl_field());
             }
             if fields.len() == 0 {
@@ -4612,13 +4584,13 @@ impl<'a> Parser<'a> {
                                    token::get_ident(class_name)).as_slice());
             }
             self.bump();
-        } else if self.token == token::LPAREN {
+        } else if self.token == token::LParen {
             // It's a tuple-like struct.
             is_tuple_like = true;
             fields = self.parse_unspanned_seq(
-                &token::LPAREN,
-                &token::RPAREN,
-                seq_sep_trailing_allowed(token::COMMA),
+                &token::LParen,
+                &token::RParen,
+                seq_sep_trailing_allowed(token::Comma),
                 |p| {
                 let attrs = p.parse_outer_attributes();
                 let lo = p.span.lo;
@@ -4635,8 +4607,8 @@ impl<'a> Parser<'a> {
                                     written as `struct {};`",
                                    token::get_ident(class_name)).as_slice());
             }
-            self.expect(&token::SEMI);
-        } else if self.eat(&token::SEMI) {
+            self.expect(&token::Semi);
+        } else if self.eat(&token::Semi) {
             // It's a unit-like struct.
             is_tuple_like = true;
             fields = Vec::new();
@@ -4664,10 +4636,10 @@ impl<'a> Parser<'a> {
                                      -> StructField {
         let a_var = self.parse_name_and_ty(vis, attrs);
         match self.token {
-            token::COMMA => {
+            token::Comma => {
                 self.bump();
             }
-            token::RBRACE => {}
+            token::RBrace => {}
             _ => {
                 let span = self.span;
                 let token_str = self.this_token_to_string();
@@ -4701,7 +4673,7 @@ impl<'a> Parser<'a> {
         if self.eat_keyword(keywords::For) {
             let span = self.span;
             let ident = self.parse_ident();
-            if !self.eat(&token::QUESTION) {
+            if !self.eat(&token::Question) {
                 self.span_err(span,
                     "expected 'Sized?' after `for` in trait item");
                 return None;
@@ -4776,11 +4748,11 @@ impl<'a> Parser<'a> {
 
     fn parse_item_const(&mut self, m: Option<Mutability>) -> ItemInfo {
         let id = self.parse_ident();
-        self.expect(&token::COLON);
+        self.expect(&token::Colon);
         let ty = self.parse_ty(true);
-        self.expect(&token::EQ);
+        self.expect(&token::Eq);
         let e = self.parse_expr();
-        self.commit_expr_expecting(&*e, token::SEMI);
+        self.commit_expr_expecting(&*e, token::Semi);
         let item = match m {
             Some(m) => ItemStatic(ty, m, e),
             None => ItemConst(ty, e),
@@ -4792,20 +4764,20 @@ impl<'a> Parser<'a> {
     fn parse_item_mod(&mut self, outer_attrs: &[Attribute]) -> ItemInfo {
         let id_span = self.span;
         let id = self.parse_ident();
-        if self.token == token::SEMI {
+        if self.token == token::Semi {
             self.bump();
             // This mod is in an external file. Let's go get it!
             let (m, attrs) = self.eval_src_mod(id, outer_attrs, id_span);
             (id, m, Some(attrs))
         } else {
             self.push_mod_path(id, outer_attrs);
-            self.expect(&token::LBRACE);
+            self.expect(&token::LBrace);
             let mod_inner_lo = self.span.lo;
             let old_owns_directory = self.owns_directory;
             self.owns_directory = true;
             let (inner, next) = self.parse_inner_attrs_and_next();
-            let m = self.parse_mod_items(token::RBRACE, next, mod_inner_lo);
-            self.expect(&token::RBRACE);
+            let m = self.parse_mod_items(token::RBrace, next, mod_inner_lo);
+            self.expect(&token::RBrace);
             self.owns_directory = old_owns_directory;
             self.pop_mod_path();
             (id, ItemMod(m), Some(inner))
@@ -4929,7 +4901,7 @@ impl<'a> Parser<'a> {
         let mod_inner_lo = p0.span.lo;
         let (mod_attrs, next) = p0.parse_inner_attrs_and_next();
         let first_item_outer_attrs = next;
-        let m0 = p0.parse_mod_items(token::EOF, first_item_outer_attrs, mod_inner_lo);
+        let m0 = p0.parse_mod_items(token::Eof, first_item_outer_attrs, mod_inner_lo);
         self.sess.included_mod_stack.borrow_mut().pop();
         return (ast::ItemMod(m0), mod_attrs);
     }
@@ -4944,7 +4916,7 @@ impl<'a> Parser<'a> {
         let decl = self.parse_fn_decl(true);
         self.parse_where_clause(&mut generics);
         let hi = self.span.hi;
-        self.expect(&token::SEMI);
+        self.expect(&token::Semi);
         P(ast::ForeignItem {
             ident: ident,
             attrs: attrs,
@@ -4964,10 +4936,10 @@ impl<'a> Parser<'a> {
         let mutbl = self.eat_keyword(keywords::Mut);
 
         let ident = self.parse_ident();
-        self.expect(&token::COLON);
+        self.expect(&token::Colon);
         let ty = self.parse_ty(true);
         let hi = self.span.hi;
-        self.expect(&token::SEMI);
+        self.expect(&token::Semi);
         P(ForeignItem {
             ident: ident,
             attrs: attrs,
@@ -5006,7 +4978,7 @@ impl<'a> Parser<'a> {
             self.span_err(last_span,
                           Parser::expected_item_err(attrs_remaining.as_slice()));
         }
-        assert!(self.token == token::RBRACE);
+        assert!(self.token == token::RBrace);
         ast::ForeignMod {
             abi: abi,
             view_items: view_items,
@@ -5029,16 +5001,16 @@ impl<'a> Parser<'a> {
 
         let span = self.span;
         let (maybe_path, ident) = match self.token {
-            token::IDENT(..) => {
+            token::Ident(..) => {
                 let the_ident = self.parse_ident();
-                let path = if self.eat(&token::EQ) {
+                let path = if self.eat(&token::Eq) {
                     let path = self.parse_str();
                     let span = self.span;
                     self.obsolete(span, ObsoleteExternCrateRenaming);
                     Some(path)
                 } else if self.eat_keyword(keywords::As) {
                     // skip the ident if there is one
-                    if is_ident(&self.token) { self.bump(); }
+                    if self.token.is_ident() { self.bump(); }
 
                     self.span_err(span,
                                   format!("expected `;`, found `as`; perhaps you meant \
@@ -5048,14 +5020,14 @@ impl<'a> Parser<'a> {
                 } else {
                     None
                 };
-                self.expect(&token::SEMI);
+                self.expect(&token::Semi);
                 (path, the_ident)
             },
-            token::LIT_STR(..) | token::LIT_STR_RAW(..) => {
+            token::LitStr(..) | token::LitStrRaw(..) => {
                 let path = self.parse_str();
                 self.expect_keyword(keywords::As);
                 let the_ident = self.parse_ident();
-                self.expect(&token::SEMI);
+                self.expect(&token::Semi);
                 (Some(path), the_ident)
             },
             _ => {
@@ -5093,13 +5065,13 @@ impl<'a> Parser<'a> {
                               attrs: Vec<Attribute> )
                               -> ItemOrViewItem {
 
-        self.expect(&token::LBRACE);
+        self.expect(&token::LBrace);
 
         let abi = opt_abi.unwrap_or(abi::C);
 
         let (inner, next) = self.parse_inner_attrs_and_next();
         let m = self.parse_foreign_mod_items(abi, next);
-        self.expect(&token::RBRACE);
+        self.expect(&token::RBrace);
 
         let last_span = self.last_span;
         let item = self.mk_item(lo,
@@ -5116,9 +5088,9 @@ impl<'a> Parser<'a> {
         let ident = self.parse_ident();
         let mut tps = self.parse_generics();
         self.parse_where_clause(&mut tps);
-        self.expect(&token::EQ);
+        self.expect(&token::Eq);
         let ty = self.parse_ty(true);
-        self.expect(&token::SEMI);
+        self.expect(&token::Semi);
         (ident, ItemTy(ty, tps), None)
     }
 
@@ -5126,7 +5098,7 @@ impl<'a> Parser<'a> {
     /// this should probably be renamed or refactored...
     fn parse_struct_def(&mut self) -> P<StructDef> {
         let mut fields: Vec<StructField> = Vec::new();
-        while self.token != token::RBRACE {
+        while self.token != token::RBrace {
             fields.push(self.parse_struct_decl_field());
         }
         self.bump();
@@ -5142,7 +5114,7 @@ impl<'a> Parser<'a> {
         let mut variants = Vec::new();
         let mut all_nullary = true;
         let mut any_disr = None;
-        while self.token != token::RBRACE {
+        while self.token != token::RBrace {
             let variant_attrs = self.parse_outer_attributes();
             let vlo = self.span.lo;
 
@@ -5153,16 +5125,16 @@ impl<'a> Parser<'a> {
             let mut args = Vec::new();
             let mut disr_expr = None;
             ident = self.parse_ident();
-            if self.eat(&token::LBRACE) {
+            if self.eat(&token::LBrace) {
                 // Parse a struct variant.
                 all_nullary = false;
                 kind = StructVariantKind(self.parse_struct_def());
-            } else if self.token == token::LPAREN {
+            } else if self.token == token::LParen {
                 all_nullary = false;
                 let arg_tys = self.parse_enum_variant_seq(
-                    &token::LPAREN,
-                    &token::RPAREN,
-                    seq_sep_trailing_allowed(token::COMMA),
+                    &token::LParen,
+                    &token::RParen,
+                    seq_sep_trailing_allowed(token::Comma),
                     |p| p.parse_ty(true)
                 );
                 for ty in arg_tys.into_iter() {
@@ -5172,7 +5144,7 @@ impl<'a> Parser<'a> {
                     });
                 }
                 kind = TupleVariantKind(args);
-            } else if self.eat(&token::EQ) {
+            } else if self.eat(&token::Eq) {
                 disr_expr = Some(self.parse_expr());
                 any_disr = disr_expr.as_ref().map(|expr| expr.span);
                 kind = TupleVariantKind(args);
@@ -5190,9 +5162,9 @@ impl<'a> Parser<'a> {
             };
             variants.push(P(spanned(vlo, self.last_span.hi, vr)));
 
-            if !self.eat(&token::COMMA) { break; }
+            if !self.eat(&token::Comma) { break; }
         }
-        self.expect(&token::RBRACE);
+        self.expect(&token::RBrace);
         match any_disr {
             Some(disr_span) if !all_nullary =>
                 self.span_err(disr_span,
@@ -5208,7 +5180,7 @@ impl<'a> Parser<'a> {
         let id = self.parse_ident();
         let mut generics = self.parse_generics();
         self.parse_where_clause(&mut generics);
-        self.expect(&token::LBRACE);
+        self.expect(&token::LBrace);
 
         let enum_definition = self.parse_enum_def(&generics);
         (id, ItemEnum(enum_definition, generics), None)
@@ -5216,7 +5188,7 @@ impl<'a> Parser<'a> {
 
     fn fn_expr_lookahead(tok: &token::Token) -> bool {
         match *tok {
-          token::LPAREN | token::AT | token::TILDE | token::BINOP(_) => true,
+          token::LParen | token::At | token::Tilde | token::BinOp(_) => true,
           _ => false
         }
     }
@@ -5225,7 +5197,7 @@ impl<'a> Parser<'a> {
     /// the `extern` keyword, if one is found.
     fn parse_opt_abi(&mut self) -> Option<abi::Abi> {
         match self.token {
-            token::LIT_STR(s) | token::LIT_STR_RAW(s, _) => {
+            token::LitStr(s) | token::LitStrRaw(s, _) => {
                 self.bump();
                 let the_string = s.as_str();
                 match abi::lookup(the_string) {
@@ -5256,7 +5228,7 @@ impl<'a> Parser<'a> {
                                macros_allowed: bool)
                                -> ItemOrViewItem {
         let nt_item = match self.token {
-            INTERPOLATED(token::NtItem(ref item)) => {
+            token::Interpolated(token::NtItem(ref item)) => {
                 Some((**item).clone())
             }
             _ => None
@@ -5280,7 +5252,7 @@ impl<'a> Parser<'a> {
         if self.eat_keyword(keywords::Use) {
             // USE ITEM (IoviViewItem)
             let view_item = self.parse_use();
-            self.expect(&token::SEMI);
+            self.expect(&token::Semi);
             return IoviViewItem(ast::ViewItem {
                 node: view_item,
                 attrs: attrs,
@@ -5319,7 +5291,7 @@ impl<'a> Parser<'a> {
                                         visibility,
                                         maybe_append(attrs, extra_attrs));
                 return IoviItem(item);
-            } else if self.token == token::LBRACE {
+            } else if self.token == token::LBrace {
                 return self.parse_item_foreign_mod(lo, opt_abi, visibility, attrs);
             }
 
@@ -5336,7 +5308,7 @@ impl<'a> Parser<'a> {
         }
 
         // the rest are all guaranteed to be items:
-        if self.is_keyword(keywords::Static) {
+        if self.token.is_keyword(keywords::Static) {
             // STATIC ITEM
             self.bump();
             let m = if self.eat_keyword(keywords::Mut) {MutMutable} else {MutImmutable};
@@ -5350,7 +5322,7 @@ impl<'a> Parser<'a> {
                                     maybe_append(attrs, extra_attrs));
             return IoviItem(item);
         }
-        if self.is_keyword(keywords::Const) {
+        if self.token.is_keyword(keywords::Const) {
             // CONST ITEM
             self.bump();
             if self.eat_keyword(keywords::Mut) {
@@ -5368,7 +5340,7 @@ impl<'a> Parser<'a> {
                                     maybe_append(attrs, extra_attrs));
             return IoviItem(item);
         }
-        if self.is_keyword(keywords::Fn) &&
+        if self.token.is_keyword(keywords::Fn) &&
                 self.look_ahead(1, |f| !Parser::fn_expr_lookahead(f)) {
             // FUNCTION ITEM
             self.bump();
@@ -5383,8 +5355,8 @@ impl<'a> Parser<'a> {
                                     maybe_append(attrs, extra_attrs));
             return IoviItem(item);
         }
-        if self.is_keyword(keywords::Unsafe)
-            && self.look_ahead(1u, |t| *t != token::LBRACE) {
+        if self.token.is_keyword(keywords::Unsafe)
+            && self.look_ahead(1u, |t| *t != token::LBrace) {
             // UNSAFE FUNCTION ITEM
             self.bump();
             let abi = if self.eat_keyword(keywords::Extern) {
@@ -5490,12 +5462,12 @@ impl<'a> Parser<'a> {
 
         let visibility = self.parse_visibility();
 
-        if self.is_keyword(keywords::Static) {
+        if self.token.is_keyword(keywords::Static) {
             // FOREIGN STATIC ITEM
             let item = self.parse_item_foreign_static(visibility, attrs);
             return IoviForeignItem(item);
         }
-        if self.is_keyword(keywords::Fn) || self.is_keyword(keywords::Unsafe) {
+        if self.token.is_keyword(keywords::Fn) || self.token.is_keyword(keywords::Unsafe) {
             // FOREIGN FUNCTION ITEM
             let item = self.parse_item_foreign_fn(visibility, attrs);
             return IoviForeignItem(item);
@@ -5511,27 +5483,27 @@ impl<'a> Parser<'a> {
         lo: BytePos,
         visibility: Visibility
     ) -> ItemOrViewItem {
-        if macros_allowed && !token::is_any_keyword(&self.token)
-                && self.look_ahead(1, |t| *t == token::NOT)
-                && (self.look_ahead(2, |t| is_plain_ident(t))
-                    || self.look_ahead(2, |t| *t == token::LPAREN)
-                    || self.look_ahead(2, |t| *t == token::LBRACE)) {
+        if macros_allowed && !self.token.is_any_keyword()
+                && self.look_ahead(1, |t| *t == token::Not)
+                && (self.look_ahead(2, |t| t.is_plain_ident())
+                    || self.look_ahead(2, |t| *t == token::LParen)
+                    || self.look_ahead(2, |t| *t == token::LBrace)) {
             // MACRO INVOCATION ITEM
 
             // item macro.
             let pth = self.parse_path(NoTypesAllowed).path;
-            self.expect(&token::NOT);
+            self.expect(&token::Not);
 
             // a 'special' identifier (like what `macro_rules!` uses)
             // is optional. We should eventually unify invoc syntax
             // and remove this.
-            let id = if is_plain_ident(&self.token) {
+            let id = if self.token.is_plain_ident() {
                 self.parse_ident()
             } else {
                 token::special_idents::invalid // no special identifier
             };
             // eat a matched-delimiter token tree:
-            let tts = match token::close_delimiter_for(&self.token) {
+            let tts = match self.token.get_close_delimiter() {
                 Some(ket) => {
                     self.bump();
                     self.parse_seq_to_end(&ket,
@@ -5601,11 +5573,11 @@ impl<'a> Parser<'a> {
     fn parse_view_path(&mut self) -> P<ViewPath> {
         let lo = self.span.lo;
 
-        if self.token == token::LBRACE {
+        if self.token == token::LBrace {
             // use {foo,bar}
             let idents = self.parse_unspanned_seq(
-                &token::LBRACE, &token::RBRACE,
-                seq_sep_trailing_allowed(token::COMMA),
+                &token::LBrace, &token::RBrace,
+                seq_sep_trailing_allowed(token::Comma),
                 |p| p.parse_path_list_item());
             let path = ast::Path {
                 span: mk_sp(lo, self.span.hi),
@@ -5619,12 +5591,12 @@ impl<'a> Parser<'a> {
         let first_ident = self.parse_ident();
         let mut path = vec!(first_ident);
         match self.token {
-          token::EQ => {
+          token::Eq => {
             // x = foo::bar
             self.bump();
             let path_lo = self.span.lo;
             path = vec!(self.parse_ident());
-            while self.token == token::MOD_SEP {
+            while self.token == token::ModSep {
                 self.bump();
                 let id = self.parse_ident();
                 path.push(id);
@@ -5647,23 +5619,23 @@ impl<'a> Parser<'a> {
                                            ast::DUMMY_NODE_ID)));
           }
 
-          token::MOD_SEP => {
+          token::ModSep => {
             // foo::bar or foo::{a,b,c} or foo::*
-            while self.token == token::MOD_SEP {
+            while self.token == token::ModSep {
                 self.bump();
 
                 match self.token {
-                  token::IDENT(i, _) => {
+                  token::Ident(i, _) => {
                     self.bump();
                     path.push(i);
                   }
 
                   // foo::bar::{a,b,c}
-                  token::LBRACE => {
+                  token::LBrace => {
                     let idents = self.parse_unspanned_seq(
-                        &token::LBRACE,
-                        &token::RBRACE,
-                        seq_sep_trailing_allowed(token::COMMA),
+                        &token::LBrace,
+                        &token::RBrace,
+                        seq_sep_trailing_allowed(token::Comma),
                         |p| p.parse_path_list_item()
                     );
                     let path = ast::Path {
@@ -5682,7 +5654,7 @@ impl<'a> Parser<'a> {
                   }
 
                   // foo::bar::*
-                  token::BINOP(token::STAR) => {
+                  token::BinOp(token::Star) => {
                     self.bump();
                     let path = ast::Path {
                         span: mk_sp(lo, self.span.hi),
@@ -5821,7 +5793,7 @@ impl<'a> Parser<'a> {
         loop {
             match self.parse_foreign_item(attrs, macros_allowed) {
                 IoviNone(returned_attrs) => {
-                    if self.token == token::RBRACE {
+                    if self.token == token::RBrace {
                         attrs = returned_attrs;
                         break
                     }
@@ -5860,7 +5832,7 @@ impl<'a> Parser<'a> {
         let (inner, next) = self.parse_inner_attrs_and_next();
         let first_item_outer_attrs = next;
         // parse the items inside the crate:
-        let m = self.parse_mod_items(token::EOF, first_item_outer_attrs, lo);
+        let m = self.parse_mod_items(token::Eof, first_item_outer_attrs, lo);
 
         ast::Crate {
             module: m,
@@ -5874,8 +5846,8 @@ impl<'a> Parser<'a> {
     pub fn parse_optional_str(&mut self)
                               -> Option<(InternedString, ast::StrStyle)> {
         let (s, style) = match self.token {
-            token::LIT_STR(s) => (self.id_to_interned_str(s.ident()), ast::CookedStr),
-            token::LIT_STR_RAW(s, n) => {
+            token::LitStr(s) => (self.id_to_interned_str(s.ident()), ast::CookedStr),
+            token::LitStrRaw(s, n) => {
                 (self.id_to_interned_str(s.ident()), ast::RawStr(n))
             }
             _ => return None