next up previous contents
Next: Sources de la grammaire Up: Application : Grammaires catégorielles Previous: Sources de la grammaire

Grammaire catégorielle généralisé de Lambek-Gentzen

De la même manière, en reprenant le même lexique, l'analyseur lexical se réduit au prédicat suivant :

lex(lex(MOT,MOT,CAT))-->[MOT],{categorie(MOT,CAT)}.

Le symbôle lex possède trois arguments : le morceau de phrase structuré reconnu, l'expression en lambda-calcul et la catégorie correspondantes.

Les règles s'écrivent alors :

R1 :
lex([F,A],VSF@VSA,X):=lex(F,VSF,X/Y),lex(A,VSA,Y).
lex([A,F],VSF@VSA,X):=lex(A,VSA,Y),lex(F,VSF,X\Y).

R2 :
lex([F,G],V#VSF@(VSG@V),X/Z):=lex(F,VSF,X/Y),lex(G,VSG,Y/Z).
lex([G,F],V#VSF@(VSG@V),X\Z):=lex(G,VSG,Y\Z),lex(F,VSF,X\Y).

R3 :
lex(F,V#W#VSF@W@V,(X/Y)\Z):=lex(F,VSF,(X\Z)/Y).
lex(F,V#W#VSF@W@V,(X\Z)/Y):=lex(F,VSF,(X/Y)\Z).

R4 :
lex(A,V#V@VSA,Y/(Y\X)),lex(B,VSB,Y\X):=lex(A,VSA,X),lex(B,VSB,Y\X).
lex(B,VSB,Y/X),lex(A,V#V@VSA,Y\(Y/X)):=lex(B,VSB,Y/X),lex(A,VSA,X).

R5 :
lex(F,V#W#VSF@(V@W),(X/Z)/(Y/Z)),lex(G,VSG,Y/Z):=
 	lex(F,VSF,X/Y),lex(G,VSG,Y/Z).
lex(G,VSG,Y\Z),lex(F,V#W#VSF@(V@W),(X\Z)\(Y\Z)):=
 	lex(G,VSG,Y\Z),lex(F,VSF,X\Y).

R6 :
lex(G,VSG,Z/X),lex(F,V#W#V@(VSF@W),(Z/Y)\(Z/X)):=
 	lex(G,VSG,Z/X),lex(F,VSF,X/Y).
lex(F,V#W#V@(VSF@W),(Z\Y)/(Z\X)),lex(G,VSG,Z\X):=
 	lex(F,VSF,X\Y),lex(G,VSG,Z\X).

P :
lex(T,VST,Z/Y),lex(B,VSB,Y),lex(A,VSA,X):=
 	lex(T,VST,Z/Y),lex(A,VSA,X),lex(B,VSB,Y).
lex(B,VSB,Y),lex(A,VSA,X),lex(T,VST,Z\X):=
 	lex(A,VSA,X),lex(B,VSB,Y),lex(T,VST,Z\X).

C :
lex([A,B],contraction(VSA,VSB),X):=lex(A,VSA,X),lex(B,VSB,X).

Le prédicat d'analyse est :

analyser(PH,VS_S):-
    parse(lex(NPH,VS,p),PH),
    writef("%t <=> \n\t%t\n",[NPH,VS]),
    simplifier(VS,VS_S),
    writef("\t%t\n",[VS_S]).



Christophe Delord
1998-09-02