Pages: [1]   Go Down
Print
Author Topic: Espressione regolare in Prolog  (Read 1155 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
strikajici_fx
Apprendista Forumista
**
Offline Offline

Posts: 199


« on: 22-05-2015, 19:31:20 »

Salve a tutti,

in base alla lezione di giovedì ho provato a scrivere ed eseguire il codice per le espressioni regolari in prolog:

Code:
expr(S) :- q0(S).

q0([a | Cs]) :- q1(Cs).
q0([c | Cs]) :- q3(Cs).
q1([b | Cs]) :- q2(Cs).
q2([c | Cs]) :- q2(Cs).
q2([]).
q3([b | Cs]) :- q4(Cs).
q3([]).
q4([b | Cs]) :- q3(Cs).

Quando all'interprete viene dato un input del tipo a,b,c ... prolog cerca di dare due soluzioni:

Code:
expr([a,b,c]).
restituisce prima true (in maniera ovviamente corretta) e poi false.

In pratica è come se cercasse una seconda soluzione per q0. Infatti aggiungendo ! a q0

Code:
q0([a | Cs]) :- !, q1(Cs).
l'interprete restituisce una sola soluzione (cioé quella corretta).
La mia domanda è: "perché?"  boh

Spero che qualcuno mi sappia rispondere, perché io non ho trovato risposta  testate



Logged
Pages: [1]   Go Up
Print
Jump to: