<fun defs> → {<fun def>}+
<fun def> → "(" "define" <fun header> <exp> ")"
<fun header> → "(" <fun name> <parameter list> ")"
<fun name> → <id>
<parameter list> → {<id>}
<exp> → <id> | <int> | <float> | <floatE> | <list exp>
<list exp> → "(" <list exp inside> ")"
<list exp inside> → "if" <exp> <exp> <exp> | "cond" <cases> | <fun op> { <exp> }
<cases> → {<case exp>}+
<case exp> → "(" ( "else" | <exp> ) <exp> ")"
<fun op> → <id> | <arith op> | <bool op> | <comp op>
<arith op> → + | − | * | /
<bool op> → "and" | "or" | "not"
<comp op> → "<" | "<=" | ">" | ">=" | "="
PGZ1biBkZWZzPiDihpIgezxmdW4gZGVmPn0rIAo8ZnVuIGRlZj4g4oaSICIoIiAiZGVmaW5lIiA8ZnVuIGhlYWRlcj4gPGV4cD4gIikiIAo8ZnVuIGhlYWRlcj4g4oaSICIoIiA8ZnVuIG5hbWU+IDxwYXJhbWV0ZXIgbGlzdD4gIikiIAo8ZnVuIG5hbWU+IOKGkiA8aWQ+IAo8cGFyYW1ldGVyIGxpc3Q+IOKGkiB7PGlkPn0gCjxleHA+IOKGkiA8aWQ+IHwgPGludD4gfCA8ZmxvYXQ+IHwgPGZsb2F0RT4gfCA8bGlzdCBleHA+IAo8bGlzdCBleHA+IOKGkiAiKCIgPGxpc3QgZXhwIGluc2lkZT4gIikiIAo8bGlzdCBleHAgaW5zaWRlPiDihpIgImlmIiA8ZXhwPiA8ZXhwPiA8ZXhwPiB8ICJjb25kIiA8Y2FzZXM+IHwgPGZ1biBvcD4geyA8ZXhwPiB9IAo8Y2FzZXM+IOKGkiB7PGNhc2UgZXhwPn0rIAo8Y2FzZSBleHA+IOKGkiAiKCIgKCAiZWxzZSIgfCA8ZXhwPiApIDxleHA+ICIpIiAKPGZ1biBvcD4g4oaSIDxpZD4gfCA8YXJpdGggb3A+IHwgPGJvb2wgb3A+IHwgPGNvbXAgb3A+IAo8YXJpdGggb3A+IOKGkiArIHwg4oiSIHwgKiB8IC8gCjxib29sIG9wPiDihpIgImFuZCIgfCAib3IiIHwgIm5vdCIgCjxjb21wIG9wPiDihpIgIjwiIHwgIjw9IiB8ICI+IiB8ICI+PSIgfCAiPSIg