diff --git a/src/mac.rs b/src/mac.rs
index 946a747..7b80303 100644
--- a/src/mac.rs
+++ b/src/mac.rs
@@ -155,13 +155,19 @@
     ));
 
     named!(token -> Token, alt!(
+        punct!("_") => { |_| Token::Underscore }
+        |
         map!(bin_op_eq, Token::BinOpEq)
         |
         map!(bin_op, Token::BinOp)
         |
-        punct!("=") => { |_| Token::Eq }
+        map!(lit, Token::Literal)
         |
-        punct!("<") => { |_| Token::Lt }
+        map!(ident, Token::Ident)
+        |
+        map!(lifetime, |lt: Lifetime| Token::Lifetime(lt.ident))
+        |
+        map!(doc_comment, Token::DocComment)
         |
         punct!("<=") => { |_| Token::Le }
         |
@@ -171,30 +177,10 @@
         |
         punct!(">=") => { |_| Token::Ge }
         |
-        punct!(">") => { |_| Token::Gt }
-        |
         punct!("&&") => { |_| Token::AndAnd }
         |
         punct!("||") => { |_| Token::OrOr }
         |
-        punct!("!") => { |_| Token::Not }
-        |
-        punct!("~") => { |_| Token::Tilde }
-        |
-        punct!("@") => { |_| Token::At }
-        |
-        punct!(".") => { |_| Token::Dot }
-        |
-        punct!("..") => { |_| Token::DotDot }
-        |
-        punct!("...") => { |_| Token::DotDotDot }
-        |
-        punct!(",") => { |_| Token::Comma }
-        |
-        punct!(";") => { |_| Token::Semi }
-        |
-        punct!(":") => { |_| Token::Colon }
-        |
         punct!("::") => { |_| Token::ModSep }
         |
         punct!("->") => { |_| Token::RArrow }
@@ -203,21 +189,35 @@
         |
         punct!("=>") => { |_| Token::FatArrow }
         |
+        punct!("...") => { |_| Token::DotDotDot }
+        |
+        punct!("..") => { |_| Token::DotDot }
+        |
+        punct!(".") => { |_| Token::Dot }
+        |
+        punct!("=") => { |_| Token::Eq }
+        |
+        punct!("<") => { |_| Token::Lt }
+        |
+        punct!(">") => { |_| Token::Gt }
+        |
+        punct!("!") => { |_| Token::Not }
+        |
+        punct!("~") => { |_| Token::Tilde }
+        |
+        punct!("@") => { |_| Token::At }
+        |
+        punct!(",") => { |_| Token::Comma }
+        |
+        punct!(";") => { |_| Token::Semi }
+        |
+        punct!(":") => { |_| Token::Colon }
+        |
         punct!("#") => { |_| Token::Pound }
         |
         punct!("$") => { |_| Token::Dollar }
         |
         punct!("?") => { |_| Token::Question }
-        |
-        punct!("_") => { |_| Token::Underscore }
-        |
-        map!(lit, Token::Literal)
-        |
-        map!(ident, Token::Ident)
-        |
-        map!(lifetime, |lt: Lifetime| Token::Lifetime(lt.ident))
-        |
-        map!(doc_comment, Token::DocComment)
     ));
 
     named!(bin_op -> BinOpToken, alt!(
