Attempting to load an incomplete mood definition such as "1 &&"
currently causes memory leaks because the memory for the partial
syntax tree is never freed.
Employ bison's %destructor directive to call mp_free_ast() whenever
a syntax error happens.
%type <node> exp
%type <node> boolexp
+/* Called when a symbol is automatically discarded due to a syntax error. */
+%destructor {mp_free_ast($$);} string exp boolexp
+
%%
program: