Есть много (порядка сорока, считая значимые диалекты и мертвые языки) германских языков. В них во всех есть похожим образом устроенная глагольная система. Глаголы делятся на два больших надкласса: сильные и слабые. Сильные глаголы образуют формы прошедшего времени и причастия, меняя гласную в корне. Выбор конкретной гласной определяется "абляутным рядом": набором из четырех гласных (или дифтонгов, или нулей), разных абляутных радов много, и конкретный их набор разнится от языка к языку.
Для построения всех форм глагола нужно знать:
- язык (и набор абляутных рядов этого языка)
- заглавную форму глагола
- класс (абляутный ряд), к которому этот глагол относится в этом языке.
Кроме того хочется ухватить то обстоятельства, что по большому счету глаголы-то в разных германских языках одни и те же. На первый взгляд предпочтительным кажется следующий подход: каждому глаголу приваевается уникальный идентификатор, соответсвующие друг другу глаголы разных языков отождествляются с одним идентификатором.
Инфинитив (слово) -> Абляутный ряд (четвёрка гласных) -> четверка слов.
Алгоритм: inf, lang, class <- inf, lang, class
- По классу глагола и языку выбрать абляутный ряд.
- Перевести инфинитив из цепочки литер в цепочку морфем (обратить сандхи в готском, исландском и проч.)
- Проходя по форме инфинитива с конца, найти гласную первой ступени абляута.
- Запомнить куски основы до гласной и после гласной.
- Породить четверку, подставляя остальные гласные ряда в соответствующие формы.
- Применить к каждому члену четверки правила сандхи (обратить шаг 2.).
Пример:
fyke, bm, (Класс 2, по образцу fyke) -> fyker føk, fauk føket
gyve, bm, (Класс 2, по образцу fyke) -> gyver gøv, gauv gøvet
flyte, bm, (Класс 2, по образцу flyte) -> flyter fløt, flaut flytt
Вспомогательный алгоритм раз: -- по образцу выявить абляутный ряд: По четырем словам найти наибольший общий префикс.