lists are tricky though
vlist: alist | clist ;
alist : '(' clist ')' { $$ = $2; }
;
clist : term
| clist ',' term { $$ = mkterm("#,:",$1,$3); }
;
slist : term
| slist ',' term { $$ = mkterm("#::",$1,$3); }
;
lexpr : '[' ']' { $$ = mkterm("[]"); }
| '[' list { $$ = mkterm("#list:",$2); }
;
list : term ']' { $$ = mkterm(".",$1,mkterm("[]")); }
| term '|' term ']' { $$ = mkterm("|",$1,$3); }
| term ',' list { $$ = mkterm(".",$1,$3); }
;
sexpr : '{' '}' { $$ = mkterm("{}"); }
| '{' set { $$ = mkterm("#set:",$2); }
;
set : term '}' { $$ = mkterm("#s.:",$1); }
| term '|' clist '}' { $$ = mkterm("#s|:",$1,$3); }
| term ',' set { $$ = mkterm("#s,:",$1,$3); }
;
slide: lists are tricky though