diff --git a/maud_macros/src/parse.rs b/maud_macros/src/parse.rs
index 9e5c878..3e9e975 100644
--- a/maud_macros/src/parse.rs
+++ b/maud_macros/src/parse.rs
@@ -45,6 +45,9 @@ pub enum Escape {
 }
 
 pub fn parse(cx: &mut ExtCtxt, mut args: &[TokenTree]) -> Option<Vec<Markup>> {
+    macro_rules! semi {
+        () => (TtToken(_, token::Semi))
+    }
     macro_rules! minus {
         () => (TtToken(_, token::BinOp(token::Minus)))
     }
@@ -55,6 +58,10 @@ pub fn parse(cx: &mut ExtCtxt, mut args: &[TokenTree]) -> Option<Vec<Markup>> {
     let mut result = vec![];
     loop {
         match match args {
+            [semi!(), ..] => {
+                args.shift(1);
+                continue
+            },
             [minus!(), ref tt @ literal!(), ..] => {
                 args.shift(2);
                 parse_literal(cx, tt, true)