-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrules.ini
243 lines (173 loc) · 6.07 KB
/
rules.ini
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
Внешний файл правил для генератора склонений
В случае отсутствия данного файла, загружаются
стандартные правила.
Фразы вида #[символы|родительный|дательный|винительный|
творительный|падежный|все|глаголы|словарная группа] являются метками.
Все последующие до новой метки правила будут учитывать принадлежность
к этой группе. Порядок меток неважен.
Правила записываются между метками разделов в виде:
[условия] <шаблон окончания> <шаблон(ы) подстановки>;
Условия:
S (от SINGULAR) - единственное число
P (от PLURAL) - множественное число
Если активны оба, то учитывается единственное
M (от MALE) - мужской род
F (от FEMALE) - женский род
N (от NEUTER) - средний
Если указаны сразу и M и F, получается средний
A (от ANIMATE) - одушевленный
U (от транслит. UDARENIE) - ударное окончание
n (от noun) - существительное
a (от adjective) - прилагательное
Шаблон окончания:
регэксп шаблон, который будет сравниваться с окончанием
слова. Т.е. к вашему шаблону будет добавлен символ '$',
обозначающий конец строки.
Шаблон подстановки:
схема, по которой производится изменение окончания.
Можно использовать обратные ссылки.
В общем случае (#все) правила записываются по-другому:
[условия] <ШО> <ШП РП> <ШП ДП> <ШП ВП> <ШП ТП> <ШП ПП>;
(ШО - Шаблон Окончания, ШП - шаблон подстановки,
РП - родительного падежа, ДП - дательного, ...)
Раздел #символы:
здесь указанной цифре можно назначить строку-шаблон,
чтобы взывать его позже в процессе обработки правил.
Вид:
<цифра> <строка>;
Основное назначение - упростить ввод классов символов.
Все фразы, не соответствующие структуре правил и меток,
считаются комментариями, и игнорируются.
Внимательно изучите правила составления шаблонов -
поиск сложных рекурсивных схем можеть выполняться ОЧЕНЬ ДОЛГО!
#символы
0 [бвдзлмнпрстфц];
1 [еуюа];
2 [бвдзлмпрсфц];
3 [бвгджзнрц]; //звонкие
4 [чшщц]; //шипящие
6 [бвгджзйклмнпрстфхцчшщ]; //согласные
8 [аеёиоуыэюя]; //гласные
#родительный
PF йки ек;
PF (6)ки $1ек;
PF (6)ки $1ок;
PF ки к;
P ки ков;
PF (6)ги $1ог;
PF ги г;
P ги гов;
PF (у6)и $1;
F ка ке;
PF (.)ы $1;
// -песни, иглы, розги
#дательный
#винительный
PFA йки ек;
PFA (4)ки $1ек;
PFA (0)ки $1ок;
PFA ки к;
PA ки ков;
PFA (6)ги $1ог;
PFA ги г;
PA ги гов;
#творительный
(4)а $1ей; // U
#творительный2 - украинизированная или литературная форма
S (4)а $1ею;
S а ою;
SF (.) $1ю;
S ая ою;
#предложный
#все
// Множественное число существительных на -а:
P ена ён енам ена енами енах; // письмена
P ёна ён ёнам ёна ёнами ёнах; // знамёна
P (6)на $1ен $1нам $1на $1нами $1нах; // брёвна
P та т там та тами тах; // ребята, (т.ж. ворота,корыта)
PM а ов ам а ами ах; // дома
P (.)а $1 $1ам $1а $1ами $1ах; // гнёзда
ца цы це цу цей це;
(0)а $1ы $1е $1у $1ой $1е;
а и е у ой е;
// все на -я
мя мени мени мя менем мени; // время
шая шой шой шую шой шой; // -шой/-шей зависит от ударения!
(4)ая $1ей $1ей $1ую $1ей $1ей; // остальные шипящие + ая -ей;
ая ой ой ую ой ой; // остальные прил. на -ая;
яя ей ей юю ей ей; // прил. на -яя + преисподняя
P ья ьев ьям ья ьями ьях; // клочья, перья
P ия ий иям ия иями иях; // покрытия
ия ии ии ию ией ии; // существительные на -ия
U я и е ю ей е;
я и е ю ёй е;
// на -й
n ой оя ою ой оем ое; //ковбой
ой ого ому ой ым ом; //злой
(1)й $1я $1ю $1й $1ем $1е;
ый ого ому ый ым ом;
n ий ия ию ий ием ии;
ий его ему ий им ем;
й и и й ем е;
// на о
(6)о $1а $1у $1о $1ом $1е;
о о у о ом е;
(ц|щ)е $1а $1у $1е $1ем $1е; //сердце, чудище
(0)ое $1ого $1ому $1ое $1ым $1ом; // прил., на тв. согл. (бвдзлмнпрстфц)
ое ого ому ое им ом; // прил., на м. согл.
// на -е, -ё
(е|ё)е $1го $1му $1е им ем;
P (и|ы)е $1х $1м $1е $1ми $1х;
ие ия ию ие ием ие; // рвение, бдение
ье ья ью ье ьем ье; // раздолье
ьё ья ью ье ьём ье; // враньё
це ца цу це цем це;
P ые ых ым ые ыми ых;
е е е е е е; // несклоняемые кофе безе суфле драже
(6)ё $1я $1ю $1й ём $1е;
ё ё ё ё ём е;
// на -ь
F ь и и ь ью и;
ь я ю я ем е;
// на -и
PF ьи ей ьям ьи ьями ьях;
PM ьи ьёв ьям ьи ьями ьях;
PF йки ек йкам йки йками йках;
PF (4)ки $1ек $1кам $1ки $1ками $1ках;
PU (8)и $1ев $1ям $1и $1ями $1ях;
P (8)и $1ёв $1ям $1и $1ями $1ях;
P (4)и $1ей $1ам $1и $1ами $1ах;
P (0)и $1ей $1ям $1и $1ями $1ях;
P и ей ам ей ами ах; //гжкх
и и и и и и;
P ы ов ам ы ами ах;
ы ы ы ы ы ы;
// -к
(66)ок $1ока $1оку $1ок $1оком $1оке;
// при двух сущ. подряд нет выпадения
ок ка ку ок ком ке; // выпадение о перед к
(8)чек $1чка $1чку $1чек $1чком $1чке; // кусочек, цветочек
(8)ёк $1йка $1йку $1ёк $1йком $1йке; // чаёк, паёк
ёк ька ьку ёк ьком ьке; // тенёк
ёл ла лу ёл лом ле; // козёл
(6) $1а $1у $1 $1ом $1е; // -ом/ем после шипящих зависит от ударения
#глаголы
ать ал али аю аем аешь аете ает ают;
ить ил или ю им ишь ите ит ят;
// далее в поле действия метки "словарная группа" нельзя использовать
// комментарии. Все строки считываются как схемы для поиска и
// ипользуются без дальнейшей обработки
#словарная группа "определение"
явля(ться|юсь|емся|ешься|етесь|ется|ются)
назыв(ать|аю|аем|ешь|ем|ет|ют|ть)
означ(ать|аю|ем|ешь|ете|ет|ют)
будем (называть|)
представ(ить|ляю|ляем|ляешь|ляете|ляет|ляют)
счит(ать|аю|ем|ешь|ете|ет|ют)
#словарная группа "законы"
теорем(а|ы|е|у|ой|ою)
закон(а|у|ом|е)
дока(зать|жу|жем|жешь|жете|жет|жут)
#словарная группа "отношения"
рав(ен|но|на)\\z
равня(ется|юсь|емся|ешься|етесь|ется|ются)