小编A B*_*A B的帖子

在Erlang中,如何在使用递归时返回字符串?

我真的无法更好地表达问题,但这是我的问题:我想使用代码将中缀表达式转换为Erlang中的postfix表达式,但它只写入控制台输出.问题是,我需要返回一个列表或字符串,所以我可以将它用作其他函数中的参数.

-module(foo).
-compile(export_all).

parse(Str) ->    
    {ok, Tokens, _} = erl_scan:string(Str ++ "."),
    {ok, [E]} = erl_parse:parse_exprs(Tokens),
    E.

rpn({op, _, What, LS, RS}) ->
    rpn(LS),
    rpn(RS),
    io:format(" ~s ", [atom_to_list(What)]);
rpn({integer, _, N}) ->
    io:format(" ~B ", [N]).

p(Str) ->
    Tree = parse(Str),
    rpn(Tree),
    io:format("~n").
Run Code Online (Sandbox Code Playgroud)

例如,我想要像这样:

Str = "2 * (3 + 4)".
module:p(Str) =:= "2 3 4 + *".
module:anotherFunction(p(Str)).
Run Code Online (Sandbox Code Playgroud)

erlang rpn infix-notation postfix-notation erl

2
推荐指数
1
解决办法
325
查看次数

标签 统计

erl ×1

erlang ×1

infix-notation ×1

postfix-notation ×1

rpn ×1