首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"string_to_term/1"?

"string_to_term/1"?
EN

Stack Overflow用户
提问于 2013-03-16 10:26:21
回答 2查看 188关注 0票数 3
代码语言:javascript
复制
a_function_id_like_to_have("{1,2,{3,4}}") % => {1,2,{3,4}}

(就像哈斯克尔中的read )

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-16 11:00:54

请看this presentation的幻灯片25。

它利用了erl_evalerl_parseerl_scan

代码语言:javascript
复制
1> {ok, Tokens, _} = erl_scan:string("{1,2,{3,4}}.").
{ok,[{'{',1},
     {integer,1,1},
     {',',1},
     {integer,1,2},
     {',',1},
     {'{',1},
     {integer,1,3},
     {',',1},
     {integer,1,4},
     {'}',1},
     {'}',1},
     {dot,1}],
    1}
2> {ok, Abstract} = erl_parse:parse_exprs(Tokens).
{ok,[{tuple,1,
            [{integer,1,1},
             {integer,1,2},
             {tuple,1,[{integer,1,3},{integer,1,4}]}]}]}
3> Bindings = erl_eval:new_bindings().
[]
4> {value, Value, _} = erl_eval:exprs(Abstract, Bindings).
{value,{1,2,{3,4}},[]}
5> erlang:display(Value).
{1,2,{3,4}}
true
票数 6
EN

Stack Overflow用户

发布于 2014-06-10 00:48:17

您可以简单地使用erl_scan:string/1erl_parse:parse_term/1

代码语言:javascript
复制
string_to_term(Str) ->
    {ok, Tokens, _} = erl_scan:string(Str),
    {ok, Term} = erl_parse:parse_term(Tokens),
    Term.

确保Str是以点结尾的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15444909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档