shithub: mc

Download patch

ref: dfe3ca01782c70e9daf16165441af0eba8cfda8d
parent: 31d5350f573cf2b2c176082ae26de473ee1f885c
author: Ori Bernstein <[email protected]>
date: Sat Jun 30 14:46:38 EDT 2012

Add parenthesized submatches.

    This allows clear, unambiguous sub-patterns.

--- a/parse/gram.y
+++ b/parse/gram.y
@@ -583,6 +583,7 @@
 pat     : unionpat {$$ = $1;}
         | littok {$$ = mkexpr($1->line, Olit, $1, NULL);}
         | Tident {$$ = mkexpr($1->line, Ovar, mkname($1->line, $1->str), NULL);}
+        | Toparen pat Tcparen {$$ = $2;}
         ;
 
 unionpat: Ttick Tident pat
--- /dev/null
+++ b/test/matchbind.myr
@@ -1,0 +1,26 @@
+type u = union
+	`Int int
+	`Chr char
+	`Nil
+;;
+
+const main = {
+	var v
+
+	v = `Int 11
+	match v
+	`Int 127:
+		-> 42
+		;;
+	`Int (var x):
+		-> x
+		;;
+	`Chr 'a':
+		-> 4
+		;;
+	`Nil:
+		-> 6
+		;;
+	;;
+}
+