testcase { input "if (foo) if (bar) baz else bop"; output "IfThen:{Identifier:{{f o o}} IfThenElse:{IfThen:{Identifier:{{b a r}} Identifier:{{b a z}}} Identifier:{{b o p}}}}"; s = Expr Expr = IfThen | IfThenElse:: IfThen "else" Expr /ws &~ IfThen | Identifier:: [a-z]++ IfThen = IfThen:: "if" "(" Expr ")" Expr /ws ws = [\n ]** }