term : con | fun | expr; con: '!' | ATOM | STRING ; fun: ATOM alist { $$ = mkterm(strof($1),$2); } | ATOM '(' ')' { $$ = $1; } ; literal: term { $$ = mkterm("#literal:",$1); /* for layout! */ } ; literals : literal | literals ',' literal { $$ = mkterm("#,:",$1,$3); } ;