parser: force parse_literal() to return pointer to id
parse: add initial list parsing
parser: fix dereference of freed pointer