Separate parser to parse boolean literals
diff --git a/src/lit.rs b/src/lit.rs
index cbe51b9..7c851ec 100644
--- a/src/lit.rs
+++ b/src/lit.rs
@@ -145,9 +145,7 @@
         int => { |(value, ty)| Lit::Int(value, ty) }
     // TODO: Float
         |
-        keyword!("true") => { |_| Lit::Bool(true) }
-        |
-        keyword!("false") => { |_| Lit::Bool(false) }
+        boolean
     ));
 
     named!(string -> Lit, alt!(
@@ -223,6 +221,12 @@
         )
     ));
 
+    named!(boolean -> Lit, alt!(
+        keyword!("true") => { |_| Lit::Bool(true) }
+        |
+        keyword!("false") => { |_| Lit::Bool(false) }
+    ));
+
     pub fn digits(input: &str) -> IResult<&str, u64> {
         let mut value = 0u64;
         let mut len = 0;