有人能帮助我用PROLOG中的堆栈概念编写一个程序来将算术表达式从后缀(反向波兰符号)转换为前缀表单。该算术表达式可能包含4个算术运算符+、-、/、*和一元函数:sin, cos, tan, exp, log and sqrt.
发布于 2013-02-22 14:03:12
追加,/2,这是一个有用的列表组合器。它以相当一般的方式允许任意数量的列表之间的连接关系。我将在这里展示基本的内容,您需要完成您的任务,将一些细节添加为一元函数,定义isop/1
pos2pre(Pos, Pre) :-
append([A, B, [O]], Pos), isop(O), A \= [], B \= [],
pos2pre(A, APre),
pos2pre(B, BPre),
!, append([[O], APre, BPre], Pre).
pos2pre([P], [P]).一个小小的考验:
?- pos2pre([1,5,*,2,+],X).
X = [+, *, 1, 5, 2].我认为您应该尝试编写相同的逻辑,但是使用追加/3,这将帮助您理解该过程是如何工作的。
https://stackoverflow.com/questions/15022133
复制相似问题