diff --git a/synom/src/lib.rs b/synom/src/lib.rs
index 7ad3b30..29f6e3d 100644
--- a/synom/src/lib.rs
+++ b/synom/src/lib.rs
@@ -66,24 +66,23 @@
 
     fn parse_all(input: TokenStream) -> Result<Self, ParseError> {
         let buf = SynomBuffer::new(input);
-        let result = Self::parse(buf.begin());
-        let err = match result {
+        let descr = Self::description().unwrap_or("unnamed parser");
+        let err = match Self::parse(buf.begin()) {
             Ok((rest, t)) => {
                 if rest.eof() {
                     return Ok(t)
                 } else if rest == buf.begin() {
                     // parsed nothing
-                    "failed to parse"
+                    format!("parsed no input while parsing {}", descr)
                 } else {
-                    "unparsed tokens after"
+                    // Partially parsed the output. Print the input which remained.
+                    format!("unparsed tokens after parsing {}:\n{}",
+                            descr, rest.token_stream())
                 }
             }
-            Err(ref err) => err.description(),
+            Err(ref err) => format!("{} while parsing {}", err.description(), descr),
         };
-        match Self::description() {
-            Some(s) => Err(ParseError(Some(format!("{} {}", err, s)))),
-            None => Err(ParseError(Some(err.to_string()))),
-        }
+        Err(ParseError(Some(err)))
     }
 
     fn parse_str_all(input: &str) -> Result<Self, ParseError> {
