Expose Synom impls for each kind of Item
diff --git a/src/macros.rs b/src/macros.rs
index 69a405e..ae424f9 100644
--- a/src/macros.rs
+++ b/src/macros.rs
@@ -129,3 +129,16 @@
 
     ($($rest:tt)*) => (ast_struct! { $($rest)* });
 }
+
+#[cfg(all(feature = "full", feature = "parsing"))]
+macro_rules! impl_synom {
+    ($t:ident $description:tt $($parser:tt)+) => {
+        impl Synom for $t {
+            named!(parse -> Self, $($parser)+);
+
+            fn description() -> Option<&'static str> {
+                Some($description)
+            }
+        }
+    }
+}