diff --git a/libwccl/parser/grammar.g b/libwccl/parser/grammar.g
index ed4ad958ed7ed08944498b5199c15515b6d8c77a..857d40533f5c1b78dd5ca95083eb2f41c2a472ad 100644
--- a/libwccl/parser/grammar.g
+++ b/libwccl/parser/grammar.g
@@ -1950,16 +1950,21 @@ match_mark_action
 }
 	: "mark" LPAREN 
 			match_from = match_fit[tagset, vars] COMMA
-			match_to   = match_fit[tagset, vars] COMMA
+			(match_to  = match_fit[tagset, vars] COMMA) ?
 			annotation_name : STRING
 		RPAREN {
-			m_act.reset(
-				new MarkMatch(
-					match_from, 
-					match_to, 
-					((antlr::Token*)annotation_name)->getText()
-				)
-			);
+			if (!match_to) {
+				m_act.reset(
+					new MarkMatch(
+						match_from,
+						((antlr::Token*)annotation_name)->getText()));
+			} else {
+				m_act.reset(
+					new MarkMatch(
+						match_from,
+						match_to,
+						((antlr::Token*)annotation_name)->getText()));
+			}
 		}
 ;