intermediate checkpoint
[sbp.git] / tests / regression.tc
index 863b62e..e2ae422 100644 (file)
 //    s ::= ()       => s0
 //}
 
-tibcase {
-    input 
-"
-  hello 
-    there
-    how
-      { are }
-";
-    output "yep:{are}";
-
-    s        ::= { Hello } => "yep"
-    w        ::= " " | "\n"
-    ws      !::= w**
-    Hello    ::= "hello" ws { "there" "how" { "are" } }
-}
-
-
 testcase {
     input "ab c";
     output "1:{{a b} {c}}";
@@ -107,11 +90,12 @@ testcase {
 }
 
 testcase {
-    input  "xbambambam";
+    input  "qxbambambam";
     output "bam:{a bam:{a bam:{a x:{x}}}}";
 
-    s ::= a s ^"bam"
-    s ::= ^"x"
+    s ::= "q" z
+    z ::= a z ^"bam"
+    z ::= ^"x"
     a ::= ()       => "a"
 }
 
@@ -263,40 +247,53 @@ testcase {
 }
 
 testcase {
+  input "aa bb";
+  output "{q:{{a a}} q:{{b b}}}";
+
+  s  ::= q */ ws
+  ws ::= " "*
+  q  ::= [a-z]++ => "q"
+}
+
+testcase {
 
     input "
 
 
+
  while x>0
-   while y>0
-    foo()
-     bar()
+    while y>0
+       foo()
+          bar()
+
 
  while x>0
-   while y>0
-    foo()
-   bar()
+    while y>0
+          foo()
+        bar()
+
 
 
 ";
-    output "smt:{while:{>:{{x} {0}} while:{>:{{y} {0}} sbb:{{f o o} {b a r}}}}}";
-    output "smt:{while:{>:{{x} {0}} sbb:{while:{>:{{y} {0}} {f o o}} {b a r}}}}";
+  output "smt:{while:{>:{{x} {0}} while:{>:{{y} {0}} sbb:{{f o o} {b a r}}}} while:{>:{{x} {0}} sbb:{while:{>:{{y} {0}} {f o o}} {b a r}}}}";
 
 indent  !::= ww
 outdent !::= " "  outdent " "
            | " "  (~[]*)  "\n"
 
-any      !::= ~[]*
-s         ::= any "\n\n" ww statement ww "\n\n" any => smt
+w        !::= " " | "\n" | "\r"
+ws       !::= w*
 ww       !::= sp*
-ws       !::= sp**
-sp        ::= " "
+sp       !::= " "
+any      !::= ~[]*
+
+s         ::= ws statement ws statement ws => smt
 
 block     ::= "\n" indent  blockBody
            &~ "\n" outdent ~[\ ] ~[]*
 
 blockBody ::= statement
-            > statement blockBody /ws => "sbb"
+            > statement ws blockBody => "sbb"
 
 statement ::= call
             | ^"while" expr block /ws
@@ -313,17 +310,6 @@ num       ::= [0-9]++
 ident     ::= [a-z]++ &~ keyword
 keyword   ::= "if" | "then" | "else" | "while"
 
-w         ::= " " | "\n" | "\r"
-ws        ::= w*
 
 
 }
-
-testcase {
-  input "aa bb";
-  output "{q:{{a a}} q:{{b b}}}";
-
-  s  ::= q */ ws
-  ws ::= " "*
-  q  ::= [a-z]++ => "q"
-}
\ No newline at end of file