【发布时间】:2013-06-30 14:18:36
【问题描述】:
我真的无法更好地提出这个问题,但这是我的问题: 我想在 Erlang 中使用this 代码将中缀表达式转换为后缀表达式,但它只写入控制台输出。问题是,我需要返回一个列表或字符串,所以我可以将它用作其他函数的参数。
-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").
例如,我想要这样的东西:
Str = "2 * (3 + 4)".
module:p(Str) =:= "2 3 4 + *".
module:anotherFunction(p(Str)).
【问题讨论】:
标签: erlang infix-notation rpn erl postfix-notation