checkpoint harmony
[sbp.git] / tests / regression.tc
index c2206ee..ae452e9 100644 (file)
 //    s ::= ()       => s0
 //}
 
 //    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}}";
 testcase {
     input "ab c";
     output "1:{{a b} {c}}";
@@ -86,6 +69,16 @@ testcase {
 }
 
 testcase {
 }
 
 testcase {
+    input "aabb";
+    output "xbx:{abab:{a b}}";
+
+    x  !::= ~[]
+    s   ::= x* b x* => xbx
+    b   ::= [ab][ab] => abab
+         &~ ( "aa" | "bb" )
+}
+
+testcase {
     input "12111211";
     output "ac:{{2 1 2 1}}";
     //output "a:{{2 1 2 1}}";
     input "12111211";
     output "ac:{{2 1 2 1}}";
     //output "a:{{2 1 2 1}}";
@@ -263,41 +256,54 @@ testcase {
     idl  ::= [a-d]
 }
 
     idl  ::= [a-d]
 }
 
+testcase {
+  input "aa bb";
+  output "{q:{{a a}} q:{{b b}}}";
+
+  s  ::= q */ ws
+  ws ::= " "*
+  q  ::= [a-z]++ => "q"
+}
+
 //testcase {
 //
 //    input "
 //
 //
 //testcase {
 //
 //    input "
 //
 //
+//
 // while x>0
 // while x>0
-//   while y>0
-//    foo()
-//     bar()
+//    while y>0
+//       foo()
+//          bar()
+//
 //
 // while x>0
 //
 // 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"
 //
 //
 //indent  !::= ww
 //outdent !::= " "  outdent " "
 //           | " "  (~[]*)  "\n"
 //
-//any      !::= ~[]*
-//s         ::= any "\n\n" ww statement ww "\n\n" any => smt
+//w        !::= " " | "\n" | "\r"
+//ws       !::= w*
 //ww       !::= sp*
 //ww       !::= sp*
-//ws       !::= sp**
-//sp        ::= " "
+//sp       !::= " "
+//any      !::= ~[]*
+//
+//s         ::= ws statement ws statement ws => smt
 //
 //block     ::= "\n" indent  blockBody
 //           &~ "\n" outdent ~[\ ] ~[]*
 //
 //blockBody ::= statement
 //
 //block     ::= "\n" indent  blockBody
 //           &~ "\n" outdent ~[\ ] ~[]*
 //
 //blockBody ::= statement
-//            > statement blockBody /ws => "sbb"
+//            > statement ws blockBody => "sbb"
 //
 //statement ::= call
 //            | ^"while" expr block /ws
 //
 //statement ::= call
 //            | ^"while" expr block /ws
@@ -314,17 +320,7 @@ testcase {
 //ident     ::= [a-z]++ &~ keyword
 //keyword   ::= "if" | "then" | "else" | "while"
 //
 //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
+//
\ No newline at end of file