Begin expression parsing
diff --git a/src/expr.rs b/src/expr.rs
index a66792d..df35554 100644
--- a/src/expr.rs
+++ b/src/expr.rs
@@ -334,6 +334,23 @@
     ByValue(Mutability),
 }
 
+#[cfg(feature = "parsing")]
+pub mod parsing {
+    use super::*;
+    use nom::multispace;
+
+    named!(pub expr -> Expr, alt!(
+        box_expr
+    ));
+
+    named!(box_expr -> Expr, do_parse!(
+        punct!("box") >>
+        multispace >>
+        inner: expr >>
+        (Expr::Box(Box::new(inner)))
+    ));
+}
+
 #[cfg(feature = "printing")]
 mod printing {
     use super::*;
diff --git a/src/lib.rs b/src/lib.rs
index a9c8e4b..d7b7b10 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -149,7 +149,7 @@
     use nom;
 
     #[cfg(feature = "full")]
-    use item;
+    use {expr, item};
 
     pub fn parse_macro_input(input: &str) -> Result<MacroInput, String> {
         unwrap("macro input", macro_input::parsing::macro_input, input)
@@ -160,6 +160,11 @@
         unwrap("item", item::parsing::item, input)
     }
 
+    #[cfg(feature = "full")]
+    pub fn parse_expr(input: &str) -> Result<Expr, String> {
+        unwrap("expression", expr::parsing::expr, input)
+    }
+
     pub fn parse_type(input: &str) -> Result<Ty, String> {
         unwrap("type", ty::parsing::ty, input)
     }