!"#$#%&'()%
(efinite )lause*%rammar
!"#$%&'()*+*('
,-.'/-01#%234
560&07 a#été#conçu#pour#*+,-,*./0'12'*,-3,30'-,4250*
• Formalisme#des#clauses#de#Horn#est#très#proche#de#celui#
des#35,66,750/''89:-40;4 <500=
(822%& :
X#® a
gle#«context free»:#X#® a où#
X##:#symbole#non#terminal
a:# est#une#chaîne#de#terminaux#ou#de#non-terminaux
Si*X**peut*être*remplacé*par*
a
sans*tenir*compte*du*
contexte**il*apparaît
5/8/17 Prolog#DCG 2
,-. :#sucre#/.-4,;7>20
,-. :#sucre#/.-4,;7>20'
®Traduction#automatique en#Prolog
*9%:2&% ;<
DCG :groupe_nominal --> det.
det --> [le].
det --> [un].
Prolog#géné:
groupe_nominal(A, B) :-det(A, B).
det([le|A], A).
det([un|A], A).
Les##arguments#des#prédicats#comme#
([le|A],A)
sont#des#8*7/40/'10'
17<<?50-90 =
5/8/17 Prolog#DCG# 3
="43%4'>%'>"??@6%1#%
Une#liste#=est#représentée#par#la#paire:#AB*;C*DCEC*1FGHCGI
Avantage#des#listes#de#différence:#« pointeur »#sur#la#fin#de#la#liste#:##
®la#concaténation#de#AJ;CJDI'et#AJDCJKI'est#AJ;CJKI
*9%:2&%<
Programme : p([X1,X2],[X2,X3],[X1,X3]).
|?- p([[a,b|X],X],[[c|X3],X3],[Z,X3]). ?- p([[a,b|X],X],[[c|Y],Y],[Z,[]]).
X = [c|X3]] Z = [a,b,c]
Z = [a,b,c|X3] X = [c]
Autre notation :
p([X-X1],[X1-X2],[X-X2]).
Et ?- p([[a,b|X]-X],[[c|Y]-Y],[Z-[]]).
Complexité:#l'unification#n'est#plus#dépendante#de#la#longueur#de#liste#
5/8/17 Prolog#DCG# 4
*9%:2&% ;'A4L"3%I
,-.:
phrases --> groupe_nominal, groupe_verbal.
groupe_nominal --> det, nom.
groupe_verbal --> verbe, adjectif.
det --> [le].
det --> [un].
nom--> [plat].
adjectif--> [rouge].
verbe --> [est].
5/8/17 Prolog#DCG# 5
1 / 18 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !