added ~~ operator and tests for ~~ and ... operators
[sbp.git] / tests / regression.tc
index 58334a3..4b1b397 100644 (file)
@@ -107,9 +107,9 @@ testcase "unnamed" {
         | epsilon:: ()
 }
 
-testcase "unnamed" {
+testcase "qaq" {
     input  "qaq";
-    output "q:{a:{s1:{epsilon}}}";
+    output "q:{a:{s1}}";
 
     s   = ^"q" x "q"
     x   = ^"a" a
@@ -323,7 +323,7 @@ testcase "a+2" {
 
 testcase "unnamed" {
     input "aaaaa";
-    output "top:{a q:{a a a} a}";
+    output "top:{a q a}";
 
     s = top:: z (q::"a"*) z
     z = a:: "a"
@@ -385,3 +385,31 @@ testcase "unnamed" {
   As = () | As "a"
   AAs = () | AAs "aa"
 }
+
+testcase "question mark" {
+  input "aa aba abba";
+  output "s:{Y Y Z}";
+  s = s:: X " " X " " X
+  X = Y > Z
+  Y = Y:: "a" B? "a"
+  Z = Z:: "a" "b"* "a"
+  B = "b"
+}
+
+testcase "operator: ... " {
+  input "aaabbbaaa abababababa";
+  output "s:{C:{a a a b b b a a a} B:{a b a b a b a b a b a}}";
+  s:: = A " " A
+  A   = B > C
+  B:: = [ab]* &~ (... "bbb" ...)
+  C:: = [ab]*
+}
+
+testcase "operator: ~~" {
+  input "aaabbbaaa abababababa";
+  output "s:{C:{a a a b b b a a a} B:{a b a b a b a b a b a}}";
+  s:: = A " " A
+  A   = B > C
+  B:: = ~~(... "bbb" ...)
+  C:: = [ab]*
+}