-
Notifications
You must be signed in to change notification settings - Fork 0
/
apertium-frp.frp.rlx
611 lines (473 loc) · 25 KB
/
apertium-frp.frp.rlx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
DELIMITERS = "<.>" "<!>" "<?>" "<..>" "<...>" "<¶>" ;
SOFT-DELIMITERS = "<,>" ;
#OPTIONS += no-inline-sets no-inline-templates ;
OPTIONS += no-inline-templates ;
SUBREADINGS = LTR ; # Alternate, left-to-right (main reading on the left)
SETS
LIST BOS = >>> ;
LIST EOS = <<< ;
LIST Verb = vblex vbser vbhaver vbmod ;
LIST V = vblex ;
LIST Pron = prn ;
LIST Haver = vbhaver ;
LIST Ser = vbser ;
LIST Vbmod = vbmod ;
LIST Cm = cm ;
LIST Sent = sent ;
LIST Det = det ;
LIST Def = def ;
LIST Pos = pos ;
LIST Ord = ord ;
LIST Prep = pr ;
LIST Subj = subj ;
LIST Prop = np ;
LIST A = adj ;
LIST Adv = adv ;
LIST PreAdv = preadv ;
LIST PostAdv = postadv ;
LIST PreDet = predet ;
LIST CnjAdv = cnjadv ;
LIST CnjCoo = cnjcoo ;
LIST CnjSub = cnjsub ;
LIST Num = num ;
LIST Itg = itg ;
LIST Pro = pro ;
LIST Enc = enc ;
LIST Tn = tn ;
LIST Prn = prn ;
LIST Ref = ref ;
LIST N = n ;
LIST NP = np ;
LIST Top = top ;
LIST Ant = ant ;
LIST Cog = cog ;
SET Ant_Cog = Ant OR Cog ;
LIST Al = al ;
LIST Acr = acr ;
LIST Pref = pref ;
SET DetDef = (det def) ;
SET DetInd = (det ind) ;
LIST Fin = pri prs pii ifi pis cni imp ;
LIST Fin_non_Imp = pri prs pii ifi pis cni ;
LIST Ind = pri pii ifi ;
LIST Subjunc = prs pis ;
LIST Imper = imp ;
LIST Ifi = ifi ;
LIST Pri = pri ;
LIST Pii = pii ;
LIST Prs = prs ;
LIST Pis = pis ;
LIST Cni = cni ;
LIST Inf = inf ;
LIST Ger = ger ;
LIST PP = pp ;
LIST Rel = rel ;
LIST Interj = ij ;
SET Cnj_Rel = CnjCoo OR CnjSub OR CnjAdv OR Rel ;
LIST Masc_strict = m ;
LIST Fem_strict = f ;
LIST Masc = m mf ;
LIST Fem = f mf ;
LIST MascFem = mf ;
LIST Sg_strict = sg ;
LIST Pl_strict = pl ;
LIST Sg = sg sp ;
LIST Pl = pl sp ;
LIST SgPl = sp ;
SET MascSg = (m sg) OR (m sp) OR (mf sg) OR (mf sp) ;
SET MascPl = (m pl) OR (m sp) OR (mf pl) OR (mf sp) ;
SET FemSg = (f sg) OR (f sp) OR (mf sg) OR (mf sp) ;
SET FemPl = (f pl) OR (f sp) OR (mf pl) OR (mf sp) ;
SET NotMasc = Fem | MascFem ;
SET NotFem = Masc | MascFem ;
SET Gender = NotMasc | NotFem ;
SET NotSg = Pl | SgPl ;
SET NotPl = Sg | SgPl ;
SET Number = NotSg | NotPl ;
SET GenderNumber = MascSg | MascPl | FemSg | FemPl ;
LIST P1 = p1 ;
LIST P2 = p2 ;
LIST P3 = p3 ;
LIST Pers = p1 p2 p3 ;
LIST Sg1 = (p1 sg) ;
LIST Sg2 = (p2 sg) ;
LIST Sg3 = (p3 sg) ;
LIST Pl1 = (p1 pl) ;
LIST Pl2 = (p2 pl) ;
LIST Pl3 = (p3 pl) ;
LIST VSg1 = (vblex p1 sg) (vbser p1 sg) (vbhaver p1 sg) (vbmod p1 sg);
LIST VSg2 = (vblex p2 sg) (vbser p2 sg) (vbhaver p2 sg) (vbmod p2 sg);
LIST VSg3 = (vblex p3 sg) (vbser p3 sg) (vbhaver p3 sg) (vbmod p3 sg);
LIST VPl1 = (vblex p1 pl) (vbser p1 pl) (vbhaver p1 pl) (vbmod p1 pl);
LIST VPl2 = (vblex p2 pl) (vbser p2 pl) (vbhaver p2 pl) (vbmod p2 pl);
LIST VPl3 = (vblex p3 pl) (vbser p3 pl) (vbhaver p3 pl) (vbmod p3 pl);
SET CM = (cm) OR (lpar) OR (rpar) OR ("<;>") ;
LIST LPar = lpar ;
LIST PtExcl = "!" ;
LIST PtItg = "?" ;
SET Noun_Adj = N OR A ;
SET Noun_Adj_PP = N OR A OR PP ;
SET Adj_PP = A OR PP ;
SET Adv_PreAdv = Adv OR PreAdv ;
SET Cnj_Rel = CnjCoo OR CnjSub OR CnjAdv OR Rel ;
SET Cnj_Rel_End = BOS OR CnjCoo OR CnjSub OR CnjAdv OR Rel OR Inf ;
SET Cnj_Rel_End_NoInf = BOS OR CnjCoo OR CnjSub OR CnjAdv OR Rel ;
LIST S = "<s'>"i "<s’>"i;
LIST L = "<l'>"i "<l’>"i;
LIST LPre = "<'l>"i "<’l>"i;
LIST unknown = ("\\*.*"r) ;
LIST unknownMajIni = ("\\*[A-ZÀÁÈÉíÒÓÚÜÇ].*"r) ;
LIST MajIni = ("\\<[A-ZÀÁÈÉíÒÓÚÜÇ].*\\>"r) ;
LIST ChiffreRom = ("\\<[IVXLCM]*\\>"r) ;
# verbes Vblex que typiquement impliquen subjonctif
SET VerbSubj = ("vouloir") OR ("désirer") OR ("proposer") OR ("plaire") OR ("exiger") OR ("réclamer") OR ("demander") OR ("espérer") ;
# verbes Vblex que typiquement impliquen indicatif
SET VerbInd = ("dire") OR ("annoncer") OR ("penser") OR ("croire") ;
# verbes qui peuvent avoir un attribut
SET VerbAttr = Ser OR ("sembler") OR ("paraître") OR ("paraitre") ;
LIST Je = "je" ;
LIST Ye = "ye" ;
LIST Jo = "jo" ;
LIST Yo = "yo" ;
LIST Te = "te" ;
LIST Tu = "tu" ;
LIST Il = "il" ;
LIST Nos = "nos" ;
LIST Vos = "vos" ;
LIST On = "on" ;
LIST Oprn = "o" ;
LIST Se = "sè" ;
LIST Que = "que" ;
LIST Qui = "qui" ;
LIST Etre = "étre" ;
LIST Coment = "coment" ;
SET Barrera_Final_Estrict_SN = EOS OR (":") OR Prep OR Det OR CnjSub OR CnjAdv OR Rel OR Pro ;
SECTION
SELECT Pref IF (0 Pref) (0 (META:/-/r)) (1 N OR A OR Verb) ;
REMOVE Pref ;
# mots individuels
SELECT Masc_strict IF (0 LPre + Fem_strict) (1 Verb) (2 Noun_Adj + Masc_strict) ; # 'l est recho
SELECT Masc_strict IF (0 LPre + Fem_strict) (1 Verb) (2 Adv_PreAdv) (3 Noun_Adj + Masc_strict) ; # 'l est brâvament recho
SELECT Fem_strict IF (0 LPre + Masc_strict) (1 Verb) (2 Noun_Adj + Fem_strict) ; # 'l est recha
SELECT Fem_strict IF (0 LPre + Masc_strict) (1 Verb) (2 Adv_PreAdv) (3 Noun_Adj + Fem_strict) ; # 'l est brâvament recha
SELECT ("chamô") IF (0 ("chamôs")) (-1 Num) ;
SELECT ("chamô") IF (0 ("chamôs")) (-1 Det + MascPl OR A + MascPl) ;
SELECT ("chamô") IF (0 ("chamôs")) (1 A + MascPl) ;
SELECT ("chamô") IF (0 ("chamôs")) (1 PreAdv OR Adv) (2 A + MascPl) ;
SELECT ("cors") IF (0 ("cor") OR ("cors")) ;
SELECT Masc IF (0 ("cort")) (NOT -1 Fem_strict) (1 ("de")) (2 ("tènis")) ;
SELECT Fem IF (0 ("cort")) (NOT -1 Masc_strict) (NOT 1 Masc_strict) ;
REMOVE ("mê") IF (0 ("mês")) ;
SELECT A IF (0 ("dèrriér") + &&GenderNumber) (1 N + &&GenderNumber) ; # dèrriér pouent
SELECT Adv IF (-1 Verb + Pers) (NOT -1 A OR Det) (0 ("pouent")) ;
SELECT Prep IF (0 ("devant")) (1 Det + &&GenderNumber) (2 N + &&GenderNumber) ; # devant la mêson
SELECT Prep IF (0 ("devant")) (1 Det + &&GenderNumber) (2 A + &&GenderNumber) ; # devant la granta mêson
SELECT Prep IF (0 ("devant")) (1 Num + &&Gender) (2 N + &&Gender + Pl ) ;
SELECT Prep IF (0 ("devant")) (1 Num + &&Gender) (2 A + &&Gender + Pl ) ;
SELECT Prep IF (0 ("devant")) (1 ("J.C.")) ;
REMOVE Top IF (-1 BOS OR Sent) (0 ("en")) ;
REMOVE Top IF (-1 BOS OR Sent) (0 ("nion")) ;
REMOVE Cog IF (-1 BOS OR Sent) (0 ("mas")) ;
REMOVE Cog IF (-1 BOS OR Sent) (0 ("pou")) ;
SELECT N IF (-1 Def + FemSg) (0 ("<Mar>")) ;
SELECT Ser IF (0 ("savêr")) ; # FIXME
SELECT Prep IF (0 ("tant que")) (-1 ("alar")) ;
SELECT Prep IF (0 ("dèrriér")) (1C Prn) ; # dèrriér lor
SELECT Prep IF (0 ("dèrriér")) (1 Det + &&GenderNumber) (2 Noun_Adj + &&GenderNumber) ; # dèrriér lor hotâl
SELECT Prep IF (0 ("dèrriér")) (1 Det + &&GenderNumber) (2 Adv_PreAdv) (3 Noun_Adj + &&GenderNumber) ;
SELECT Prep IF (0 ("devant")) (1C Prn) (NOT 2 Inf) ; # devant lor
SELECT Prep IF (0 ("devant")) (1 Det + &&GenderNumber) (2 Noun_Adj + &&GenderNumber) ; # devant lor hotâl
SELECT Prep IF (0 ("devant")) (1 Det + &&GenderNumber) (2 Adv_PreAdv) (3 Noun_Adj + &&GenderNumber) ;
SELECT ("lui") IF (0 ("il")) (-1C Prep) ;
SELECT N IF (-1 BOS OR Sent OR (lpar)) (0 ("fèna")) (1 CM) ;
REMOVE Itg IF (0 Se) (1 Verb + P3) ;
SELECT Pro IF (0 ("nen")) (1 unknown) ;
SELECT A IF (0 ("quint") + MajIni + &&GenderNumber) (-1 Ant OR unknownMajIni + &&GenderNumber) ;
REMOVE Adv IF (0 ("devant")) (1 Det OR NP OR Prn) ;
REMOVE N IF (0 ("devant")) (1 Det OR NP OR Prn) ;
SELECT Prn IF (-1 ("de")) (0 ("ren")) ; # pouer de ren
SELECT Prn IF (0 ("ren")) (1 PP) ; # il at ren bu et ren megiê
SELECT Prn IF (0 ("ren")) (1 Inf) ; # sen ren vêre
SELECT Prn IF (-1 Ser + &&Number) (0 ("ren")) (1 PP + &&Number) ;
SELECT Prn IF (-1 Verb + Pers) (NOT -1 A OR Det) (0 ("ren")) ;
SELECT Prn IF (-2 Verb + Pers) (NOT -1 A OR Det) (0 ("ren")) ;
REMOVE A IF (-1 Det + &&GenderNumber) (0 ("fin") + N + &&GenderNumber) ; # a la fin Diô at acutâ lor preyére
SELECT Sg IF (NOT -1/* Pl_strict OR N) (0 ("Chablès")) (NOT 1 Pl_strict) ;
SELECT Pl IF (-1/* Pl_strict) (0 ("Chablès")) ;
# vbhaver / vblex
SELECT Haver IF (0 Haver) (1 Adv OR CnjAdv) (2 PP) ; # at pas chantâ
SELECT Haver IF (0 Haver) (1 Adv OR CnjAdv) (2 Adv OR CnjAdv) (3 PP) ;
# étre vbser / vblex (=appartenir)
SELECT V IF (0 Etre) (1 ("a")) (NOT 2 Top OR unknownMajIni) ; # ére ux Angliès
SELECT V IF (0 Etre) (1 Adv) (2 ("a")) (NOT 3 Top OR unknownMajIni) ; # ére pas ux Angliès
SELECT V IF (0 Etre) (1 Adv) (2 Adv) (3 ("a")) (NOT 4 Top OR unknownMajIni) ; # ére pas alor ux Angliès
REMOVE V IF (0 Etre) ;
# cnjsub / rel
REMOVE CnjSub IF (-1C Det OR N OR A OR Tn OR Pro OR NP OR Cm) ;
REMOVE CnjSub IF (-1 PP LINK NOT -1 Haver OR Ser OR Adv ) ;
REMOVE CnjSub IF (-1C CnjCoo) (NOT 1 Tn) ;
# itg / rel, adj, cnjadv
SELECT Itg IF (-1 BOS OR Sent) (0C Itg OR Rel OR A) ; # Qui ; Quint mâl at-il fêt ?
SELECT Itg IF (-2 BOS OR Sent) (-1 LPar) (0C Itg OR Rel OR A) ; # « Quint mâl at-il fêt ?
SELECT Itg IF (-2 BOS OR Sent) (-1 Prep) (0C Itg OR Rel OR A) ; # A qui s'adresse
SELECT Itg IF (-1 BOS OR Sent) (0 Coment) (1* PtItg BARRIER (":")) ; # Coment y at-o donc du loly asse-ben ?
SELECT Itg IF (-2 BOS OR Sent) (-1 LPar) (0 Coment) (1* PtItg BARRIER (":")) ; # « Coment
SELECT Itg IF (-1C Verb LINK NOT 0 PP) (0C Itg OR Rel OR A) ; # je demando qui
SELECT Itg IF (-2C Verb LINK NOT 0 PP) (-1 Prep) (0C Itg OR Rel OR A) ; # je demando avouéc qui
SELECT Itg IF (-2C Verb LINK NOT 0 PP) (-1 Adv) (0C Itg OR Rel OR A) ; # je demando pas qui
SELECT Itg IF (-3C Verb LINK NOT 0 PP) (-2 Adv) (-1 Prep) (0C Itg OR Rel OR A) ; # je demando pas avouéc qui
# adv/ preadv
REMOVE PreAdv IF (NOT 1 A OR PP OR Adv) ;
# adv / postadv
SELECT PostAdv IF (-1 (META:/-/r)) ;
REMOVE PostAdv IF (NOT -1 (META:/-/r)) ;
# adv / pre
REMOVE Adv IF (0 ("avouéc")) (1 Det OR ("de")) ; # avouéc sè sont dèfendus brâvament avouéc lor rê
# det / prn
SELECT Prn (0 Det) (1 ("que")) ;
SELECT Det + &&GenderNumber IF (0 Tn OR Pro OR Det + &&GenderNumber) (1 N + &&GenderNumber) (2 A + &&GenderNumber) ;
SELECT Det + &&GenderNumber IF (0 Tn OR Pro OR Det + &&GenderNumber) (1 N + &&GenderNumber) (2 Adv_PreAdv) (3 A + &&GenderNumber) ;
SELECT Det + &&GenderNumber IF (0 Tn OR Pro OR Det + &&GenderNumber) (1 A + &&GenderNumber) (2 N + &&GenderNumber) ;
SELECT Det + &&GenderNumber IF (0 Tn OR Pro OR Det + &&GenderNumber) (1 Adv_PreAdv) (2 A + &&GenderNumber) (2 N + &&GenderNumber) ;
SELECT Det + &&GenderNumber IF (0 Tn OR Pro OR Det + &&GenderNumber) (1C Noun_Adj + &&GenderNumber) ; # lo hôt
SELECT Det + &&GenderNumber IF (-1 PreDet + &&GenderNumber) (0 Tn OR Pro OR Det + &&GenderNumber) (1 N + &&GenderNumber) ; # tota l’assemblâ
SELECT Det + &&GenderNumber IF (NOT -1 Tn) (0 Tn OR Pro OR Det + &&GenderNumber) (1 N + &&GenderNumber) (NOT 0 S) ; # ceti bruit ; l'hotâl ; je lo vôl
SELECT Det + &&GenderNumber IF (NOT -1 Tn) (0 Tn OR Pro OR Det + &&GenderNumber) (1 NP + &&GenderNumber) ;
SELECT Det + &&GenderNumber IF (0 Tn OR Pro OR Det + &&GenderNumber) (1 N + &&GenderNumber LINK NOT 0 Verb + Pers) ; # châcun son diô
SELECT Det + &&GenderNumber IF (0 Tn OR Pro OR Det + &&GenderNumber) (1 NP + &&GenderNumber LINK NOT 0 Verb + Pers) ;
SELECT Det + &&GenderNumber IF (-1 Ant + &&GenderNumber) (0 Tn OR Pro OR Det + &&GenderNumber) (1 Noun_Adj + &&GenderNumber + MajIni) ; # Filipo lo Bél
SELECT Det IF (0 L) (1 unknown) ;
SELECT Prn IF (0 Det) (1 unknown) ;
REMOVE Det IF (0 Prn) (NOT 1 A OR N OR Adv OR PreAdv OR Num) ;
REMOVE Det IF (0 Prn) (1C Adv OR PreAdv) (NOT 1 A) ;
#REMOVE Det IF (-1 Prep) (0 Prn) (0 Det + &&GenderNumber) (NOT 1 PreAdv OR Noun_Adj + &&GenderNumber) ; # avouéc lor por sè rendre
REMOVE Det IF (-1 Prep) (0 Prn) (0 Det) (NOT 1 PreAdv OR Noun_Adj OR Num) ; # avouéc lor por sè rendre
# pro / enc
SELECT Enc IF (-1 (META:/-/r)) (0 ("mè") OR ("tè")) ;
REMOVE Enc IF (NOT -1 (META:/-/r)) (0 ("mè") OR ("tè")) ;
# tn / pro
SELECT Tn IF (0 ("mè")) (1 ("je") OR ("ye")) ; # mè je vos dio
SELECT Tn IF (0 ("tè")) (1 ("te")) ;
SELECT Tn + ("lui") IF (0 ("lui") + &&GenderNumber) (1 ("il") + &&GenderNumber) ;
REMOVE Pro IF (-1 Prep) (0 Pro) (NOT 1 Inf OR Ger OR Pro) ; # por tè / por tè chantar / en sè jetant
REMOVE Tn IF (-1 Tn) (0 Tn) (1 Verb + Pers) ; # je tè chanto
REMOVE Tn IF (0C Pro OR Tn) (1 unknown) ; # tè xxxx
SELECT Tn IF (NOT -1 Tn) (0 Tn + Sg1) (1 Verb + Sg1) ;
SELECT Tn IF (NOT -1 Tn) (0 Tn + Sg2) (1 Verb + Sg2) ;
SELECT Tn OR Pro IF (NOT -1 Tn) (0 Tn + Sg3) (1 Verb + Sg3) ; # Louis XIV l’at fêt
SELECT Tn IF (NOT -1 Tn) (0 Tn + Pl1) (1 Verb + Pl1) ; # nos ens avu
SELECT Tn IF (NOT -1 Tn) (0 Tn + Pl2) (1 Verb + Pl2) ; # vos éd avu
SELECT Tn IF (NOT -1 Tn) (0 Tn + Pl3) (1 Verb + Pl3) ;
SELECT Tn IF (0 Tn + Sg1) (1 Pro) (2 Verb + Sg1) ;
SELECT Tn IF (0 Tn + Sg2) (1 Pro) (2 Verb + Sg2) ;
SELECT Tn IF (0 Tn + Sg3) (1 Pro) (2 Verb + Sg3) ;
SELECT Tn IF (0 Tn + Pl1) (1 Pro) (2 Verb + Pl1) ; # nos lor ens chantâ
SELECT Tn IF (0 Tn + Pl2) (1 Pro) (2 Verb + Pl2) ; # vos lor éd chantâ
SELECT Tn IF (0 Tn + Pl3) (1 Pro) (2 Verb + Pl3) ;
SELECT Tn + Sg1 IF (0 Tn + Sg1) (1 CM) (-1 CM) ;
SELECT Tn + Sg2 IF (0 Tn + Sg2) (1 CM) (-1 CM) ;
SELECT Tn + Sg3 IF (0 Tn + Sg3) (1 CM) (-1 CM) ;
SELECT Tn + Pl1 IF (0 Tn + Pl1) (1 CM) (-1 CM) ;
SELECT Tn + Pl2 IF (0 Tn + Pl2) (1 CM) (-1 CM) ;
SELECT Tn + Pl3 IF (0 Tn + Pl3) (1 CM) (-1 CM) ;
REMOVE Tn + Sg1 IF (0 Tn + Sg1) (NOT 1 Verb + Sg1) (NOT -1 Verb + Sg1) (NOT -1 Prep) ;
REMOVE Tn + Sg2 IF (0 Tn + Sg2) (NOT 1 Verb + Sg2) (NOT -1 Verb + Sg2) (NOT -1 Prep) ; # t'é trovâ
REMOVE Tn + Sg3 IF (0 Tn + Sg3) (NOT 1 Verb + Sg3) (NOT -1 Verb + Sg3) (NOT -1 Prep) ;
REMOVE Tn + Pl1 IF (0 Tn + Pl1) (NOT 1 Verb + Pl1) (NOT -1 Verb + Pl1) (NOT -1 Prep) ;
REMOVE Tn + Pl2 IF (0 Tn + Pl2) (NOT 1 Verb + Pl2) (NOT -1 Verb + Pl2) (NOT -1 Prep) ;
REMOVE Tn + Pl3 IF (0 Tn + Pl3) (NOT 1 Verb + Pl3) (NOT -1 Verb + Pl3) (NOT -1 Prep) ;
SELECT Pro IF (-1 Prep) (0 Pro) (1 Inf OR Ger) ; # por lyé dére
SELECT Pro IF (-1 Prep) (0 Pro) (1 Pro) (2 Inf OR Ger) ; # por sè nen fâre
SELECT Pro IF (-2 Prep) (-1 Pro) (0 Pro) (1 Inf OR Ger) ; # por sè nen fâre
SELECT Ref IF (0 ("sè")) (1 Ser + P3) (2 PP) ; # sè sont disputâ (sic)
SELECT Ref IF (0 ("sè")) (1 Ser + P3) (2 Adv_PreAdv) (3 PP) ;
SELECT Prep IF (0 ("en")) (1 Ger) ; # en jetant
SELECT Prep IF (0 ("en")) (1 Pro) (2 Ger) ; # en sè jetant
SELECT Tn IF (-1 Prep) (0 Pro) (1 Verb + Pers) ;
SELECT Tn IF (-1 Prep) (0 Pro) (1 Pro) (2 Verb + Pers) ; # permié lor y avêt
SELECT Tn OR Pro IF (0 Pro) (NOT 1 Inf OR Ger) ; # Louis XIV l’at fêt / VERIFY
SELECT Tn IF (-1 VPl1) (-1 (META:/-/r)) (0 Nos) ;
SELECT Tn IF (NOT -1 Noun_Adj) (0 Nos) (1 VPl1);
SELECT Tn IF (NOT -1 Noun_Adj) (0 Nos) (1 Pro) (2 VPl1);
SELECT Tn IF (0 Nos) (1 Pro) (2 Pro) (2 VPl1);
SELECT Tn IF (-1 VPl2) (-1 (META:/-/r)) (0 Vos) ;
SELECT Tn IF (NOT -1 Noun_Adj) (0 Vos) (1 VPl2);
SELECT Tn IF (NOT -1 Noun_Adj) (0 Vos) (1 Pro) (2 VPl2);
SELECT Tn IF (0 Vos) (1 Pro) (2 Pro) (2 VPl2);
# adv / adj
SELECT Adv IF (-1C Verb) (0 A) (1C Det) ; # amâvont galyârd la guèrra
SELECT Adv OR PreAdv IF (-1 Haver) (0 A OR N) (1 PP) ;
REMOVE Adv (-1 Det + &&GenderNumber) (0 A + &&GenderNumber) (1 N + &&GenderNumber) ; # la veré science
# adv / n
SELECT Adv IF (-1 BOS OR Sent) (0 Noun_Adj) (1* P1 OR P2 OR P3) ; # ; pués je tè beniré
# adj / ger
REMOVE Ger IF (-1 Ser + &&Number) (0 A + &&Number) ; # il ére valyent
REMOVE Ger IF (-2 Ser + &&Number) (-1 Adv_PreAdv) (0 A + &&Number) ; # il ére galyârd valyent
REMOVE Ger IF (-1C Adv_PreAdv OR ("galyârd")) (0 A + &&Number) ; # il ére galyârd valyent
REMOVE Ger IF (-1C Noun_Adj + &&GenderNumber) (0 Noun_Adj + &&GenderNumber) ; # un rê violent
REMOVE Ger IF (-3 N + &&GenderNumber) (-2 A + &&GenderNumber) (-1 CnjCoo) (0 A + &&GenderNumber) ; # un rê malin et violent
# n / verb
SELECT N IF (-1 ("dèrriér") + &&GenderNumber) (0 N + &&GenderNumber) ; # dèrriér pouent
SELECT N IF (-1 ("avant-dèrriér") + &&GenderNumber) (0 N + &&GenderNumber) ; # avant-dèrriér pouent
REMOVE Verb IF (-2 BOS OR Sent) (-1 Det + &&GenderNumber) (0 N + &&GenderNumber) ; # La fuita en Ègipta
REMOVE Verb IF (-2 PreDet + &&GenderNumber) (-1 Det + &&GenderNumber) (0 N + &&GenderNumber) ; # tota l’assemblâ
REMOVE Verb IF (-2 Prep) (-1 Det + &&GenderNumber) (0 N + &&GenderNumber) ; # la téta de ses armâs
REMOVE Verb IF (-1 Prep) (-1/* Det) (0 N) ; # des armâs
REMOVE Verb IF (-2 Verb) (-1 Det + &&GenderNumber) (0 N + &&GenderNumber) ; # comandâvont ses armâs
REMOVE Fin_non_Imp IF (-1C BOS OR Prep) (0 N) (NOT 0 (META:/-/r)) ;
## Groupe A, Taille 48, Série 1
## Pense-t-il
# n / adj
SELECT Ord IF (0 N + &&GenderNumber) (1 N + &&GenderNumber) ;
SELECT N IF (-1 Ord + &&GenderNumber) (1 N + &&GenderNumber) ;
SELECT A IF (-2 Det + &&GenderNumber) (-1 ("més") OR ("ples") OR ("peca") OR ("muens")) (0 A + &&GenderNumber) ; # lo ples fôrt
SELECT A IF (-2 Noun_Adj + &&GenderNumber) (-1 ("més") OR ("ples") OR ("peca") OR ("muens")) (0 A + &&GenderNumber) ; # un poplo ples fôrt
REMOVE A IF (-2 Verb) (-1 Det + &&GenderNumber) (0 N + &&GenderNumber) (1 Prep OR Rel OR CnjAdv) ;
REMOVE N (-1 Det + &&GenderNumber) (0 ("joueno") + &&GenderNumber) (1 Ant + &&GenderNumber) ; # lo joueno Jian
REMOVE N (-1 Det + &&GenderNumber) (0 ("joueno") + &&GenderNumber) (1 Cog + &&GenderNumber) ;
REMOVE N (-1 Det + &&GenderNumber) (0 ("mèchient") + &&GenderNumber) (1 Ant + &&GenderNumber) ;
REMOVE N (-1 Det + &&GenderNumber) (0 ("mèchient") + &&GenderNumber) (1 Cog + &&GenderNumber) ;
REMOVE A OR PP IF (NOT -2 Coment) (-1 Det + &&GenderNumber) (0 Noun_Adj_PP + &&GenderNumber LINK 0 N) (1 Barrera_Final_Estrict_SN OR Ant_Cog OR CM) ;
REMOVE A OR PP IF (NOT -3 Coment) (-2 Det + &&GenderNumber) (-1 Num OR A LINK NOT 0 N) (0 Noun_Adj_PP + &&GenderNumber LINK 0 N OR NP) (1 Barrera_Final_Estrict_SN OR Ant_Cog OR CM) ;
REMOVE A OR PP IF (NOT -2 Coment) (-1 Det + &&GenderNumber) (0 Noun_Adj_PP + &&GenderNumber LINK 0 N OR NP) (1C Verb) ;
REMOVE A OR PP IF (NOT -3 Coment) (-2 Det + &&GenderNumber) (-1 Num OR A LINK NOT 0 N) (0 Noun_Adj_PP + &&GenderNumber LINK 0 N OR NP) (1C Verb) ;
REMOVE A OR PP IF (NOT -2 Coment) (-1 Det + &&GenderNumber) (0 Noun_Adj_PP + &&GenderNumber LINK 0 N OR NP) (1 Ser) ;
REMOVE A OR PP IF (NOT -3 Coment) (-2 Det + &&GenderNumber) (-1 Num OR A LINK NOT 0 N) (0 Noun_Adj_PP + &&GenderNumber LINK 0 N OR NP) (1 Ser) ;
REMOVE A OR PP IF (NOT -2 Coment) (-1 Det + &&GenderNumber) (0 Noun_Adj_PP + &&GenderNumber LINK 0 N OR NP) (1 CM OR CnjCoo) (2 Barrera_Final_Estrict_SN) ;
REMOVE A OR PP IF (NOT -3 Coment) (-2 Det + &&GenderNumber) (-1 Num OR A LINK NOT 0 N) (0 Noun_Adj_PP + &&GenderNumber LINK 0 N OR NP) (1 CM OR CnjCoo) (2 Barrera_Final_Estrict_SN) ;
REMOVE A OR PP IF (NOT -2 Coment) (-1 Num) (0 Noun_Adj_PP LINK 0 N OR NP) (1 CM OR CnjCoo) (2 Barrera_Final_Estrict_SN) ;
REMOVE A OR PP IF (-2 Coment) (-1 Det + &&GenderNumber) (0 Noun_Adj_PP + &&GenderNumber LINK 0 N OR NP) (1 Barrera_Final_Estrict_SN OR Ant_Cog) (NOT -1 DetDef) ;
REMOVE A OR PP IF (-2 Coment) (-1 Det + &&GenderNumber) (0 Noun_Adj_PP + &&GenderNumber LINK 0 N OR NP) (1C Verb) (NOT -1 DetDef) ;
REMOVE A OR PP IF (-2 Coment) (-1 Det + &&GenderNumber) (0 Noun_Adj_PP + &&GenderNumber LINK 0 N OR NP) (1 Ser) (NOT -1 DetDef) ;
REMOVE A OR PP IF (-2 Coment) (-1 Det + &&GenderNumber) (0 Noun_Adj_PP + &&GenderNumber LINK 0 N OR NP) (1 CM OR CnjCoo) (2 Barrera_Final_Estrict_SN) (NOT -1 DetDef) ;
REMOVE A OR PP IF (NOT -2 Coment) (-1 Det + &&GenderNumber) (0 Noun_Adj_PP + &&GenderNumber LINK 0 N OR NP) (1 Adv) (2 Adj_PP + &&GenderNumber) ;
SELECT N IF (-1C Prep) (0C Noun_Adj_PP) (1C CnjCoo OR CM) ;
SELECT N IF (-1C Prep OR BOS) (0C Noun_Adj_PP) (1C Noun_Adj_PP) (NOT 0 Ord) (NOT 1C N) ;
SELECT N IF (-1C Prep OR BOS) (0C Noun_Adj_PP) (1 EOS) ;
# mots individuels (mais après la selection n/adj)
REMOVE ("franc") IF (0C N) (0 ("Franc_poplo")) ;
REMOVE ("franc") IF (0C A) (0 ("franc_poplo")) ;
SELECT N IF (-1 Num) (0 ("franc")) ;
# n / np
SELECT Ant IF (0 Ant + &&GenderNumber) (1 ("Iiér") + &&GenderNumber) ; # Françouès Iiér
SELECT Ant IF (0 Ant) (1 ChiffreRom) ; # Françouès II
REMOVE Ant IF (-1 ("en")) (0 Ant OR Cog) ;
REMOVE NP IF (-1 Det + &&GenderNumber) (0 Noun_Adj + &&GenderNumber) ;
REMOVE NP IF (-1/* Det + &&GenderNumber) (0 Noun_Adj + &&GenderNumber) ; # Jèsus u Jardin des Oliviérs
REMOVE NP IF (-1 BOS OR Sent) (NOT 1 NP OR Adv OR P3) ;
SELECT NP IF (0 N OR NP) (1 NP) (0 (META:/-/r)) (NOT 0 ("bâs") OR ("hôt") OR ("hiôt")) ;
# Pierre-Michel
SELECT Ant IF (0 Ant) (1C Ant) (0 (META:/-/r)) ;
# Jean-René
SELECT Ant IF (-1C Ant) (0 Ant) (-1 (META:/-/r)) ;
SELECT Cog IF (0 Cog) (1C Cog) (0 (META:/-/r)) ;
SELECT Cog IF (-1C Cog) (0 Cog) (-1 (META:/-/r)) ;
SELECT Cog IF (0 Cog OR Ant) (-1C Ant) ;
SELECT Ant_Cog IF (0 Cog OR Ant) (1C Cog) ;
SELECT Ant IF (0C Ant OR Cog) (1 Ant) (0 (META:/-/r)) ;
# Charles-Michel
SELECT Masc_strict IF (0 ("Camille")) (1 ("Pissarro")) ;
SELECT Cog IF (-1 ("Édouard")) (0 ("Philippe")) ;
SELECT Ant IF (0 ("Édouard")) (1 ("Philippe")) ;
SELECT Top IF (-2C Ant) (-1 ("<de>")) (0C Cog OR Ant OR Top) ;
SELECT Ant IF (0C Cog OR Ant OR Top) (1 ("<de>")) (2C Top) ; # Maurice de Saxe
REMOVE Top IF (0 Cog OR Ant OR Top) (1 unknown) (NOT -1 ("de")) ;
SELECT Ant IF (NOT -1 Cog OR Ant) (0C Cog OR Ant) (1 unknown) ;
## Léon Verguet
REMOVE (cog) IF (0C NP) (0 (cog)) (0 (top)) (NOT 1 (ant) OR (cog)) (-1 BOS); #Orihuela, Vilallonga
REMOVE Al IF (-1 Ant OR Cog) (0 Ant OR Cog) ;
REMOVE Top IF (-1 Ant OR Cog) (0 Ant OR Cog) ;
REMOVE Al IF (0 Ant OR Cog) (1 Ant OR Cog) ;
REMOVE Top IF (0 Ant OR Cog) (1 Ant OR Cog) ;
SELECT Top IF (-2 ("vela") OR ("vila") OR ("viala") OR ("aèrogâra") OR ("gâra") OR ("stacion") OR ("pôrt")
OR ("royômo") OR ("principauté") OR ("grant-ducât") OR ("grand-ducât") OR ("ducât") OR ("marquisat") OR ("comtât") OR ("baronnie") OR ("sègnorerie") OR ("archèvèchiê") OR ("archèvèco") OR ("èvèchiê") OR ("èvèco")) (-1 ("de")) (0 Cog OR Ant) ;
SELECT NP IF (NOT -1 BOS OR Sent) (0 MajIni) ; # VERIFY (il faut des tas plus de règles)
#
# Verbos
#
# personne
SELECT P1 IF (-1 Je OR Ye) (0 VSg1);
## Je veux
SELECT P1 IF (0 VSg1) (0 (META:/-/r)) (1 Jo OR Yo) ;
## Veux-je
SELECT P1 IF (-2 Je OR Ye) (-1 Pro) (0 VSg1);
## Je lui veux
SELECT P1 IF (-3 Je OR Ye) (-2 Pro) (-1 Pro) (0 VSg1);
## Je lui en veux
REMOVE P1 + Sg IF (NOT -1* Je OR Ye) (0 Verb + P1 + Sg) ;
SELECT P2 IF (-1 Te) (0 VSg2);
## Tu veux
SELECT P2 IF (0 VSg2) (0 (META:/-/r)) (1 Tu) ;
## Veux-tu
SELECT P2 IF (1 Te) (0 VSg2);
## Veux-tu
SELECT P2 IF (-2 Te) (-1 Pro) (0 VSg2);
## Tu lui veux
SELECT P2 IF (-3 Te) (-2 Pro) (-1 Pro) (0 VSg2);
## Tu lui en veux
REMOVE P2 + Sg IF (NOT -1* Te) (0 Verb + P2 + Sg) (NOT 0 Verb + P2 + Sg + Imper) ;
SELECT P3 IF (-1 Il + Sg OR On) (0 VSg3);
## Elle parle
SELECT P3 IF (0 VSg3) (0 (META:/-/r)) (1 Il + Sg OR On) ;
## Dit-il
SELECT P3 IF (1 Il + Sg OR On) (0 VSg3);
## Parle-t-elle
SELECT P3 IF (-2 Il + Sg OR On) (-1 Pro) (0 VSg3);
## Elle lui parle
SELECT P3 IF (-3 Il + Sg OR On) (-2 Pro) (-1 Pro) (0 VSg3);
## Elle lui en parle
SELECT P3 IF (-1 Il + Pl) (0 VPl3);
## Elle parle
SELECT P3 IF (0 VPl3) (0 (META:/-/r)) (1 Il + Pl) ;
## Dit-il
SELECT P3 IF (1 Il + Pl) (0 VPl3);
## Parle-t-elle
SELECT P3 IF (-2 Il + Pl) (-1 Pro) (0 VPl3);
## Elle lui parle
SELECT P3 IF (-3 Il + Pl) (-2 Pro) (-1 Pro) (0 VPl3);
## Elle lui en parle
SELECT P1 IF (-1 Nos) (0 VPl1);
## Nos sens
## Nos serens
SELECT P1 IF (0 VPl1) (0 (META:/-/r)) (1 Nos) ;
SELECT P1 IF (-2 Nos) (-1 Pro) (0 VPl1);
SELECT P1 IF (-3 Nos) (-2 Pro) (-1 Pro) (0 VPl1);
SELECT P2 IF (-1 Vos) (0 VPl2);
SELECT P2 IF (0 VPl2) (0 (META:/-/r)) (1 Vos) ;
SELECT P2 IF (-2 Vos) (-1 Pro) (0 VPl2);
SELECT P2 IF (-3 Vos) (-2 Pro) (-1 Pro) (0 VPl2);
REMOVE P3 IF (0 Oprn) (1 Ser) ; # o est
REMOVE P3 IF (0 Oprn) (1 Haver) (2 Ser + PP) ;
REMOVE P3 IF (0 Oprn) (1 Haver) (2 Adv) (3 Ser + PP) ;
REMOVE P3 IF (0 Oprn) (1 Haver) (2 Adv) (3 Adv) (4 Ser + PP) ;
REMOVE P3 IF (-1 Ser) (-1 (META:/-/r)) (0 Oprn) ;
SELECT P3 IF (-1 Verb + P3 + Sg) (-1 (META:/-/r)) (0 Oprn) ; # Y at-o de la place ?
SELECT P3 IF (0 Oprn) (1 Verb + P3 + Sg) ;
# temps verbaux
REMOVE Imper IF (NOT -1 BOS OR Sent OR (lpar)) (NOT 1* PtExcl) ;
SELECT Imper IF (-1 BOS OR Sent OR (lpar)) (0 ("<Va>")) ;
REMOVE Ind OR Subjunc IF (-1 BOS OR Sent OR (lpar)) (0 Imper) ; # « Salye de ton payis
#REMOVE Imper IF (-1 Tn) (NOT -1 Lui) ;
#REMOVE Imper IF (-2 Tn) (NOT -2 Lui) (-1 Adv) ;
REMOVE Imper IF (-1 Ant OR Cog OR unknown) (0 P3) ;
REMOVE Imper IF (-2 Ant OR Cog OR unknown) (-1 Adv OR Pro) (0 P3) ;
REMOVE Imper IF (-3 Ant OR Cog OR unknown) (-2 Adv) (-1 Pro) (0 P3) ;
SELECT Imper IF (-1 BOS) (1 PtExcl) ;
#SELECT Imper IF (-2 BOS) (-1 Ne) (1 Adv OR Rien) (2 PtExcl) ;
#SELECT Imper IF (-3 BOS) (-2 Ne) (-1 Pro) (1 Adv OR Rien) (2 PtExcl) ;
REMOVE Pers IF (-1C Prep) ;
REMOVE Subjunc (*-1 Que BARRIER Cnj_Rel_End) (*-1 VerbInd LINK NOT 1 Inf) (0C Verb) (0 Pri) ;
REMOVE Subjunc (NOT -1* Que) (0C Verb) (0 Pri) ; # VERIFY
# dormét pri/ifi
# il faut regarder aussi qu'est-ce qui ce passe dans la frase antérieure ou postérieure (pri ou ifi?)
SET MarcaPasado = ("ayer") OR ("anteayer");
LIST LemmaPasado = (".*pasado.*"r) ;
REMOVE:presente_pasado1 (pri) IF (0 (pri)) (0 (ifi)) (-1*/* MarcaPasado OR LemmaPasado OR ("pasado") BARRIER Verb OR Cnj_Rel_End); #El año pasado creamos
REMOVE:presente_pasado2 (pri) IF (0 (pri)) (0 (ifi)) (1 MarcaPasado OR LemmaPasado) (NOT 1 ("pasado"));
REMOVE:presente_pasado0 (ifi) IF (0 (pri)) (0 (ifi));
# Resources:
# http://visl.sdu.dk/cg3.html
# http://groups.google.com/group/constraint-grammar
# http://kevindonnelly.org.uk/2010/05/constraint-grammar-tutorial/
# http://wiki.apertium.org/wiki/Constraint_Grammar
# http://wiki.apertium.org/wiki/Apertium_and_Constraint_Grammar