top: program { $$ = $1; } program : /* empty */ { $$ = mkterm("#empty:"); } | program any { $$ = mkterm("#;:",$1,$2); } | program error { $2 = mkterm("#error:", mkterm(_error)); } any { term* err = mkterm(strof($4)); term* msg = $2; $$ = mkterm("#;:",$1,mkterm("#error:",err,msg)); } ; any : item { if (!in_obj) return $1; }