|
1 | 1 | resource ParadigmsSco = ParadigmsEng - [regV, reg2V, regDuplV, irregV, irreg4V, irregDuplV, mkV, mkV2, mkV3, mkV2V, mkV2Q] ** open Prelude, ResSco, CatSco in { |
2 | 2 |
|
3 | 3 | oper |
| 4 | + regV : Str -> V ; |
4 | 5 | regV cry = |
5 | 6 | let |
6 | 7 | cries = (regN cry).s ! Pl ! Nom ; -- ! |
7 | | - cried : Str = case cries of { |
8 | | - _ + "es" => init cries + "d" ; |
9 | | - _ + "ers" => init cries + "ed" ; |
10 | | - _ => duplFinal cry + "ed" |
| 8 | + criet : Str = case cry of { |
| 9 | + rax@(_ + ("x"|"sh"|"ch")) => rax+"t"; |
| 10 | + hurt@(_ + ("t"|"p"|"d")) => hurt + "it" ; |
| 11 | + traivel@(_ + ("l"|"n"|"r"|"ie"|"y")) => traivel + "t" ; |
| 12 | + clean => clean + "ed" |
11 | 13 | } ; |
12 | 14 | cryin : Str = case cry of { |
13 | 15 | _ + "ee" => cry + "in" ; |
|
16 | 18 | ent + "er" => ent + "erin" ; |
17 | 19 | _ => duplFinal cry + "in" |
18 | 20 | } |
19 | | - in mk5V cry cries cried cried cryin ; |
| 21 | + in mk5V cry cries criet criet cryin ; |
20 | 22 |
|
21 | | - reg2V fit fitted = |
22 | | - let fitt = Predef.tk 2 fitted ; |
| 23 | + reg2V : Str -> Str -> V ; |
| 24 | + reg2V fit fittet = |
| 25 | + let fitt = Predef.tk 2 fittet ; |
23 | 26 | in |
24 | 27 | if_then_else V (pbool2bool (Predef.eqStr (last fit) (last fitt))) |
25 | | - (mk5V fit (fit + "s") (fitt + "ed") (fitt + "ed") (fitt + "in")) |
| 28 | + (mk5V fit (fit + "s") (fitt + "et") (fitt + "et") (fitt + "in")) |
26 | 29 | (regV fit) ; |
27 | 30 |
|
| 31 | + regDuplV : Str -> V ; |
28 | 32 | regDuplV fit = |
29 | 33 | case last fit of { |
30 | 34 | ("a" | "e" | "i" | "o" | "u" | "y") => |
31 | 35 | Predef.error (["final duplication makes no sense for"] ++ fit) ; |
32 | 36 | t => |
33 | 37 | let fitt = fit + t in |
34 | | - mk5V fit (fit + "s") (fitt + "ed") (fitt + "ed") (fitt + "in") |
| 38 | + mk5V fit (fit + "s") (fitt + "et") (fitt + "et") (fitt + "in") |
35 | 39 | } ; |
36 | 40 |
|
| 41 | + irregV : Str -> Str -> Str -> V ; |
37 | 42 | irregV x y z = let reg = (regV x).s in |
38 | 43 | mk5V x (reg ! VPres) y z (reg ! VPresPart) ** {s1 = []} ; |
39 | 44 |
|
| 45 | + irreg4V : Str -> Str -> Str -> Str -> V ; |
40 | 46 | irreg4V x y z w = let reg = (regV x).s in |
41 | 47 | mk5V x (reg ! VPres) y z w ** {s1 = []} ; |
42 | 48 |
|
| 49 | + irregDuplV : Str -> Str -> Str -> V ; |
43 | 50 | irregDuplV fit y z = |
44 | 51 | let |
45 | 52 | fitting = (regDuplV fit).s ! VPresPart |
|
0 commit comments