checkpoint
[sbp.git] / tests / regression.tc
index 60b4736..faba28d 100644 (file)
@@ -329,8 +329,8 @@ testcase {
 testcase {
     input "abc                         ";
 
-    s     = q " "* => s
-    q     = [a-z] [a-z] [a-z] => a3
+    s     = s2:: q " "*
+    q     = a3:: [a-z] [a-z] [a-z]
          &~ ~[] "b" ~[]*
 }
 
@@ -338,17 +338,37 @@ testcase {
     input "abc                         ";
     output "s:{a b c}";
 
-    s     = [a-z] [a-z] [a-z] " "* => s
+    s     = s:: [a-z] [a-z] [a-z] " "*
 }
 
 testcase {
 
     input "a+2";
-    output "";
+    output "Plus:{left:{Foo} right:{{2}}}";
 
     s       = Expr
     Expr    = [0-9]++
-            | Plus:: left:Expra "+" right:Expr
+            | Plus:: (left::Expra) "+" (right::Expr)
     Expra   = Foo:: ("a" | "b")
 
 }
+
+testcase {
+    input "aaaaa";
+    output "top:{a q:{{a a a}} a}";
+    s = top:: z (q::"a"*) z
+    z = a:: "a"
+}
+
+testcase {
+    input  "if (x) if (y) z else q";
+    output "if:{ident:{{x}} else:{if:{ident:{{y}} then:{ident:{{z}}}} ident:{{q}}}}";
+
+    s      = Expr
+    Expr   = if::     "if" "(" Expr ")" IfBody     /ws
+           | ident::  [a-z]++
+    IfBody = else::   Expr            "else"  Expr /ws
+           | then::   Expr &~   (~[]* "else" !Expr /ws)
+    ws     = [ ]**
+}
+