Copie de secours de newgramt.wbk

publicité
Fichier gramt.c
1/8
16/04/17 à 21:04
/* Fichier gramt.c */
&REFER(VARTAHIT,GRAMTAHIT).
&GRAMMAIRE.
/* Grammaire de Transfert Lexical. */
&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 nœuds. */
RPOINT1:
0(1) / 0:( (UL^=0) & (TRAITES=0) )
=>
0(1) / 0:0( ULT = %(ULT)<-UL(*) ; TRAITES=OUI ).
--> RelaisA.
/* Grammaire de relais, début de la grammaire de Génération Syntaxique. */
&GRAM: RelaisA.
--> GTrfCObjet.
/*
La grammaire GTrfCObjet s’occupe de remonter les Compléments d’objets du verbe qui sont dans le
groupe verbal à droite du même groupe verbal. Elle représente le début de la Génération Syntaxique.
-L’ordre de placement des règles n’est pas innocent. D’abord, le traitement de la subordonnée infinitive
permet de pouvoir mettre les éventuels COD/I avant la subordonnée et après le verbe. Ensuite, les GN
non pronoms personnels seront placés entre les subordonnées infinitives et le verbe. Enfin, les pronoms
personnels sont situés entre le nouveau GV et les autres COD/I.
*/
&GRAM : GTrfCObjet(I).
/* Traitement de la subordonnée infinitive, elle est considérée comme COD du verbe. */
RTrfPHINF1:
Fichier gramt.c
2/8
16/04/17 à 21:04
0( GV( PHINF ),*,%3 ) / 0 : K=PHRASE ;
GV: K=GV;
PHINF: KPH=PHINF
=>
0( GV, PHINF, %3 ).
/* Règle de traitement des groupes nominaux GN ou GNPREP qui sont COD ou COI. */
RTrfCO1 :
PH( GV( GN,* ), *, %1 ) /
PH : K=PHRASE ;
GV : K=GV ;
GN : ( ( (K=GN) | (K=GNPREP) ) & ( (FS=OBJT) | (FS=OBJI) ) )
=>
PH( GV, GN, %1).
/* Règle de traitement des groupes nominaux qui sont des pronoms personnels placés avant le verbe. */
RTrfCO2 :
PH( GV( *, GN ), *, %1 ) /
PH : K=PHRASE ;
GV : K=GV ;
GN : ( ( (K=GN) | (K=GNPREP) ) & ( (FS=OBJT) | (FS=OBJI) ) )
=>
PH( GV, GN, %1).
--> GTransfertStructurel.
/*
La grammaire suivante repose sur la lecture dans le dictionnaire de traduction, de variables d’étiquettes
liées à la construction de certaines phrases ou à la modification de certains verbes ou autres termes de la
phrase.
Pour l’instant, une seule modification a été vue dans les exemples : la modification de toute une phrase
par la transformation d’un complément du nom en verbe.
*/
&GRAM : GTransfertStructurel(I).
/* A revoir pour intégrer les subordonnées des phrases. */
--> GTrfPhrases.
/*
La grammaire suivante lance les transformations suivant le type de phrases :
affirmatives, négatives, interrogatives et intérronégatives. Attention : pour l’instant, seules les phrases
verbales sont prises en compte.
Mode d’application : I pour itératif. L’exécution de la grammaire s’arrête quand plus aucune règle n’est
applicable.
Elle représente la suite de la Génération Syntaxique.
*/
&GRAM : GTrfPhrases (I).
/*
Les deux règles suivantes concernent les transformations des phrases de type affirmatives et
Fichier gramt.c
3/8
16/04/17 à 21:04
interrogatives. Il y a inversion du sujet et du verbe dans les deux cas. Dans le cas interrogatif, on ajoute
en plus un adverbe interrogatif. Quand le sujet et le verbe seront inversés, les règles ne seront plus
appliquées.
*/
RtrfAffirm :
PH( GN, *, GV, *, %1, PT,* ) /
PH : (K=PHRASE) & (TYPE=AFFIRM) ;
GN : (K=GN) & (FN=SUJET) ;
PT : UL=’.’
=>
PH( GV, GN, %1, PT).
RtrfInterro :
PH( GN, *, GV, *, %1, PT,* ) /
PH : (K=PHRASE) & (TYPE=AFFIRM) ;
GN : (K=GN) & (FN=SUJET) ;
PT : UL=’ ?’
=>
PH( GV, GADV(ADV), GN, %1, PT) /
GDAV : (K=GADV) ;
ADV : (SOUSA=ADVERB) & (ULT=’anei’).
/*
Les deux règles suivantes concernent les transformations des phrases de type négatives et
interronégatives. Il y un déplacement de la négation de l’interieur du groupe verbal GV avant le groupe
sujet GN. Dans le cas interrogatif, on ajoute en plus un adverbe interrogatif. La condition d’arrêt
intervient quant il n’y a plus de GADV contenant d’adverbe de négation.
*/
RtrfNégative :
PH( %1, *, GN, *, GV( GADV( ADV ), PT, *) /
PH : (K=PHRASE) & (TYPE=NEGATIVE) ;
GN : (K=GN) & (FN=SUJET) ;
GDAV : (K=GADV) ;
ADV : (UL=’ne-pas’) ;
PT : UL=’.’
=>
PH( %1, GADV(ADV), GN, GV, PT).
RtrfInterroNégative :
PH( %1, *, GN, *, GV( GADV( ADV ), PT, *) /
PH : (K=PHRASE) & (TYPE=NEGATIVE) ;
GN : (K=GN) & (FN=SUJET) ;
GDAV : (K=GADV) ;
ADV : (UL=’ne-pas’) ;
PT : UL=’?’
=>
PH( %1, GADV(ADV), GADV2(ADVI),GN, GV, PT) /
GDAV : (K=GADV) ;
ADV : (SOUSA=ADVERB) & (ULT=’anei’).
/*
A revoir
*/
/* Lancement de la grammaire de Substantivation d'Adjectif si SUBSTADJ=OUI. */
Fichier gramt.c
4/8
16/04/17 à 21:04
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 entièrement la phrase en supposant dans un premier temps que l'adjectif à 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.
*/
R1TrtCompCirc:
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.
*/
R2TrtCompCirc:
GN(*,QQ) / GN:( (K=GN) & (FS=COMPCIR) ); QQ: (ULT^='i')
=>
GN(I,QQ) / I: (ULT='i').
Fichier gramt.c
5/8
16/04/17 à 21:04
/*
Ajout de la preposition "i" dans un GNPREP, complement circonstanciel.
*/
R3TrtCompCirc:
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 preposition 'de' introduisant une subordonnee infinitive. */
RTrtDeInf:
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". */
Fichier gramt.c
6/8
16/04/17 à 21:04
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' tout seul dans le GADV. */
RTrtNega1:
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. */
RTrtNega2:
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):
Fichier gramt.c
7/8
16/04/17 à 21:04
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))).
RTrtNomAdv:
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. */
RTrtSubstVb:
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’arrête pas à la particule MAU car les particules NA,
NAU et TAU y interviennent aussi.
*/
RPlur1:
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.
*/
RPlur2:
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
décomposition du groupe nominal est ici Nom + Adjectif.
*/
Fichier gramt.c
8/8
16/04/17 à 21:04
RInversionAdj:
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' herité 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).
/* Traitement du prefix RE- en lui remplacant l'adverbe 'faahou' (encore). */
RTrtPrefixRE :
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