Erlangはド素人。レス入れるのも恥ずかしいが、
使ったことあるモジュールを組み合わせると、

test(Str) ->
{ok,Ts,E} = erl_scan:string(lists:append(Str,".")),
{ok,P} = erl_parse:parse_exprs(Ts),
P.

までは来る。ヒントにならないかなぁ。