-testcase {
- input "if (bar!) baz!;";
- output "IfThen:{id:{x:{b x:{a r}}} id:{x:{b x:{a z}}}}";
-
- s = Expr ";"
- Expr = IfThen
- | IfThenElse
- | id:: id "!"
- id = [a-z] | x:: [a-z] id
- IfThen = IfThen::
- "if" "(" Expr ")"
- Expr
- /ws
- IfThenElse = IfThenElse::
- "if" "(" Expr ")"
- NotIfThenExpr
- "else"
- Expr
- /ws
- NotIfThenExpr = (Expr & [a-z]+)
- SpaceIfThen = (~[])*// !IfThen
- ws = [\n ]**
-}
\ No newline at end of file
+testcase "follow restrictions on empty string" {
+ input "xxx";
+ s = x:: "x" A "x" C "x"
+ A = B
+ B = "y"
+ | () -> ~"x"
+ C = D -> ~"x"
+ D = ()
+}
+
+testcase "unnamed" {
+ input "axxxxxc";
+ output "q:{a {x x x x x} c}";
+ s = q:: A ws (B|()) ws C
+ ws = "":: [x]**
+ A = a:: "a"
+ B = b:: "b"
+ C = c:: "c"
+}
+
+testcase "unnamed" {
+ input "aaaaaaaaaaaaaaaaaaaa";
+ output "";
+ s = As & AAs
+ As = () | As "a"
+ AAs = () | AAs "aa"
+}
+
+testcase "question mark" {
+ input "aa aba abba";
+ output "s:{Y Y Z}";
+ s = s:: X " " X " " X
+ X = Y > Z
+ Y = Y:: "a" B? "a"
+ Z = Z:: "a" "b"* "a"
+ B = "b"
+}