Getting lists from ASCII input

Matthew McDonnell matt@REDACTED
Tue May 16 10:04:45 CEST 2006

On Mon, 15 May 2006, Deryk Barker wrote:

> I'm trying to write a program (a client - my students will write the
> server) which needs to allow the user to enter a list in repsonse to a
> prompt.
> I cannot quite figure out what combination of list_to_atom and
> atom_to_list I need to do this.
> e.g. if the user enter:
> 	remove [a,b,c]
> I'd like to be able to get the remove as an atom and the [a,b,c] as a
> list of three atoms. Currently, I can get the list

io:scan_erl_exprs does just about what you want:

1> io:scan_erl_exprs('enter text>').
enter text>remove [a,b,c].

Something like the following maybe? (untested, probably typos):

parse() ->
  {ok, [ActionAtom, {'[',_}, AtomList], _Num} = io:scan_erl_exprs(),
  List = accumulate(AtomList,[])
  {ActionAtom, List}.

accumulate([{atom, _, At} | Lst], Acc) ->
  accumulate(Lst, [At | Acc]);
accumulate([{']',_} | ], Acc) ->


Matt McDonnell
Email: matt@REDACTED

More information about the erlang-questions mailing list