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
+ ;;
+ ;;
+}
+