tentative checkpoint
[sbp.git] / tests / regression.tc
index 77af771..025f56e 100644 (file)
 //}
 
 testcase {
+    input "aaaaa";
+    s = A
+    A = "a" s &~ "a" A
+      | "a" A &~ "a" s
+}
+
+//testcase {
+//    input  "a";
+//    output "yes:{}";
+//    s = A
+//    A = "a" s &~ "a" A
+//      | "a" A &~ "a" s
+//      | ()
+//}
+
+testcase {
     input "ab c";
     output "1:{{a b} {c}}";
 
     s     = ids
-    ids   = "1":: id (" " ids &~ id ~[]*)
-          | "2":: id (    ids &~ id ~[]*)
+    ids   = "1":: id (" " ids &~ id !((~[])*))
+          | "2":: id (    ids &~ id !((~[])*))
           | id
     id    = [a-z]++
 }
@@ -79,33 +95,12 @@ testcase {
 }
 
 testcase {
-    input "12111211";
-    output "ac:{{2 1 2 1}}";
-    //output "a:{{2 1 2 1}}";
-    //output "c:{{c:{1 1} c:{1 1}}}";
-
-    s   = ab:: ab
-        | ac:: ac
-        | bc:: bc
-        //| a  =>  "a"
-        //| b  =>  "b"
-        //| c  =>  "c"
-    ab   = a & b
-    ac   = a & c
-    bc   = b & c
-    a   = ("1" x)*
-    b   = ("b":: x "2")*
-    c   = ("c":: x "2" x "1")*
-    x   = [123]
-}
-
-testcase {
     input  "qxbambambam";
-    output "bam:{a bam:{a bam:{a x:{x}}}}";
+    output "bam:{a bam:{a bam:{a x}}}";
 
     s   = "q" z
     z   = a z ^"bam"
-    z   = ^"x"
+        | ^"x"
     a   = a:: ()
 }
 
@@ -127,7 +122,7 @@ testcase {
 
     s   = ^"q" x "q"
     x   = ^"a" a
-    x   = epsilon:: ()
+        | epsilon:: ()
     a   = s1:: x
 }
 
@@ -174,7 +169,7 @@ testcase {
     output "s:{aa:{aa:{a b} b}}";
     s   = s:: "b" a
     a   = aa:: "a" a b
-    a   = a:: ()
+        | a:: ()
     b   = b:: ()
 }
 
@@ -182,10 +177,10 @@ testcase {
     input "aaab";
     output "sx:{b aa:{aa:{b b} b}}";
     s   = sx:: b d "a" "b"
-    s   = sy:: "a" d "a" d
+        | sy:: "a" d "a" d
     d   = aa:: "a" a b
     a   = aa:: "a" b b
-    a   = a::  ()
+        | a::  ()
     b   = b::  ()
 }
 
@@ -289,18 +284,18 @@ testcase {
 
 indent    = ww
 outdent   = " "  outdent " "
-          | " "  (~[]*)  "\n"
+          | " "  ((~[])*)  "\n"
 
 w          = " " | "\n" | "\r"
 ws         = w*
 ww         = sp*
 sp         = " "
-any        = ~[]*
+any        = (~[])*
 
 s          = smt:: !ws statement !ws statement !ws
 
 block       =        !"\n" !indent  blockBody
-           &~        !"\n" !outdent !(~[\ ]) !(~[]*)
+           &~        !"\n" (" " !outdent " ") !(~[\ ]) !((~[])*)
 
 blockBody   =       statement
             > sbb:: statement ws blockBody
@@ -331,7 +326,7 @@ testcase {
 
     s     = s2:: q " "*
     q     = a3:: [a-z] [a-z] [a-z]
-         &~ ~[] "b" ~[]*
+         &~ !(~[]) "b" !((~[])*)
 }
 
 testcase {
@@ -356,6 +351,7 @@ testcase {
 testcase {
     input "aaaaa";
     output "top:{a q:{{a a a}} a}";
+
     s = top:: z (q::"a"*) z
     z = a:: "a"
 }
@@ -368,7 +364,29 @@ testcase {
     Expr   = if::     "if" "(" Expr ")" IfBody     /ws
            | ident::  [a-z]++
     IfBody = else::   Expr            "else"  Expr /ws
-           | then::   Expr &~   (~[]* "else" !Expr /ws)
+           | then::   Expr &~   ((~[])* "else" !Expr /ws)
     ws     = [ ]**
 }
 
+
+testcase {
+    input "12111211";
+    output "ac:{{2 1 2 1}}";
+    //output "a:{{2 1 2 1}}";
+    //output "c:{{c:{1 1} c:{1 1}}}";
+
+    s   = ab:: ab
+        | ac:: ac
+        | bc:: bc
+        //| a  =>  "a"
+        //| b  =>  "b"
+        //| c  =>  "c"
+    ab   = a & b
+    ac   = a & c
+    bc   = b & c
+    a   = ("1" x)*
+    b   = ("b":: x "2")*
+    c   = ("c":: x "2" x "1")*
+    x   = [123]
+}
+