Fill in some missing cfgs
diff --git a/src/parsers.rs b/src/parsers.rs
index c3c638b..810e6b1 100644
--- a/src/parsers.rs
+++ b/src/parsers.rs
@@ -1427,6 +1427,7 @@
     };
 }
 
+#[cfg(any(feature = "full", feature = "derive"))]
 macro_rules! shim {
     ($i:expr, $parser:expr $(, $args:expr)*) => {{
         let unexpected = ::std::rc::Rc::new(::std::cell::Cell::new(None));
diff --git a/src/token.rs b/src/token.rs
index 9f9b904..29d777e 100644
--- a/src/token.rs
+++ b/src/token.rs
@@ -121,8 +121,10 @@
 
 #[cfg(feature = "parsing")]
 use error::Result;
+#[cfg(any(feature = "full", feature = "derive"))]
 #[cfg(feature = "parsing")]
 use lifetime::Lifetime;
+#[cfg(any(feature = "full", feature = "derive"))]
 #[cfg(feature = "parsing")]
 use lit::{Lit, LitBool, LitByte, LitByteStr, LitChar, LitFloat, LitInt, LitStr};
 #[cfg(feature = "parsing")]
@@ -175,14 +177,23 @@
 }
 
 impl_token!(Ident "identifier");
+#[cfg(any(feature = "full", feature = "derive"))]
 impl_token!(Lifetime "lifetime");
+#[cfg(any(feature = "full", feature = "derive"))]
 impl_token!(Lit "literal");
+#[cfg(any(feature = "full", feature = "derive"))]
 impl_token!(LitStr "string literal");
+#[cfg(any(feature = "full", feature = "derive"))]
 impl_token!(LitByteStr "byte string literal");
+#[cfg(any(feature = "full", feature = "derive"))]
 impl_token!(LitByte "byte literal");
+#[cfg(any(feature = "full", feature = "derive"))]
 impl_token!(LitChar "character literal");
+#[cfg(any(feature = "full", feature = "derive"))]
 impl_token!(LitInt "integer literal");
+#[cfg(any(feature = "full", feature = "derive"))]
 impl_token!(LitFloat "floating point literal");
+#[cfg(any(feature = "full", feature = "derive"))]
 impl_token!(LitBool "boolean literal");
 
 macro_rules! define_keywords {