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
|
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
|
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
-
-
+
+
+
+
+
-
+
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
|
//// Grammalecte - Compiled regular expressions
var cregex = {
///// Lemme
const zLemma = new RegExp("^>([a-zà-öø-ÿ0-9Ā-ʯ][a-zà-öø-ÿ0-9Ā-ʯ-]+)");
///// Lemme
_zLemma: new RegExp(">([a-zà-öø-ÿ0-9Ā-ʯ][a-zà-öø-ÿ0-9Ā-ʯ-]+)"),
///// Masculin / féminin / singulier / pluriel
const zGender = new RegExp(":[mfe]");
const zNumber = new RegExp(":[spi]");
///// Masculin / féminin / singulier / pluriel
_zGender: new RegExp(":[mfe]"),
_zNumber: new RegExp(":[spi]"),
///// Nom et adjectif
const zNA = new RegExp(":[NA]");
///// Nom et adjectif
_zNA: new RegExp(":[NA]"),
//// nombre
const zNAs = new RegExp(":[NA].*:s");
const zNAp = new RegExp(":[NA].*:p");
const zNAi = new RegExp(":[NA].*:i");
const zNAsi = new RegExp(":[NA].*:[si]");
const zNApi = new RegExp(":[NA].*:[pi]");
//// nombre
_zNAs: new RegExp(":[NA].*:s"),
_zNAp: new RegExp(":[NA].*:p"),
_zNAi: new RegExp(":[NA].*:i"),
_zNAsi: new RegExp(":[NA].*:[si]"),
_zNApi: new RegExp(":[NA].*:[pi]"),
//// genre
const zNAm = new RegExp(":[NA].*:m");
const zNAf = new RegExp(":[NA].*:f");
const zNAe = new RegExp(":[NA].*:e");
const zNAme = new RegExp(":[NA].*:[me]");
const zNAfe = new RegExp(":[NA].*:[fe]");
//// genre
_zNAm: new RegExp(":[NA].*:m"),
_zNAf: new RegExp(":[NA].*:f"),
_zNAe: new RegExp(":[NA].*:e"),
_zNAme: new RegExp(":[NA].*:[me]"),
_zNAfe: new RegExp(":[NA].*:[fe]"),
//// nombre et genre
// singuilier
const zNAms = new RegExp(":[NA].*:m.*:s");
const zNAfs = new RegExp(":[NA].*:f.*:s");
const zNAes = new RegExp(":[NA].*:e.*:s");
const zNAmes = new RegExp(":[NA].*:[me].*:s");
const zNAfes = new RegExp(":[NA].*:[fe].*:s");
//// nombre et genre
// singuilier
_zNAms: new RegExp(":[NA].*:m.*:s"),
_zNAfs: new RegExp(":[NA].*:f.*:s"),
_zNAes: new RegExp(":[NA].*:e.*:s"),
_zNAmes: new RegExp(":[NA].*:[me].*:s"),
_zNAfes: new RegExp(":[NA].*:[fe].*:s"),
// singulier et invariable
const zNAmsi = new RegExp(":[NA].*:m.*:[si]");
const zNAfsi = new RegExp(":[NA].*:f.*:[si]");
const zNAesi = new RegExp(":[NA].*:e.*:[si]");
const zNAmesi = new RegExp(":[NA].*:[me].*:[si]");
const zNAfesi = new RegExp(":[NA].*:[fe].*:[si]");
// singulier et invariable
_zNAmsi: new RegExp(":[NA].*:m.*:[si]"),
_zNAfsi: new RegExp(":[NA].*:f.*:[si]"),
_zNAesi: new RegExp(":[NA].*:e.*:[si]"),
_zNAmesi: new RegExp(":[NA].*:[me].*:[si]"),
_zNAfesi: new RegExp(":[NA].*:[fe].*:[si]"),
// pluriel
const zNAmp = new RegExp(":[NA].*:m.*:p");
const zNAfp = new RegExp(":[NA].*:f.*:p");
const zNAep = new RegExp(":[NA].*:e.*:p");
const zNAmep = new RegExp(":[NA].*:[me].*:p");
const zNAfep = new RegExp(":[NA].*:[me].*:p");
// pluriel
_zNAmp: new RegExp(":[NA].*:m.*:p"),
_zNAfp: new RegExp(":[NA].*:f.*:p"),
_zNAep: new RegExp(":[NA].*:e.*:p"),
_zNAmep: new RegExp(":[NA].*:[me].*:p"),
_zNAfep: new RegExp(":[NA].*:[me].*:p"),
// pluriel et invariable
const zNAmpi = new RegExp(":[NA].*:m.*:[pi]");
const zNAfpi = new RegExp(":[NA].*:f.*:[pi]");
const zNAepi = new RegExp(":[NA].*:e.*:[pi]");
const zNAmepi = new RegExp(":[NA].*:[me].*:[pi]");
const zNAfepi = new RegExp(":[NA].*:[fe].*:[pi]");
// pluriel et invariable
_zNAmpi: new RegExp(":[NA].*:m.*:[pi]"),
_zNAfpi: new RegExp(":[NA].*:f.*:[pi]"),
_zNAepi: new RegExp(":[NA].*:e.*:[pi]"),
_zNAmepi: new RegExp(":[NA].*:[me].*:[pi]"),
_zNAfepi: new RegExp(":[NA].*:[fe].*:[pi]"),
//// Divers
const zAD = new RegExp(":[AB]");
//// Divers
_zAD: new RegExp(":[AB]"),
///// Verbe
const zVconj = new RegExp(":[123][sp]");
const zVconj123 = new RegExp(":V[123].*:[123][sp]");
///// Verbe
_zVconj: new RegExp(":[123][sp]"),
_zVconj123: new RegExp(":V[123].*:[123][sp]"),
///// Nom | Adjectif | Verbe
const zNVconj = new RegExp(":(?:N|[123][sp])");
const zNAVconj = new RegExp(":(?:N|A|[123][sp])");
///// Nom | Adjectif | Verbe
_zNVconj: new RegExp(":(?:N|[123][sp])"),
_zNAVconj: new RegExp(":(?:N|A|[123][sp])"),
///// Spécifique
const zNnotA = new RegExp(":N(?!:A)");
const zPNnotA = new RegExp(":(?:N(?!:A)|Q)");
///// Spécifique
_zNnotA: new RegExp(":N(?!:A)"),
_zPNnotA: new RegExp(":(?:N(?!:A)|Q)"),
///// Noms propres
const zNP = new RegExp(":(?:M[12P]|T)");
const zNPm = new RegExp(":(?:M[12P]|T):m");
const zNPf = new RegExp(":(?:M[12P]|T):f");
const zNPe = new RegExp(":(?:M[12P]|T):e");
///// Noms propres
_zNP: new RegExp(":(?:M[12P]|T)"),
_zNPm: new RegExp(":(?:M[12P]|T):m"),
_zNPf: new RegExp(":(?:M[12P]|T):f"),
_zNPe: new RegExp(":(?:M[12P]|T):e"),
///// FONCTIONS
///// FONCTIONS
function getLemmaOfMorph (sMorph) {
return zLemma.exec(sMorph)[1];
}
getLemmaOfMorph: function (sMorph) {
return this._zLemma.exec(sMorph)[1];
},
function checkAgreement (l1, l2) {
// check number agreement
if (!mbInv(l1) && !mbInv(l2)) {
if (mbSg(l1) && !mbSg(l2)) {
return false;
}
if (mbPl(l1) && !mbPl(l2)) {
return false;
}
}
// check gender agreement
if (mbEpi(l1) || mbEpi(l2)) {
return true;
}
if (mbMas(l1) && !mbMas(l2)) {
return false;
}
if (mbFem(l1) && !mbFem(l2)) {
return false;
}
return true;
}
checkAgreement: function (l1, l2) {
// check number agreement
if (!this.mbInv(l1) && !this.mbInv(l2)) {
if (this.mbSg(l1) && !this.mbSg(l2)) {
return false;
}
if (this.mbPl(l1) && !this.mbPl(l2)) {
return false;
}
}
// check gender agreement
if (this.mbEpi(l1) || this.mbEpi(l2)) {
return true;
}
if (this.mbMas(l1) && !this.mbMas(l2)) {
return false;
}
if (this.mbFem(l1) && !this.mbFem(l2)) {
return false;
}
return true;
},
function checkConjVerb (lMorph, sReqConj) {
return lMorph.some(s => s.includes(sReqConj));
}
checkConjVerb: function (lMorph, sReqConj) {
return lMorph.some(s => s.includes(sReqConj));
},
function getGender (lMorph) {
// returns gender of word (':m', ':f', ':e' or empty string).
let sGender = "";
for (let sMorph of lMorph) {
let m = zGender.exec(sMorph);
if (m) {
if (!sGender) {
sGender = m[0];
} else if (sGender != m[0]) {
return ":e";
}
}
}
return sGender;
}
getGender: function (lMorph) {
// returns gender of word (':m', ':f', ':e' or empty string).
let sGender = "";
for (let sMorph of lMorph) {
let m = this._zGender.exec(sMorph);
if (m) {
if (!sGender) {
sGender = m[0];
} else if (sGender != m[0]) {
return ":e";
}
}
}
return sGender;
},
function getNumber (lMorph) {
// returns number of word (':s', ':p', ':i' or empty string).
let sNumber = "";
for (let sMorph of lMorph) {
let m = zNumber.exec(sWord);
if (m) {
if (!sNumber) {
sNumber = m[0];
} else if (sNumber != m[0]) {
return ":i";
}
}
}
return sNumber;
}
getNumber: function (lMorph) {
// returns number of word (':s', ':p', ':i' or empty string).
let sNumber = "";
for (let sMorph of lMorph) {
let m = this._zNumber.exec(sWord);
if (m) {
if (!sNumber) {
sNumber = m[0];
} else if (sNumber != m[0]) {
return ":i";
}
}
}
return sNumber;
},
// NOTE : isWhat (lMorph) returns true if lMorph contains nothing else than What
// mbWhat (lMorph) returns true if lMorph contains What at least once
// NOTE : isWhat (lMorph) returns true if lMorph contains nothing else than What
// mbWhat (lMorph) returns true if lMorph contains What at least once
//// isXXX = it’s certain
//// isXXX = it’s certain
function isNom (lMorph) {
return lMorph.every(s => s.includes(":N"));
}
isNom: function (lMorph) {
return lMorph.every(s => s.includes(":N"));
},
function isNomNotAdj (lMorph) {
return lMorph.every(s => zNnotA.test(s));
}
isNomNotAdj: function (lMorph) {
return lMorph.every(s => this._zNnotA.test(s));
},
function isAdj (lMorph) {
return lMorph.every(s => s.includes(":A"));
}
isAdj: function (lMorph) {
return lMorph.every(s => s.includes(":A"));
},
function isNomAdj (lMorph) {
return lMorph.every(s => zNA.test(s));
}
isNomAdj: function (lMorph) {
return lMorph.every(s => this._zNA.test(s));
},
function isNomVconj (lMorph) {
return lMorph.every(s => zNVconj.test(s));
}
isNomVconj: function (lMorph) {
return lMorph.every(s => this._zNVconj.test(s));
},
function isInv (lMorph) {
return lMorph.every(s => s.includes(":i"));
}
function isSg (lMorph) {
return lMorph.every(s => s.includes(":s"));
}
function isPl (lMorph) {
return lMorph.every(s => s.includes(":p"));
}
function isEpi (lMorph) {
return lMorph.every(s => s.includes(":e"));
}
function isMas (lMorph) {
return lMorph.every(s => s.includes(":m"));
}
function isFem (lMorph) {
return lMorph.every(s => s.includes(":f"));
}
isInv: function (lMorph) {
return lMorph.every(s => s.includes(":i"));
},
isSg: function (lMorph) {
return lMorph.every(s => s.includes(":s"));
},
isPl: function (lMorph) {
return lMorph.every(s => s.includes(":p"));
},
isEpi: function (lMorph) {
return lMorph.every(s => s.includes(":e"));
},
isMas: function (lMorph) {
return lMorph.every(s => s.includes(":m"));
},
isFem: function (lMorph) {
return lMorph.every(s => s.includes(":f"));
},
//// mbXXX = MAYBE XXX
//// mbXXX = MAYBE XXX
function mbNom (lMorph) {
return lMorph.some(s => s.includes(":N"));
}
mbNom: function (lMorph) {
return lMorph.some(s => s.includes(":N"));
},
function mbAdj (lMorph) {
return lMorph.some(s => s.includes(":A"));
}
mbAdj: function (lMorph) {
return lMorph.some(s => s.includes(":A"));
},
function mbAdjNb (lMorph) {
return lMorph.some(s => zAD.test(s));
}
mbAdjNb: function (lMorph) {
return lMorph.some(s => this._zAD.test(s));
},
function mbNomAdj (lMorph) {
return lMorph.some(s => zNA.test(s));
}
mbNomAdj: function (lMorph) {
return lMorph.some(s => this._zNA.test(s));
},
function mbNomNotAdj (lMorph) {
let b = false;
for (let s of lMorph) {
if (s.includes(":A")) {
return false;
}
if (s.includes(":N")) {
b = true;
}
}
return b;
}
mbNomNotAdj: function (lMorph) {
let b = false;
for (let s of lMorph) {
if (s.includes(":A")) {
return false;
}
if (s.includes(":N")) {
b = true;
}
}
return b;
},
function mbPpasNomNotAdj (lMorph) {
return lMorph.some(s => zPNnotA.test(s));
}
mbPpasNomNotAdj: function (lMorph) {
return lMorph.some(s => this._zPNnotA.test(s));
},
function mbVconj (lMorph) {
return lMorph.some(s => zVconj.test(s));
}
mbVconj: function (lMorph) {
return lMorph.some(s => this._zVconj.test(s));
},
function mbVconj123 (lMorph) {
return lMorph.some(s => zVconj123.test(s));
}
mbVconj123: function (lMorph) {
return lMorph.some(s => this._zVconj123.test(s));
},
function mbMG (lMorph) {
return lMorph.some(s => s.includes(":G"));
}
mbMG: function (lMorph) {
return lMorph.some(s => s.includes(":G"));
},
mbInv: function (lMorph) {
return lMorph.some(s => s.includes(":i"));
},
mbSg: function (lMorph) {
return lMorph.some(s => s.includes(":s"));
function mbInv (lMorph) {
return lMorph.some(s => s.includes(":i"));
}
function mbSg (lMorph) {
},
mbPl: function (lMorph) {
return lMorph.some(s => s.includes(":s"));
}
function mbPl (lMorph) {
return lMorph.some(s => s.includes(":p"));
}
function mbEpi (lMorph) {
return lMorph.some(s => s.includes(":e"));
}
function mbMas (lMorph) {
return lMorph.some(s => s.includes(":m"));
}
function mbFem (lMorph) {
return lMorph.some(s => s.includes(":f"));
}
return lMorph.some(s => s.includes(":p"));
},
mbEpi: function (lMorph) {
return lMorph.some(s => s.includes(":e"));
},
mbMas: function (lMorph) {
return lMorph.some(s => s.includes(":m"));
},
mbFem: function (lMorph) {
return lMorph.some(s => s.includes(":f"));
},
function mbNpr (lMorph) {
return lMorph.some(s => zNP.test(s));
}
mbNpr: function (lMorph) {
return lMorph.some(s => this._zNP.test(s));
},
function mbNprMasNotFem (lMorph) {
if (lMorph.some(s => zNPf.test(s))) {
return false;
}
return lMorph.some(s => zNPm.test(s));
mbNprMasNotFem: function (lMorph) {
if (lMorph.some(s => this._zNPf.test(s))) {
return false;
}
return lMorph.some(s => this._zNPm.test(s));
}
}
if (typeof(exports) !== 'undefined') {
exports.getLemmaOfMorph = getLemmaOfMorph;
exports.checkAgreement = checkAgreement;
exports.checkConjVerb = checkConjVerb;
exports.getGender = getGender;
exports.getNumber = getNumber;
exports.isNom = isNom;
exports.isNomNotAdj = isNomNotAdj;
exports.isAdj = isAdj;
exports.isNomAdj = isNomAdj;
exports.isNomVconj = isNomVconj;
exports.isInv = isInv;
exports.isSg = isSg;
exports.isPl = isPl;
exports.isEpi = isEpi;
exports.isMas = isMas;
exports.isFem = isFem;
exports.mbNom = mbNom;
exports.mbAdj = mbAdj;
exports.mbAdjNb = mbAdjNb;
exports.mbNomAdj = mbNomAdj;
exports.mbNomNotAdj = mbNomNotAdj;
exports.mbPpasNomNotAdj = mbPpasNomNotAdj;
exports.mbVconj = mbVconj;
exports.mbVconj123 = mbVconj123;
exports.mbMG = mbMG;
exports.mbInv = mbInv;
exports.mbSg = mbSg;
exports.mbPl = mbPl;
exports.mbEpi = mbEpi;
exports.mbMas = mbMas;
exports.mbFem = mbFem;
exports.mbNpr = mbNpr;
exports.mbNprMasNotFem = mbNprMasNotFem;
exports._zLemma = cregex._zLemma;
exports._zGender = cregex._zGender;
exports._zNumber = cregex._zNumber;
exports._zNA = cregex._zNA;
exports._zNAs = cregex._zNAs;
exports._zNAp = cregex._zNAp;
exports._zNAi = cregex._zNAi;
exports._zNAsi = cregex._zNAsi;
exports._zNApi = cregex._zNApi;
exports._zNAm = cregex._zNAm;
exports._zNAf = cregex._zNAf;
exports._zNAe = cregex._zNAe;
exports._zNAme = cregex._zNAme;
exports._zNAfe = cregex._zNAfe;
exports._zNAms = cregex._zNAms;
exports._zNAfs = cregex._zNAfs;
exports._zNAes = cregex._zNAes;
exports._zNAmes = cregex._zNAmes;
exports._zNAfes = cregex._zNAfes;
exports._zNAmsi = cregex._zNAmsi;
exports._zNAfsi = cregex._zNAfsi;
exports._zNAesi = cregex._zNAesi;
exports._zNAmesi = cregex._zNAmesi;
exports._zNAfesi = cregex._zNAfesi;
exports._zNAmp = cregex._zNAmp;
exports._zNAfp = cregex._zNAfp;
exports._zNAep = cregex._zNAep;
exports._zNAmep = cregex._zNAmep;
exports._zNAfep = cregex._zNAfep;
exports._zNAmpi = cregex._zNAmpi;
exports._zNAfpi = cregex._zNAfpi;
exports._zNAepi = cregex._zNAepi;
exports._zNAmepi = cregex._zNAmepi;
exports._zNAfepi = cregex._zNAfepi;
exports._zAD = cregex._zAD;
exports._zVconj = cregex._zVconj;
exports._zVconj123 = cregex._zVconj123;
exports._zNVconj = cregex._zNVconj;
exports._zNAVconj = cregex._zNAVconj;
exports._zNnotA = cregex._zNnotA;
exports._zPNnotA = cregex._zPNnotA;
exports._zNP = cregex._zNP;
exports._zNPm = cregex._zNPm;
exports._zNPf = cregex._zNPf;
exports._zNPe = cregex._zNPe;
exports.getLemmaOfMorph = cregex.getLemmaOfMorph;
exports.checkAgreement = cregex.checkAgreement;
exports.checkConjVerb = cregex.checkConjVerb;
exports.getGender = cregex.getGender;
exports.getNumber = cregex.getNumber;
exports.isNom = cregex.isNom;
exports.isNomNotAdj = cregex.isNomNotAdj;
exports.isAdj = cregex.isAdj;
exports.isNomAdj = cregex.isNomAdj;
exports.isNomVconj = cregex.isNomVconj;
exports.isInv = cregex.isInv;
exports.isSg = cregex.isSg;
exports.isPl = cregex.isPl;
exports.isEpi = cregex.isEpi;
exports.isMas = cregex.isMas;
exports.isFem = cregex.isFem;
exports.mbNom = cregex.mbNom;
exports.mbAdj = cregex.mbAdj;
exports.mbAdjNb = cregex.mbAdjNb;
exports.mbNomAdj = cregex.mbNomAdj;
exports.mbNomNotAdj = cregex.mbNomNotAdj;
exports.mbPpasNomNotAdj = cregex.mbPpasNomNotAdj;
exports.mbVconj = cregex.mbVconj;
exports.mbVconj123 = cregex.mbVconj123;
exports.mbMG = cregex.mbMG;
exports.mbInv = cregex.mbInv;
exports.mbSg = cregex.mbSg;
exports.mbPl = cregex.mbPl;
exports.mbEpi = cregex.mbEpi;
exports.mbMas = cregex.mbMas;
exports.mbFem = cregex.mbFem;
exports.mbNpr = cregex.mbNpr;
exports.mbNprMasNotFem = cregex.mbNprMasNotFem;
}
|