% Manuelle Umbenennungen im AST % % Diese AST-Transformationen folgen grob den Transformationen aus ASTProlog.java % todo: move some of this renamings to the grammar description in BParser.scc % trim([ptoken_228/Identifier],Atom):- name(Atom,Identifier). trim(ptoken_95/"MACHINE",'MACHINE'). trim(ptoken_231/Integer,Atom):- name(Atom,Integer). trim(List,Res):- trimList(List,Res),!. trim(node(Functor1,Functor2,Pos,Nodes),Res) :-!, lookupRename(Functor1,Functor2,NewFunctor), trimList(Nodes,NewNodes), Res=..[NewFunctor | [Pos|NewNodes]]. trim(X,_) :- throw('trim catch all'(X)). trimList([],[]). trimList([H|R],[H2|R2]):- trim(H,H2), trimList(R,R2). lookupRename(F1,F2,R) :- rename(F1,F2,R),!. lookupRename(F1,_,F1). % right at the top of ASTProlog.Java : rename(unequal, _, not_equal). rename(universal_quantification, _, forall). rename(existential_quantification, _, exists). rename(unary, _, unary_minus). rename(belong, _, member). rename(not_belong, _, not_member). rename(include, _, subset). rename(not_include, _, not_subset). rename(include_strictly, _, subset_strict). rename(not_include_strictly, _, not_subset_strict). rename(op_with_return, _, operation_call). rename(op, _, operation_call). rename(subtract, _, minus). rename(prover_comprehension_set, _, comprehension_set). % defined in ASTProlog.jave below line 856: % here we need to look at the second argument % becaue true and false are used for several different things. rename(true,'ATrueExpression',boolean_true). rename(false,'AFalseExpression',boolean_false). rename(true,'ATruePredicate',truth). rename(false,'AFalsePredicate',falsity).