-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmangiatutto.pl
38 lines (29 loc) · 992 Bytes
/
mangiatutto.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
%mangiatutto(InEspressione, OutEspressione)
%trasforma un espressione regolare sostituendo ad ogni atomo il letterale
%qualunque_cosa. Occorre per un'implementazione economica di bar
mangiatutto(Xatomico, qualunque_cosa) :-
atomic(Xatomico).
mangiatutto(star(Reg), star(Nuovo)) :-
mangiatutto(Reg, Nuovo).
mangiatutto(plus(Reg), plus(Nuovo)) :-
mangiatutto(Reg, Nuovo).
%occhio!
mangiatutto(bar(Reg), Nuovo) :-
mangiatutto(Reg, Nuovo).
mangiatutto([alt | Args], Nuovo) :-
mangiatutto_list(Args, ArgNuovi),
Nuovo =.. [alt | ArgNuovi].
mangiatutto([oneof | Args], Nuovo) :-
mangiatutto_list(Args, ArgNuovi),
Nuovo =.. [oneof | ArgNuovi].
mangiatutto([seq | Args], Nuovo) :-
mangiatutto_list(Args, ArgNuovi),
Nuovo =.. [seq | ArgNuovi].
mangiatutto(X, Nuovo) :-
not(is_list(X)),
X =.. Lista,
mangiatutto(Lista, Nuovo).
mangiatutto_list([Primo | Resto], [Nuovo | RestoNuovo]) :-
mangiatutto(Primo, Nuovo),
mangiatutto_list(Resto, RestoNuovo).
mangiatutto_list([], []).