Allow peeking delimiters
diff --git a/src/lookahead.rs b/src/lookahead.rs
index 433cbaf..d1162c0 100644
--- a/src/lookahead.rs
+++ b/src/lookahead.rs
@@ -1,6 +1,6 @@
 use std::cell::RefCell;
 
-use proc_macro2::Span;
+use proc_macro2::{Delimiter, Span};
 
 use buffer::Cursor;
 use error::{self, Error};
@@ -90,6 +90,12 @@
     }
 }
 
+// Not public API.
+#[doc(hidden)]
+pub fn is_delimiter(lookahead: &Lookahead1, delimiter: Delimiter) -> bool {
+    lookahead.cursor.group(delimiter).is_some()
+}
+
 mod private {
     use super::{Token, TokenMarker};
     pub trait Sealed {}
diff --git a/src/token.rs b/src/token.rs
index 1d355a3..27a49d9 100644
--- a/src/token.rs
+++ b/src/token.rs
@@ -105,6 +105,8 @@
 #[cfg(feature = "extra-traits")]
 use std::hash::{Hash, Hasher};
 
+#[cfg(feature = "parsing")]
+use proc_macro2::Delimiter;
 #[cfg(any(feature = "printing", feature = "parsing"))]
 use proc_macro2::Spacing;
 use proc_macro2::{Ident, Span};
@@ -371,6 +373,9 @@
                     parsing::delim($token, tokens, $name, f)
                 }
             }
+
+            #[cfg(feature = "parsing")]
+            impl private::Sealed for $name {}
         )*
     };
 }
@@ -437,6 +442,39 @@
     }
 }
 
+#[cfg(feature = "parsing")]
+impl Token for Paren {
+    fn peek(lookahead: &Lookahead1) -> bool {
+        lookahead::is_delimiter(lookahead, Delimiter::Parenthesis)
+    }
+
+    fn display() -> String {
+        "parentheses".to_owned()
+    }
+}
+
+#[cfg(feature = "parsing")]
+impl Token for Brace {
+    fn peek(lookahead: &Lookahead1) -> bool {
+        lookahead::is_delimiter(lookahead, Delimiter::Brace)
+    }
+
+    fn display() -> String {
+        "curly braces".to_owned()
+    }
+}
+
+#[cfg(feature = "parsing")]
+impl Token for Bracket {
+    fn peek(lookahead: &Lookahead1) -> bool {
+        lookahead::is_delimiter(lookahead, Delimiter::Bracket)
+    }
+
+    fn display() -> String {
+        "square brackets".to_owned()
+    }
+}
+
 define_keywords! {
     "as"          pub struct As           /// `as`
     "async"       pub struct Async        /// `async`