gramt

publicité
/* Fichier gramt.c */
&REFER(VARTAHIT,GRAMTAHIT).
&GRAMMAIRE.
&ENTREE: depart(I).
/* RPOINT0. Lecture dans le dico dicttrttahit des valeurs de */
/* ULT des feuilles des elements structures, equivalentes aux */
/* valeurs de UL non vides.
*/
RPOINT0:
0(*) / 0:( (ULT(DICT(*))^=0) & (TRAITES=0) )
=>
0 / 0:0 ( ULT = ULT(DICT(0)) ; PARTIE = PARTIE(DICT(0)) ;
ORDRE = ORDRE(DICT(0)); SUBSTADJ = SUBSTADJ(DICT(0)) ;
NUMT = NUMT(DICT(0)) ; TRAITES=OUI ; TYPT = TYPT(DICT(0)) ;
SUBST = SUBST(DICT(0)) ; ULTS = ULTS(DICT(0)) ).
/* RPOINT1. Affectation aux variables ULT des noeuds non
*/
/* feuilles des elements structures aux valeurs des variables */
/* UL des memes noeuds.
*/
RPOINT1:
0(1) / 0:( (UL^=0) & (TRAITES=0) )
=>
0(1) / 0:0( ULT = %(ULT)<-UL(*) ; TRAITES=OUI ).
--> gramordre: 0(1) / 0: K = GN; 1: K = GNPREP.
--> general.
--> %STOP.
/* Verifier quand il y aura +sieurs regles de changer en U(10). */
&GRAM: gramordre.
/* Appeler recursivement sur RCPLTNOM et le point 2. */
/* Pb de bouclage sur RCPLTNOM quand on est en U(10). */
/* Prise en compte de l'ordre du possessif 'o' ou 'a' dans le
COMPLEMENT du NOM du GN. */
RCPLTNOM:
0(1,2(3,4)) / 0: K = GN; 1: CAT = N; 2: K = GNPREP; 3: (CAT =
PREP)&(ORDRE = 0); 4:(CAT = N)
=>
0(1,2(3,4)) / 3:3(<(TPREP(3) = A)|(SEMA(4) & (CONCR | MAT) ^=
0) : ORDRE = A # ORDRE = O>).
--> general.
&GRAM: general(I).
/*Lancement de la grammaire de Substantivation d'Adjectif si SUBSTADJ=OUI. */
RSUBSTADJ(@Trt_SubstAdj; 2):
2(0?(1)) / 0: (K=PHRASE); 1: (SUBSTADJ = OUI)
=>
2(0(1)).
--> Trt_CCirc: 0 / 0: (FS = COMPCIR).
--> Trt_Sub_Inf: 0 / 0: (FS = OBJT) | (FS=OBJI).
--> Relais1.
/* Grammaire de Substantivation de l'Adjectif. */
&GRAM: Trt_SubstAdj.
/* On refabrique entierement la phrase en supposant
/* dans un premier temps que l'adjectif
/* a substantiver fait partie du Groupe Nominal SUJET.
*/
*/
*/
RTRTSUBSTADJ:
0(1(GN(*,ADJ),*,GV1(VB1))) / 1: (K=PHRASE); GN: (K=GN); ADJ:
(SUBSTADJ = OUI); VB1: (CAT=V)
=>
0(X(GNR(*GN<ADJ,>*,PHREL(QUI,GV1(VB1),*1<GV1,>*)),GV(VB))) / X:1;
GNR:GN; PHREL: (ULT='*PHREL'); GV: (ULT='*GV'; K=GV); QUI: (ULT='i'); VB: (
CAT=V; ULT = ULT(ADJ) ) / TEMP(GV)=TEMP(GV1).
--> %STOP.
&GRAM: Trt_CCirc(I).
/* Ajout de la preposition "i" dans un GNPREP,
*/
/*
complement circonstanciel.
*/
RTRTCOMPCIR1:
GN(*,QQ) / GN:( (K=GNPREP) & (FS=COMPCIR) ); QQ:( (ULT^='i') &
(CAT=PREP) & (TPREP^=SUR) )
=>
GN(QQ) / QQ:(ULT='i').
/* Ajout de la preposition "i" dans un GN,
*/
/*
complement circonstanciel.
*/
RTRTCOMPCIR2:
GN(*,QQ) / GN:( (K=GN) & (FS=COMPCIR) ); QQ: (ULT^='i')
=>
GN(I,QQ) / I: (ULT='i').
/* Ajout de la preposition "i" dans un GNPREP,
*/
/*
complement circonstanciel.
*/
RTRTCOMPCIR3:
GN(*,QQ) / GN:( (K=GNPREP) & (FS=COMPCIR) ); QQ:( (ULT^='i') &
(CAT=PREP) & (TPREP=SUR) )
=>
GN(NEW,QQ) / NEW:( ULT='i').
--> Trt_Sub_Inf: 0 / 0: ( KPH=PHINF).
--> Relais1.
&GRAM:Trt_Sub_Inf(U(10)).
/* Traitement de la subordonnee infinitive car consideree comme COD du
verbe. */
RPHINF1:
0(GV(PHINF),*,%3) / GV: K=GV; PHINF: KPH=PHINF
=>
0(GV,PHINF,%3).
/* Traitement de la preposition 'de' introduisant une subordonnee
infinitive. */
RINFDET:
0(1) / 0: (KPH=PHINF) ; 1: (TPREP=DE)
=>
0(1) / 1:1 (ULT='e').
/* Traitement interne du PHINF dans le cas d'un verbe de decision. */
RPHINF2:
PHINF(*,GV) / GV: K=GV; PHINF: KPH=PHINF
=>
PHINF(I,TE,GV) / I:(ULT='i'); TE: (ULT='te').
--> Trt_CObjet.
&GRAM: Trt_CObjet(I).
/* Traitement du pronom personnel COI place avant le verbe ainsi que des
GN, complement d'objet direct et indirect. */
RCODI1:
PH(GV(*,%GN1,GN2,*),*,PT) / PH: K=PHRASE; GV: K=GV; GN1:
(K=GN)&(FS=OBJI); GN2: ((K=GN) | (K=GNPREP)) & ((FS=OBJT)|(FS=OBJI))
=>
PH(GV,%GN1,GN2,PT).
/* Traitement du pronom personnel COI place avant le verbe dans le cas
d'un seul pronom personnel. */
RCODI2:
PH(GV(*,GN),*,PT) / PH: K=PHRASE; GV: K=GV; GN: (K=GN)&(
(FS=OBJI)|(FS=OBJT) ); GN$: ( (FS^=OBJT)&(FS^=OBJI) )
=>
PH(GV,GN,PT).
/* Ajout de la preposition "i" dans chaque GN d'un gros COD ou COI avec
Coordination sauf s'il y a "ho'e". */
RTRTCODI1:
GN(GN1(*,QQ)) / GN:( (K=GN) & ((FS=OBJT)|(FS=OBJI)) &
(COORDIN=C) ); GN1: ( (K=GN) & (COORDIN=P) ); QQ:( (ULT^='i') & (ULT^='ho''e')
)
=>
GN(GN1(I,QQ)) / I: (ULT='i').
/* Ajout de la preposition "i" dans un GN, COD ou COI sauf s'il y a
"ho'e".
*/
RTRTCODI2:
GN(*,QQ) / GN:( ((K=GN)|(K=GNPREP)) & ((FS=OBJT)|(FS=OBJI)) &
(CAT^=REP) & (COORDIN = 0) ); QQ:( (ULT^='i') & (ULT^='ho''e') )
=>
GN(I,QQ) / I: (ULT='i').
--> Relais1.
&GRAM: Relais1.
--> Trt_Verbe: 0 / 0: K=GV.
--> Trt_Nom.
&GRAM: Trt_Verbe(I).
/* Traitement du passe ou present par l'ajout d'une particule 'ua ou 'e
*/
/* Et inversion du sujet et du verbe apres le traitement des COD et COI.
*/
RVERBE:
PH(GN,*,GV(*,VB)) / PH: K=PHRASE; GV: K=GV; GN: K=GN; VB:
CAT=V
=>
PH(GV(PART,VB),GN) / PART: (<TEMP(GV) & TEMP(FPASSE) ^= 0:
ULT='''ua' # ULT='''e'>).
/* Traitement de la Negation avec 'ne-pas' tt seul dans le GADV. */
RTRFNEG1:
PH(GN,*,GV(*,DEB_NEG,%GADV(*,%FIN_NEG,*))) / PH: (K=PHRASE); GV
: (K=GV); DEB_NEG:( (K=GADV) & (SEM=NEGAT) ); FIN_NEG: (UL='ne-pas')
=>
PH(DEB_NEG,GN,GV).
/* Traitement de la Negation avec 'ne-pas' pas tout seul dans le GADV.
*/
RTRFNEG2:
PH(GN,*,GV(*,DEB_NEG,%GADV(%FIN_NEG))) / PH: (K=PHRASE); GV :
(K=GV); DEB_NEG:( (K=GADV) & (SEM=NEGAT) ); FIN_NEG: (UL='ne-pas')
=>
PH(DEB_NEG(FIN_NEG),GN,GV).
/* Traitement du prefixe dans le verbe. */
RPREFIX(Trt_Prefix;0):
0(1,*,%2)/ 0: K=GV; 1: (CAT=V) & (PREFIX^=0)
=>
0(1,GADV(PREF),%2) / GADV:*FGADV; PREF:*FSNAV( ULT='PREFIX').
/* Dedoublement du verbe en cas de besoin: PARTIE='MULT2'. */
RDDVB:
0(1,*,%2) / 0: K=GV; 1: ( (CAT=V) & (PARTIE='MULT2') )
=>
0(1,GADV(ADV),%2) / 1:1 ( PARTIE='MULT2';ULT= ULT(DICT(*));
PARTIE=0 ); GADV:*FGADV(ULT='*GADV'); ADV:*FSNAV ( PARTIE='MULT2' ;
ULT=ULT(DICT(1,2))).
RTRNOMADV:
0(1,*,2(*,3,*,4)) / 0: (K=GV); 1: (CAT=V); 2: (K=GN); 3: (
(CAT=DETERM) & (SOUSD=ARTD) ); 4: ( (CAT=N) & (TRANS=NOMADV) )
=>
X(*0<,2>*,GADV(ADV)) / X:0; GADV:*FGADV(ULT='*GADV');
ADV:*FSNAV(ULT=ULT(4)).
--> Trt_Nom.
/* Grammaire de Traitement des groupes nominaux. */
&GRAM: Trt_Nom(I).
/* Le traitement de la substantivation des verbes utilisés comme nom
avec préfixe.
*/
RTRTSUBST:
GN(NM) / GN:( (K = GN) | (K = GNPREP) ) ; NM:( (CAT = N) &
(SUBST=O) & (TRAITES=OUI))
=>
GN(NM) / NM: NM( TRAITES=NON; SUBST=N ; ULT= %(ULT)<-ULTS(*)
).
/* Le traitement du pluriel dans le groupe nominal ne s arrete pas a la
particule MAU
*/
/*
car les particules NA, NAU et TAU y interviennent aussi.
*/
RCREATPLUR1:
GN(ART,*,NM) / GN:( (K = GN) | (K = GNPREP) ) ; ART:
(CAT=DETERM) ; NM:( (CAT = N) & (NUM = PLU) )
=>
GN(ART,PART,NM) / PART: (ULT='mau').
/* Traitement du pluriel effectue apres le chargement a partir du dico
DICTTRTAHIT
*/
/* d'un mot au singulier transforme en mot au pluriel.
*/
RCREATPLUR3:
GN(ART,*,NM) / GN: (K = GN); ART: (CAT=DETERM); NM: ( (CAT =
N) & (NUMT = PLU) )
=>
GN(ART,PART,NM) / PART: (ULT='mau').
/* L inversion des adjectifs dans le groupe nominal intervient quand l
adjectif vient
*/
/*
avant le nom. La decomposition du groupe nominal est ici Nom +
Adjectif.
*/
RINVRSADJ:
GN(ADJ,NM) / GN: K = GN; ADJ: CAT = ADJOINT; NM: CAT = N
=>
X(*GN<,ADJ>*,NM,*GN<ADJ,NM>*,ADJ,*GN<NM,>*) / X:GN.
RDDADJ:
GN(*,GN1(Q1,*),*,CONJ,*,GN2(Q2,*),*,GA,*) / GN1: K = GN; CONJ:
CAT=CONJCT; GN2: K=GN; GA: K=GA
=>
GN(GN1(Q1,GA),CONJ,GN2(Q2,GA2(*GA*))) / GA2:GA.
/* Dedoublement du nom en cas de besoin: PARTIE='MULT2'. */
RDDNOM:
GN(1(*),*,%2) / GN: ( (K = GN) | (K = GNPREP) ) ; 1: ( (CAT=N)
& (PARTIE='MULT2') )
=>
GN(1, GA( ADJ ), %2) / 1:1 ( PARTIE='MULT2';ULT= ULT(DICT(*));
PARTIE=0 ); GA:*FGA(ULT='*GA'); ADJ:*FSNAD ( PARTIE='MULT2' ;
ULT=ULT(DICT(1,2))).
/* Suppression de 'o' herite de la traduction NON-A-PROPOS de la
preposition 'DE' en francais. */
RSUPPRIMOGN:
GNP( 1 ) / GNP: ( (K=GNPREP) & ( (FS=OBJT) | (FS=OBJI) ) ); 1:
( ULT='o')
=>
GNP .
-->%STOP.
&GRAM: Trt_Prefix(U). /* On applique une seule fois la grammaire. */
/* Traitement du prefix RE- en lui remplacant l'adverbe 'faahou' (encore) */
RPREFRE :
0(1,*,3(2)) / 0: K=GV; 1: PREFIX=RE; 2: ULT='PREFIX'
=>
0(1,3(2)) / 2:2(UL='encore';ULT=ULT(DICT(*))); 1:1(PREFIX=0).
-->%STOP.
&FIN.
Téléchargement