s = Expr
Expr = [0-9]++
- | Plus:: left:Expra "+" right:Expr
+ | Plus:: (left::Expra) "+" (right::Expr)
Expra = Foo:: ("a" | "b")
}
testcase {
input "aaaaa";
- s = top:: z q:"a"* z
+ output "top:{a q:{{a a a}} a}";
+ s = top:: z (q::"a"*) z
z = a:: "a"
-}
\ No newline at end of file
+}
+
+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 = [ ]**
+}
+