break Node out of GSS
[sbp.git] / tests / regression.tc
index bd7d107..3351018 100644 (file)
@@ -1,6 +1,6 @@
 //testcase {
 //    input  "x";
-//    output "a1:{x}";
+//    output "a:{x}";
 //
 //    s   = a1:: a
 //    a   = s1:: s
@@ -40,8 +40,8 @@ testcase {
     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]++
 }
@@ -292,10 +292,10 @@ ww         = sp*
 sp         = " "
 any        = (~[])*
 
-s          = smt:: !ws statement !ws statement !ws
+s          = smt:: ws! statement ws! statement ws!
 
-block       =        !"\n" !indent  blockBody
-           &~        !"\n" (" " !outdent " ") !(~[\ ]) !((~[])*)
+block       =        "\n"! indent!  blockBody
+           &~        "\n"! (" " outdent! " ") (~[\ ])! ((~[])*)!
 
 blockBody   =       statement
             > sbb:: statement ws blockBody
@@ -326,7 +326,7 @@ testcase {
 
     s     = s2:: q " "*
     q     = a3:: [a-z] [a-z] [a-z]
-         &~ !(~[]) "b" !((~[])*)
+         &~ (~[])! "b" ((~[])*)!
 }
 
 testcase {
@@ -364,7 +364,7 @@ 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     = [ ]**
 }
 
@@ -397,3 +397,45 @@ testcase {
 //    s = a:"a" b:"b"
 //}
 
+
+testcase {
+    input "a c";
+    s = first::  A WSA B? WSB C
+    A = "a"
+    B = "b"
+    C = "c"
+  WSA = WSA:: " "**
+  WSB = () -> ~" "
+      | WSB:: " "++
+}
+
+//testcase {
+//    input "aaaaaXaaaa";
+//    output "";
+//          s = ManyA &~ EndsWithZ
+//  EndsWithZ = Anything "Z"
+//      ManyA = () | "a" ManyA
+//   Anything = () | ("a" | "X" | "Z") Anything
+//}
+
+testcase {
+    input "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
+    output "";
+          s = ManyA
+      ManyA = ()
+            | A ManyA! & ManyAB
+          A = "a"
+     ManyAB = ()
+            | "a" ManyAB
+            | "b" ManyAB
+}
+
+testcase {
+  input "aaaaaaaa";
+  output "";
+  s = As & AAs
+  As = () | As "a"
+  AAs = () | AAs "aa"
+}
+
+