diff --git a/src/expr.rs b/src/expr.rs
index fa7cdf7..4f4dea8 100644
--- a/src/expr.rs
+++ b/src/expr.rs
@@ -295,10 +295,10 @@
     use generics::parsing::lifetime;
     use ident::parsing::ident;
     use item::parsing::item;
-    use lit::parsing::lit;
+    use lit::parsing::{digits, lit};
     use mac::parsing::mac;
     use nom::IResult::Error;
-    use op::parsing::{binop, unop};
+    use op::parsing::{assign_op, binop, unop};
     use ty::parsing::{mutability, path, qpath, ty};
 
     named!(pub expr -> Expr, do_parse!(
@@ -339,6 +339,8 @@
             |
             expr_block
             |
+            expr_range
+            |
             expr_path
             |
             expr_addr_of
@@ -368,12 +370,32 @@
             tap!(ty: and_ascription => {
                 e = Expr::Type(Box::new(e), Box::new(ty));
             })
-    // TODO: Assign
-    // TODO: AssignOp
-    // TODO: Field
-    // TODO: TupField
-    // TODO: Index
-    // TODO: Range
+            |
+            tap!(v: and_assign => {
+                e = Expr::Assign(Box::new(e), Box::new(v));
+            })
+            |
+            tap!(more: and_assign_op => {
+                let (op, v) = more;
+                e = Expr::AssignOp(op, Box::new(e), Box::new(v));
+            })
+            |
+            tap!(field: and_field => {
+                e = Expr::Field(Box::new(e), field);
+            })
+            |
+            tap!(field: and_tup_field => {
+                e = Expr::TupField(Box::new(e), field as usize);
+            })
+            |
+            tap!(i: and_index => {
+                e = Expr::Index(Box::new(e), Box::new(i));
+            })
+            |
+            tap!(more: and_range => {
+                let (limits, hi) = more;
+                e = Expr::Range(Some(Box::new(e)), hi.map(Box::new), limits);
+            })
             |
             tap!(_try: punct!("?") => {
                 e = Expr::Try(Box::new(e));
@@ -665,6 +687,18 @@
         }))
     ));
 
+    named!(expr_range -> Expr, do_parse!(
+        limits: range_limits >>
+        hi: option!(expr) >>
+        (Expr::Range(None, hi.map(Box::new), limits))
+    ));
+
+    named!(range_limits -> RangeLimits, alt!(
+        punct!("...") => { |_| RangeLimits::Closed }
+        |
+        punct!("..") => { |_| RangeLimits::HalfOpen }
+    ));
+
     named!(expr_path -> Expr, map!(qpath, |(qself, path)| Expr::Path(qself, path)));
 
     named!(expr_addr_of -> Expr, do_parse!(
@@ -674,6 +708,18 @@
         (Expr::AddrOf(mutability, Box::new(expr)))
     ));
 
+    named!(and_assign -> Expr, preceded!(punct!("="), expr));
+
+    named!(and_assign_op -> (BinOp, Expr), tuple!(assign_op, expr));
+
+    named!(and_field -> Ident, preceded!(punct!("."), ident));
+
+    named!(and_tup_field -> u64, preceded!(punct!("."), digits));
+
+    named!(and_index -> Expr, delimited!(punct!("["), expr, punct!("]")));
+
+    named!(and_range -> (RangeLimits, Option<Expr>), tuple!(range_limits, option!(expr)));
+
     named!(pub block -> Block, do_parse!(
         punct!("{") >>
         stmts: within_block >>
diff --git a/src/op.rs b/src/op.rs
index a27f6a2..ffe181f 100644
--- a/src/op.rs
+++ b/src/op.rs
@@ -90,6 +90,29 @@
         punct!(">") => { |_| BinOp::Gt }
     ));
 
+    #[cfg(feature = "full")]
+    named!(pub assign_op -> BinOp, alt!(
+        punct!("+=") => { |_| BinOp::Add }
+        |
+        punct!("-=") => { |_| BinOp::Sub }
+        |
+        punct!("*=") => { |_| BinOp::Mul }
+        |
+        punct!("/=") => { |_| BinOp::Div }
+        |
+        punct!("%=") => { |_| BinOp::Rem }
+        |
+        punct!("^=") => { |_| BinOp::BitXor }
+        |
+        punct!("&=") => { |_| BinOp::BitAnd }
+        |
+        punct!("|=") => { |_| BinOp::BitOr }
+        |
+        punct!("<<=") => { |_| BinOp::Shl }
+        |
+        punct!(">>=") => { |_| BinOp::Shr }
+    ));
+
     named!(pub unop -> UnOp, alt!(
         punct!("*") => { |_| UnOp::Deref }
         |
