Sort macro parsing by length
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!(