このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1263824755/143
#  [1] データ構造とプログラミング  
#  [2]   
#  演習問題4.5 逆ポーランド記法による入力文字列(空白で区切られている)に対して、 
#  16進数と10進数で答えを返すプログラムrpnを作りなさい。  
#  (入力例)rpn 5 2 + 7 *  
#  (出力例)0x31, 49(decimal)  
#  

program :-
        user_parameters(L),
        逆ポーランド記法による演算(L,[],X),
        'N進数'(16,4,X,_16進表示),
        write_formatted('0x%t, %t(decimal)\n',[_16進表示,X]).

逆ポーランド記法による演算([],[X|_],X) :- !.
逆ポーランド記法による演算([N|R1],Stack1,X) :-
        atom_to_term(N,N1,_),
        number(N1),
        逆ポーランド記法による演算(R,[N1|Stack1],X) :-
逆ポーランド記法による演算([_演算記号|R],[A,B|Stack1],X) :-
        member(_演算記号,[+,-,*,/]),
        F =.. [_演算記号,A,B],
        X is F,
        逆ポーランド記法による演算(R,[C|Stack1],X).