mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-05-27 17:08:54 -06:00
Compare commits
121 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
deb9d40b7e | ||
|
|
25f422f5ca | ||
|
|
f0abf5deff | ||
|
|
e825d92233 | ||
|
|
1e436d84a1 | ||
|
|
84e0e2c08f | ||
|
|
4c55592af4 | ||
|
|
28be4fb450 | ||
|
|
74848d304e | ||
|
|
928889b2aa | ||
|
|
1d7b717866 | ||
|
|
9d18d316c5 | ||
|
|
c8a4c28a51 | ||
|
|
eeca67e787 | ||
|
|
e8005bf071 | ||
|
|
cc1168634b | ||
|
|
76cbf0b75b | ||
|
|
ce2f785f92 | ||
|
|
0cd3450e08 | ||
|
|
62c5030be1 | ||
|
|
bd41b3ccb7 | ||
|
|
53571672e3 | ||
|
|
761597ad8c | ||
|
|
8e780d6263 | ||
|
|
ec4bc75a64 | ||
|
|
dbe6eba30a | ||
|
|
066133bbae | ||
|
|
e9ecb1a8d6 | ||
|
|
090a6ea33d | ||
|
|
dceb5252a2 | ||
|
|
73fa89103b | ||
|
|
115ad31e2d | ||
|
|
f715e393cb | ||
|
|
5e6ee94baa | ||
|
|
a73b6ad6ed | ||
|
|
06f3602e00 | ||
|
|
c7fe453c12 | ||
|
|
48658e3689 | ||
|
|
ffc10a32c9 | ||
|
|
fff1c40f24 | ||
|
|
fd817f80d6 | ||
|
|
b84d05034d | ||
|
|
d589cedc6b | ||
|
|
d833b24509 | ||
|
|
071b2af9c3 | ||
|
|
1f5615c0bb | ||
|
|
fda1f49d17 | ||
|
|
6b93e87363 | ||
|
|
f4aae6a61a | ||
|
|
066d6f9c85 | ||
|
|
3e51c585ce | ||
|
|
bba1de3605 | ||
|
|
4514ebfc00 | ||
|
|
cf947426dc | ||
|
|
7383b30cee | ||
|
|
c604bd3b77 | ||
|
|
8e63f9b32d | ||
|
|
1aed4c3b5f | ||
|
|
78564236b9 | ||
|
|
35a650141e | ||
|
|
5146748f37 | ||
|
|
4bf528a429 | ||
|
|
4a0cc4ec40 | ||
|
|
a5f4679405 | ||
|
|
cad17e8404 | ||
|
|
c9182284e7 | ||
|
|
9649f348b2 | ||
|
|
3e066bd7ec | ||
|
|
7d4e40bac1 | ||
|
|
7e52a4759c | ||
|
|
f01d509376 | ||
|
|
153ad8b41a | ||
|
|
5375cda243 | ||
|
|
e76e11e566 | ||
|
|
bc41082247 | ||
|
|
0e5bb779cc | ||
|
|
08aa91cdbb | ||
|
|
7d695a6d49 | ||
|
|
febd99be26 | ||
|
|
7016ce8a32 | ||
|
|
1b57ef7fee | ||
|
|
cd581dc6ac | ||
|
|
5b588daf85 | ||
|
|
35a6456524 | ||
|
|
141074bec3 | ||
|
|
e78497e46d | ||
|
|
52b6305cf2 | ||
|
|
1cd582a322 | ||
|
|
2ff33ea968 | ||
|
|
b2e2b570e1 | ||
|
|
4644ef0229 | ||
|
|
f546600fd2 | ||
|
|
9c951e244c | ||
|
|
5cb67dadbf | ||
|
|
39f6a43717 | ||
|
|
81f3531136 | ||
|
|
9f21a3d103 | ||
|
|
e14833217e | ||
|
|
8c25bdeacc | ||
|
|
d652c81fa7 | ||
|
|
ed745708b2 | ||
|
|
625ddf1e1e | ||
|
|
512412b4bb | ||
|
|
d4056e7db3 | ||
|
|
c85e7a514b | ||
|
|
a539db3d55 | ||
|
|
b8d9098aaa | ||
|
|
1c87e5ac78 | ||
|
|
4f5e67a581 | ||
|
|
cabf56aea9 | ||
|
|
4b78bd6c67 | ||
|
|
c9c1723090 | ||
|
|
1f3a35a95c | ||
|
|
3aeb0707f5 | ||
|
|
94472bc4ab | ||
|
|
e3c9a0045e | ||
|
|
97227181fe | ||
|
|
f2afe03303 | ||
|
|
75d291d26a | ||
|
|
338c347d7c | ||
|
|
e24e0cc7ce |
@@ -2,6 +2,7 @@ Code,Name,Directory,Functor,Unlexer,Present,All,Try,Symbolic,Compatibility,Synop
|
||||
Afr,Afrikaans,afrikaans,,,,,,n,,y,n
|
||||
Amh,Amharic,amharic,,,,,n,n,,n,n
|
||||
Ara,Arabic,arabic,,,,,,y,,y,y
|
||||
Bel,Belarusian,belarusian,,,,y,n,n,n,y,n
|
||||
Bul,Bulgarian,bulgarian,,,y,,,,,y,n
|
||||
Cat,Catalan,catalan,Romance,,y,,,,y,y,n
|
||||
Cgg,Rukiga,rukiga,,,y,y,n,n,y,y,n
|
||||
@@ -12,8 +13,10 @@ Dut,Dutch,dutch,,,y,,,,,y,n
|
||||
Eng,English,english,,,y,,,,y,y,y
|
||||
Est,Estonian,estonian,,,,,,,,y,n
|
||||
Eus,Basque,basque,,,,,,,,y,n
|
||||
Fao,Faroese,faroese,,,,y,n,n,n,y,n
|
||||
Fin,Finnish,finnish,,,y,,,,y,y,y
|
||||
Fre,French,french,Romance,,y,,,,y,y,y
|
||||
Gla,Gaelic,gaelic,,,,y,n,n,n,y,n
|
||||
Ger,German,german,,,y,,,,,y,y
|
||||
Grc,Ancient Greek,ancient_greek,,,y,,n,n,,n,n
|
||||
Gre,Greek,greek,,,,,,,,y,n
|
||||
@@ -21,6 +24,7 @@ Heb,Hebrew,hebrew,,,,,n,n,,n,n
|
||||
Hin,Hindi,hindi,Hindustani,to_devanagari,y,,,,,y,n
|
||||
Hrv,Croatian,croatian,,,,,,y,,n,n
|
||||
Hun,Hungarian,hungarian,,,n,y,y,y,n,n,n
|
||||
Hye,Armenian,armenian,,,,y,n,n,n,y,n
|
||||
Ice,Icelandic,icelandic,,,,,,n,,y,n
|
||||
Ina,Interlingua,interlingua,,,y,,n,n,,n,n
|
||||
Ita,Italian,italian,Romance,,y,,,,y,y,y
|
||||
@@ -47,12 +51,14 @@ Slv,Slovenian,slovenian,,,,,n,n,,n,n
|
||||
Snd,Sindhi,sindhi,,,,,,,,y,n
|
||||
Spa,Spanish,spanish,Romance,,y,,,,y,y,y
|
||||
Sqi,Albanian,albanian,,,,y,n,n,n,y,n
|
||||
Sco,Scots,scots,,,y,,,,,y,n
|
||||
Swa,Swahili,swahili,Bantu,,,y,n,n,n,n,n
|
||||
Swe,Swedish,swedish,Scand,,y,,,,y,y,y
|
||||
Tam,Tamil,tamil,n,n,n,n,n,n,n,n,n
|
||||
Tel,Telugu,telugu,,,y,n,n,n,,n,n
|
||||
Tha,Thai,thai,,to_thai,,,,,,y,n
|
||||
Tur,Turkish,turkish,,,y,,,n,,n,n
|
||||
Ukr,Ukrainian,ukrainian,,,,y,n,n,n,y,n
|
||||
Urd,Urdu,urdu,Hindustani,,,,,,,y,n
|
||||
Som,Somali,somali,,,,,n,n,,n,n
|
||||
Zul,Zulu,zulu,,,,,n,n,,n,n
|
||||
|
||||
|
@@ -299,9 +299,6 @@ fun
|
||||
fun
|
||||
CardCNCard : Card -> CN -> Card ; -- three million, four lakh, six dozen etc
|
||||
|
||||
fun
|
||||
AnaphPron : NP -> Pron ;
|
||||
|
||||
fun
|
||||
TPastSimple : Tense ;
|
||||
|
||||
|
||||
@@ -89,4 +89,17 @@ concrete CatAfr of Cat =
|
||||
SN = {s : Sex => NPCase => Str; pl : NPCase => Str} ;
|
||||
LN = {s : Adjf => NPCase => Str ; hasArt : Bool ; n : Number} ;
|
||||
|
||||
lindef
|
||||
VPSlash = \s -> {
|
||||
s = {s = \\_ => s; prefix = ""; aux = VHebben; vtype = VAct} ;
|
||||
a1 = \\_ => "" ;
|
||||
n0 = \\_ => "" ;
|
||||
n2 = \\_ => "" ;
|
||||
a2 = "" ;
|
||||
isAux = False ;
|
||||
inf = <"",False> ;
|
||||
ext = "" ;
|
||||
c2 = ""
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -84,10 +84,4 @@ oper
|
||||
_ => BIND
|
||||
} ;
|
||||
|
||||
inc : DTail -> DTail = \t -> case t of {
|
||||
T1 => T2 ;
|
||||
T2 => T3 ;
|
||||
T3 => T1
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ concrete PhraseSqi of Phrase = CatSqi ** open Prelude, ResSqi in {
|
||||
lin
|
||||
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
|
||||
|
||||
UttS s = s ;
|
||||
UttNP np = {s = np.s ! Nom} ;
|
||||
UttInterj i = i ;
|
||||
|
||||
|
||||
@@ -109,11 +109,6 @@ lin pot3plus n m = {
|
||||
_ => BIND
|
||||
} ;
|
||||
|
||||
inc : DTail -> DTail = \t -> case t of {
|
||||
T1 => T2 ;
|
||||
T2 => T3 ;
|
||||
T3 => T1
|
||||
} ;
|
||||
------------------ :) what a releif
|
||||
|
||||
mk2Dig : Str -> Str -> TDigit = \c,o -> mk3Dig c o ;
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
-- Author: Hans Leiß, LMU Munich, CIS
|
||||
|
||||
|
||||
resource ResGrc = ParamX - [Number,Sg,Pl,ImpForm,numImp,Tense,ImpF]
|
||||
resource ResGrc = ParamX - [Number,Sg,Pl,ImpForm,numImp,Tense,ImpF,inc,DTail]
|
||||
** open Prelude, PhonoGrc, Predef in {
|
||||
flags
|
||||
optimize = noexpand ; -- optimize=all is impossible with addAccent
|
||||
|
||||
15
src/api/CombinatorsSco.gf
Normal file
15
src/api/CombinatorsSco.gf
Normal file
@@ -0,0 +1,15 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
resource CombinatorsSco = Combinators - [ appCN, appCNc ] with
|
||||
(Cat = CatSco),
|
||||
(Structural = StructuralSco),
|
||||
(Noun = NounSco),
|
||||
(Constructors = ConstructorsSco) **
|
||||
{
|
||||
oper
|
||||
appCN : CN -> NP -> NP
|
||||
= \cn,x -> mkNP the_Art (PossNP cn x) ;
|
||||
appCNc : CN -> [NP] -> NP
|
||||
= \cn,xs -> let np : NP = mkNP and_Conj xs
|
||||
in mkNP the_Art (PossNP cn np) ;
|
||||
}
|
||||
3
src/api/ConstructorsSco.gf
Normal file
3
src/api/ConstructorsSco.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
resource ConstructorsSco = Constructors with (Grammar = GrammarSco) ;
|
||||
5
src/api/SymbolicSco.gf
Normal file
5
src/api/SymbolicSco.gf
Normal file
@@ -0,0 +1,5 @@
|
||||
--# -path=.:../english:../common:../abstract:../prelude
|
||||
|
||||
resource SymbolicSco = Symbolic with
|
||||
(Symbol = SymbolSco),
|
||||
(Grammar = GrammarSco) ;
|
||||
5
src/api/SyntaxSco.gf
Normal file
5
src/api/SyntaxSco.gf
Normal file
@@ -0,0 +1,5 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
instance SyntaxSco of Syntax =
|
||||
ConstructorsSco, CatSco, StructuralSco, CombinatorsSco ;
|
||||
|
||||
@@ -1,3 +1,16 @@
|
||||
--# -path=.:../basque:../common:../abstract:../prelude
|
||||
|
||||
resource TryEus = SyntaxEus, LexiconEus, ParadigmsEus - [mkAdv,mkAdN,mkDet,mkQuant,mkPConj] ;
|
||||
resource TryEus = SyntaxEus-[mkVoc], LexiconEus, ParadigmsEus - [mkAdv,mkAdN,mkDet,mkQuant,mkPConj,mkVoc] **
|
||||
open (P = ParadigmsEus) in {
|
||||
|
||||
oper
|
||||
mkAdv = overload SyntaxEus {
|
||||
mkAdv : Str -> Adv = P.mkAdv ;
|
||||
} ;
|
||||
|
||||
mkVoc = overload {
|
||||
mkVoc : NP -> Voc = SyntaxEus.mkVoc ;
|
||||
mkVoc : Str -> Voc = P.mkVoc ;
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
--# -path=.:../german:../common:../abstract:../prelude
|
||||
|
||||
resource TryGer = SyntaxGer, ExtraGer, LexiconGer, ParadigmsGer - [mkAdv], MakeStructuralGer ;
|
||||
resource TryGer = SyntaxGer, ExtraGer, LexiconGer, ParadigmsGer - [mkAdv,mkIAdv], MakeStructuralGer ;
|
||||
|
||||
22
src/api/TrySco.gf
Normal file
22
src/api/TrySco.gf
Normal file
@@ -0,0 +1,22 @@
|
||||
--# -path=.:../english:../common:../abstract:../prelude
|
||||
|
||||
resource TrySco = SyntaxSco-[mkAdN], LexiconSco, ParadigmsSco - [mkAdv,mkAdN,mkOrd,mkQuant,mkVoc] **
|
||||
open (P = ParadigmsEng) in {
|
||||
|
||||
oper
|
||||
|
||||
mkAdv = overload SyntaxSco {
|
||||
mkAdv : Str -> Adv = P.mkAdv ;
|
||||
} ;
|
||||
|
||||
mkAdN = overload {
|
||||
mkAdN : CAdv -> AdN = SyntaxSco.mkAdN ;
|
||||
mkAdN : Str -> AdN = P.mkAdN ;
|
||||
} ;
|
||||
|
||||
mkOrd = overload SyntaxSco {
|
||||
mkOrd : Str -> Ord = P.mkOrd ;
|
||||
} ;
|
||||
|
||||
|
||||
}
|
||||
@@ -31,15 +31,15 @@ lin
|
||||
|
||||
monthAdv january =
|
||||
let january_CN : CN = mkCN month_Timeunit (mkNP (mkPN january)) ;
|
||||
january_NP : NP = R.emptyNP **
|
||||
january_NP : NP = lin NP R.emptyNP **
|
||||
{s = \\c => R.cn2str january_CN R.Sg R.Const c ;
|
||||
a = {pgn = R.Per3 january_CN.g R.Sg ; isPron = False}} ;
|
||||
in SyntaxAra.mkAdv R.biPrep january_NP ;
|
||||
in SyntaxAra.mkAdv ParadigmsAra.biPrep january_NP ;
|
||||
|
||||
yearAdv y = SyntaxAra.mkAdv in_Prep y ;
|
||||
|
||||
-- dummy
|
||||
dayMonthAdv d m = SyntaxAra.mkAdv on_Prep (mkNP d) ; -- on 17 May
|
||||
dayMonthAdv d m = SyntaxAra.mkAdv on_Prep (mkNP m) ; -- on 17 May
|
||||
monthYearAdv m y = SyntaxAra.mkAdv on_Prep (mkNP m) ; -- in May 2012
|
||||
dayMonthYearAdv d m y = SyntaxAra.mkAdv on_Prep y ; -- on 17 May 2013
|
||||
|
||||
@@ -51,7 +51,7 @@ lin
|
||||
let ap = mkAP a in ap ** {
|
||||
s = \\s,g,n,d,c =>
|
||||
ap.s ! s ! g ! n ! d ! c
|
||||
++ (mkAdv R.biPrep (mkNP amount_N)).s
|
||||
++ (mkAdv ParadigmsAra.biPrep (mkNP amount_N)).s
|
||||
++ (mkNP card cn).s ! R.Bare ---- ? /IL
|
||||
} ;
|
||||
|
||||
@@ -60,26 +60,26 @@ oper
|
||||
amount_N : N = mkN "مِقْدَار" "مَقَادِير" masc nohum ;
|
||||
|
||||
-- hack used in the name constructions
|
||||
toNP : Bool -> NP -> NP = \b -> if_then_else NP b R.emptyNP ;
|
||||
toNP : Bool -> NP -> NP = \b -> if_then_else NP b (lin NP R.emptyNP) ;
|
||||
|
||||
lin
|
||||
-- : NP -> NP -> Cl
|
||||
have_name_Cl np nm =
|
||||
let subjPron : Pron = R.np2pron np ;
|
||||
let subjPron : Pron = lin Pron (R.np2pron np) ;
|
||||
me : NP = toNP np.a.isPron np ;
|
||||
myName : NP = E.ApposNP me (mkNP (mkDet subjPron) L.name_N) ;
|
||||
in mkCl myName nm ;
|
||||
|
||||
-- : NP -> QCl
|
||||
what_name_QCl np =
|
||||
let subjPron : Pron = R.np2pron np ;
|
||||
let subjPron : Pron = lin Pron (R.np2pron np) ;
|
||||
me : R.NP = toNP np.a.isPron np ;
|
||||
myName : NP = E.ApposNP me (mkNP (mkDet subjPron) L.name_N) ;
|
||||
what_IP : R.IP = R.mkIP "مَا هُوَ" R.Sg ;
|
||||
what_IP : IP = lin IP (R.mkIP "مَا هُوَ" R.Sg) ;
|
||||
in mkQCl what_IP myName ;
|
||||
|
||||
how_old_QCl np =
|
||||
let subjPron : Pron = R.np2pron np ;
|
||||
let subjPron : Pron = lin Pron (R.np2pron np) ;
|
||||
me : R.NP = toNP np.a.isPron np ;
|
||||
age_N = mkN "عُمر" ;
|
||||
myAge : NP = E.ApposNP me (mkNP (mkDet subjPron) L.name_N) ;
|
||||
|
||||
@@ -23,7 +23,7 @@ flags
|
||||
beautiful_A = sndA "جمل" "فَعِيل" ;
|
||||
become_VA = mkVA (v4 "صبح") ;
|
||||
beer_N = sdfN "بير" "فِعلة" Fem NoHum ;
|
||||
beg_V2V = mkV2V (mkVV (v5 "وسل")) noPrep ;
|
||||
beg_V2V = mkV2V (mkVV (v5 "وسل")) ParadigmsAra.noPrep ;
|
||||
big_A = sndA "كبر" "فَعِيل" ;
|
||||
bike_N = sdfN "درج" "فَعّالة" Fem NoHum ;
|
||||
bird_N = brkN "طير" "فَعل" "فُعُول" Masc NoHum;
|
||||
@@ -72,7 +72,7 @@ flags
|
||||
door_N = brkN "بوب" "فاع" "أَفعَال" Masc NoHum ;
|
||||
drink_V2 = dirV2 (regV "شَرِب") ;
|
||||
-- drink_V2 = dirV2 (v1 "شرب" i a) ;
|
||||
easy_A2V = mkA2 (sndA "سهل" "فَعل") liPrep ;
|
||||
easy_A2V = mkA2 (sndA "سهل" "فَعل") ParadigmsAra.liPrep ;
|
||||
eat_V2 = dirV2 (mkV "ءكل" FormI) ;
|
||||
empty_A = sndA "فرغ" "فاعِل" ;
|
||||
enemy_N = brkN "عدو" "فَعُلّ" "أَفعَاء" Masc Hum ;
|
||||
@@ -202,7 +202,7 @@ flags
|
||||
switch8off_V2 = dirV2 (v4 "طفء") ;
|
||||
switch8on_V2 = dirV2 (v4 "شعل") ;
|
||||
table_N = sdfN "طول" "فاعِلة" Fem NoHum ;
|
||||
talk_V3 = mkV3 (v5 "حدث") liPrep (mkPrep "عَن") ;
|
||||
talk_V3 = mkV3 (v5 "حدث") ParadigmsAra.liPrep (mkPrep "عَن") ;
|
||||
teacher_N = sdmN "علم" "مُفَعِّل" Masc Hum ; --mucal~imö
|
||||
teach_V2 = dirV2 (v2 "علم") ;
|
||||
television_N = mkN (sndf "تِلِفِزيُون") Masc NoHum ;
|
||||
|
||||
@@ -70,6 +70,8 @@ oper
|
||||
_ => "لِ"
|
||||
}) Dat ;
|
||||
biPrep : Preposition = mkPrefix "بِ" ;
|
||||
kaPrep : Preposition = mkPrefix "كَ" ;
|
||||
|
||||
accPrep : Preposition = mkPreposition [] Acc ; -- default object case in VP
|
||||
genPrep : Preposition = mkPreposition [] Gen ; -- default object case in N2
|
||||
|
||||
|
||||
@@ -108,7 +108,7 @@ resource ParadigmsAra = open
|
||||
---- ++ n.s2 ! Sg ! Def ! c -- NB this hack works for idaafa constructions (if you used mkN : N -> N -> N), but wrong for mkN : N -> A -> N. /IL
|
||||
---- }))) ;
|
||||
mkLN : NP -> LN
|
||||
= \np -> np ;
|
||||
= \np -> lin LN np ;
|
||||
} ;
|
||||
|
||||
--3 Relational nouns
|
||||
@@ -153,7 +153,7 @@ resource ParadigmsAra = open
|
||||
|
||||
nisbaA : Str -> Adj ; -- Forms relative adjectives with the suffix ِيّ. Takes either the stem and adds يّ, or the whole word ending in يّ and just adds declension.
|
||||
|
||||
idaafaA : N -> A -> A ; -- Forms adjectives of type غَيْرُ طَيِّبٍ 'not good'. Noun is in construct state but inflects in case. Adjective is in genitive, but inflects in gender, number and state.
|
||||
idaafaA : N -> A -> A ; -- Forms adjectives of type غَيْرُ لَذيذٍ 'not tasty'. Noun is in construct state but inflects in case. Adjective is in genitive, but inflects in gender, number and state.
|
||||
|
||||
degrA : (masc,fem,plur : Str) -> A ; -- Adjective where masculine singular is also the comparative form. Indeclinable singular, basic triptote declension for dual and plural.
|
||||
|
||||
@@ -202,6 +202,7 @@ resource ParadigmsAra = open
|
||||
|
||||
liPrep : Prep ; -- The preposition لِ, binding to its head. Vowel assimilation and def. article elision implemented.
|
||||
biPrep : Prep ; -- The preposition بِ, binding to its head.
|
||||
kaPrep : Prep ; -- The preposition كَ, binding to its head.
|
||||
noPrep : Prep ; -- No preposition at all, "complement case" is nominative.
|
||||
|
||||
--2 Conjunctions
|
||||
@@ -375,6 +376,7 @@ resource ParadigmsAra = open
|
||||
noPrep = lin Prep ResAra.noPrep ;
|
||||
biPrep = lin Prep ResAra.biPrep ;
|
||||
liPrep = lin Prep ResAra.liPrep ;
|
||||
kaPrep = lin Prep ResAra.kaPrep ;
|
||||
|
||||
casePrep : Case -> Prep = \c -> lin Prep {s=[]; c=c; binds=False} ;
|
||||
|
||||
@@ -812,7 +814,7 @@ resource ParadigmsAra = open
|
||||
|
||||
dirV3 = overload {
|
||||
dirV3 : V -> Prep -> V3 = \v,p -> mkV3 v (casePrep acc) p ;
|
||||
dirV3 : V -> Str -> V3 = \v,s -> mkV3 v (casePrep acc) (mkPreposition s)
|
||||
dirV3 : V -> Str -> V3 = \v,s -> mkV3 v (casePrep acc) (mkPrep s)
|
||||
} ;
|
||||
|
||||
dirdirV3 v = dirV3 v (casePrep acc) ;
|
||||
@@ -873,7 +875,7 @@ resource ParadigmsAra = open
|
||||
mkAS,
|
||||
mkAV = \a -> a ;
|
||||
mkA2S,
|
||||
mkA2V = \a,p -> prepA2 a (mkPreposition p) ;
|
||||
mkA2V = \a,p -> lin A (prepA2 a (mkPreposition p)) ;
|
||||
|
||||
|
||||
|
||||
@@ -949,25 +951,25 @@ oper
|
||||
wmkA : {masc_sg, masc_pl, root, sg_patt : Str} -> A
|
||||
= \r -> mkA r.root r.sg_patt ;
|
||||
wmkA : {masc_sg, fem_sg, masc_pl, fem_pl, root, pl_patt : Str} -> A
|
||||
= \r -> mascFemAdj r.masc_sg r.fem_sg ;
|
||||
= \r -> mascFemA r.masc_sg r.fem_sg ;
|
||||
wmkA : {masc_sg, fem_sg, masc_pl, fem_pl, root : Str} -> A
|
||||
= \r -> mascFemAdj r.masc_sg r.fem_sg ;
|
||||
= \r -> mascFemA r.masc_sg r.fem_sg ;
|
||||
wmkA : {masc_sg, fem_sg, root : Str} -> A
|
||||
= \r -> mkA r.root ; ----
|
||||
wmkA : {masc_sg, fem_sg, masc_pl, fem_pl, pl_patt : Str} -> A
|
||||
= \r -> mascFemAdj r.masc_sg r.fem_sg ;
|
||||
= \r -> mascFemA r.masc_sg r.fem_sg ;
|
||||
wmkA : {masc_sg : Str; fem_sg : Str; fem_pl : Str} -> A
|
||||
= \r -> mascFemAdj r.masc_sg r.fem_sg ;
|
||||
= \r -> mascFemA r.masc_sg r.fem_sg ;
|
||||
wmkA : {masc_sg : Str; fem_sg : Str; root : Str ; sg_patt : Str} -> A
|
||||
= \r -> mkA r.root r.sg_patt ;
|
||||
wmkA : {masc_sg : Str; fem_sg : Str} -> A
|
||||
= \r -> mascFemAdj r.masc_sg r.fem_sg ;
|
||||
= \r -> mascFemA r.masc_sg r.fem_sg ;
|
||||
wmkA : {masc_sg : Str; masc_pl : Str; fem_sg : Str; fem_pl : Str} -> A
|
||||
= \r -> mascFemAdj r.masc_sg r.fem_sg ;
|
||||
= \r -> mascFemA r.masc_sg r.fem_sg ;
|
||||
wmkA : {masc_sg : Str; masc_pl : Str; fem_sg : Str; root : Str} -> A
|
||||
= \r -> mkA r.root ;
|
||||
wmkA : {masc_sg : Str; masc_pl : Str; fem_sg : Str} -> A
|
||||
= \r -> mascFemAdj r.masc_sg r.fem_sg ;
|
||||
= \r -> mascFemA r.masc_sg r.fem_sg ;
|
||||
wmkA : {masc_sg : Str; masc_pl : Str; root : Str} -> A
|
||||
= \r -> mkA r.root ;
|
||||
wmkA : {masc_sg : Str; masc_pl, pl_patt : Str; root : Str} -> A
|
||||
|
||||
@@ -124,7 +124,7 @@ concrete StructuralAra of Structural = CatAra **
|
||||
youPl_Pron = youPlMasc_Pron ;
|
||||
youPol_Pron = youPlFem_Pron ; -- arbitrary?
|
||||
|
||||
have_V2 = mkV2 ladaa_V (casePrep nom) ; -- "X has Y" literally "Y<nom> is on X<nom>"
|
||||
have_V2 = mkV2 (lin V ladaa_V) (casePrep nom) ; -- "X has Y" literally "Y<nom> is on X<nom>"
|
||||
--have_V2 = dirV2 (regV "يَملِك") ; -- "X<nom> owns/possesses Y<acc>"
|
||||
|
||||
lin language_title_Utt = {s = \\_ => "العربية"} ;
|
||||
|
||||
4
src/armenian/AdjectiveHye.gf
Normal file
4
src/armenian/AdjectiveHye.gf
Normal file
@@ -0,0 +1,4 @@
|
||||
concrete AdjectiveHye of Adjective = CatHye ** {
|
||||
lin
|
||||
PositA a = a ;
|
||||
}
|
||||
4
src/armenian/AllHye.gf
Normal file
4
src/armenian/AllHye.gf
Normal file
@@ -0,0 +1,4 @@
|
||||
concrete AllHye of AllHyeAbs =
|
||||
LangHye
|
||||
**
|
||||
{} ;
|
||||
3
src/armenian/AllHyeAbs.gf
Normal file
3
src/armenian/AllHyeAbs.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
abstract AllHyeAbs =
|
||||
Lang
|
||||
** {}
|
||||
16
src/armenian/CatHye.gf
Normal file
16
src/armenian/CatHye.gf
Normal file
@@ -0,0 +1,16 @@
|
||||
concrete CatHye of Cat = CommonX ** open ResHye in {
|
||||
|
||||
lincat V = Verb ;
|
||||
lincat VV,VS,VQ,VA = Verb ;
|
||||
lincat V2 = Verb ** {c2 : Compl} ;
|
||||
lincat V3,V2A,V2S,V2Q,V2V = Verb ** {c2,c3 : Compl} ;
|
||||
lincat N = Noun ;
|
||||
lincat N2 = Noun ** {c2 : Compl} ;
|
||||
lincat N3 = Noun ** {c2,c3 : Compl} ;
|
||||
lincat CN = Noun ;
|
||||
lincat A = Adj ;
|
||||
lincat A2 = Adj ** {c2 : Compl} ;
|
||||
lincat AP = Adj ;
|
||||
lincat Prep = Compl ;
|
||||
|
||||
}
|
||||
133
src/armenian/DocumentationHye.gf
Normal file
133
src/armenian/DocumentationHye.gf
Normal file
@@ -0,0 +1,133 @@
|
||||
concrete DocumentationHye of Documentation = CatHye ** open
|
||||
ResHye, Prelude, HTML in {
|
||||
|
||||
lincat
|
||||
Inflection = {t : Str; s1,s2,s3 : Str} ;
|
||||
Definition = {s : Str} ;
|
||||
Document = {s : Str} ;
|
||||
Tag = {s : Str} ;
|
||||
|
||||
lin
|
||||
InflectionV,InflectionV2,InflectionV2A,InflectionV2Q,InflectionV2S,InflectionV2V,InflectionV3,InflectionVA,InflectionVQ,InflectionVS,InflectionVV = \x -> {
|
||||
t="v" ;
|
||||
s1="" ;
|
||||
s2=heading1 "Infinitive" ++
|
||||
paragraph (x.s) ++
|
||||
heading1 "Converb" ++
|
||||
frameTable (
|
||||
tr (th "Imperfective" ++ td (x.Converb.Imperfective)) ++
|
||||
tr (th "Simultaneous" ++ td (x.Converb.Simultaneous)) ++
|
||||
tr (th "Perfective" ++ td (x.Converb.Perfective)) ++
|
||||
tr (th "Futute I" ++ td (x.Converb.FutCon1)) ++
|
||||
tr (th "Futute II" ++ td (x.Converb.FutCon2)) ++
|
||||
tr (th "Connegative" ++ td (x.Converb.Negative))) ++
|
||||
heading1 "Passive" ++
|
||||
paragraph x.Passive ++
|
||||
heading1 "Participle" ++
|
||||
frameTable (
|
||||
tr (th "Resultative" ++ td (x.Participle ! Resultative)) ++
|
||||
tr (th "Subject" ++ td (x.Participle ! Subject))) ++
|
||||
heading1 "Past" ++
|
||||
frameTable (
|
||||
tr (th "" ++ th "Sg" ++ th "Pl") ++
|
||||
tr (th "P1" ++ td (x.Past ! P1 ! Sg) ++ td (x.Past ! P1 ! Pl)) ++
|
||||
tr (th "P2" ++ td (x.Past ! P2 ! Sg) ++ td (x.Past ! P2 ! Pl)) ++
|
||||
tr (th "P3" ++ td (x.Past ! P3 ! Sg) ++ td (x.Past ! P3 ! Pl))) ++
|
||||
heading1 "Subjunctive" ++
|
||||
frameTable (
|
||||
tr (intagAttr "th" "colspan=\"2\"" "" ++ th "Sg" ++ th "Pl") ++
|
||||
tr (intagAttr "th" "rowspan=\"3\"" "Perfect" ++
|
||||
th "P1" ++ td (x.Subjunctive ! Perfect ! P1 ! Sg) ++ td (x.Subjunctive ! Perfect ! P1 ! Pl)) ++
|
||||
tr (th "P2" ++ td (x.Subjunctive ! Perfect ! P2 ! Sg) ++ td (x.Subjunctive ! Perfect ! P2 ! Pl)) ++
|
||||
tr (th "P3" ++ td (x.Subjunctive ! Perfect ! P3 ! Sg) ++ td (x.Subjunctive ! Perfect ! P3 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"3\"" "Non_Past" ++
|
||||
th "P1" ++ td (x.Subjunctive ! Non_Past ! P1 ! Sg) ++ td (x.Subjunctive ! Non_Past ! P1 ! Pl)) ++
|
||||
tr (th "P2" ++ td (x.Subjunctive ! Non_Past ! P2 ! Sg) ++ td (x.Subjunctive ! Non_Past ! P2 ! Pl)) ++
|
||||
tr (th "P3" ++ td (x.Subjunctive ! Non_Past ! P3 ! Sg) ++ td (x.Subjunctive ! Non_Past ! P3 ! Pl))) ++
|
||||
heading1 "Conditional" ++
|
||||
frameTable (
|
||||
tr (intagAttr "th" "colspan=\"2\"" "" ++ th "Sg" ++ th "Pl") ++
|
||||
tr (intagAttr "th" "rowspan=\"3\"" "Perfect" ++
|
||||
th "P1" ++ td (x.Conditional ! Perfect ! P1 ! Sg) ++ td (x.Conditional ! Perfect ! P1 ! Pl)) ++
|
||||
tr (th "P2" ++ td (x.Conditional ! Perfect ! P2 ! Sg) ++ td (x.Conditional ! Perfect ! P2 ! Pl)) ++
|
||||
tr (th "P3" ++ td (x.Conditional ! Perfect ! P3 ! Sg) ++ td (x.Conditional ! Perfect ! P3 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"4\"" "Non_Past" ++
|
||||
th "P1" ++ td (x.Conditional ! Non_Past ! P1 ! Sg) ++ td (x.Conditional ! Non_Past ! P1 ! Pl)) ++
|
||||
tr (th "P2" ++ td (x.Conditional ! Non_Past ! P2 ! Sg) ++ td (x.Conditional ! Non_Past ! P2 ! Pl)) ++
|
||||
tr (th "P3" ++ td (x.Conditional ! Non_Past ! P3 ! Sg) ++ td (x.Conditional ! Non_Past ! P3 ! Pl))) ++
|
||||
heading1 "Imperative" ++
|
||||
frameTable (
|
||||
tr (th "Sg" ++ th "Pl") ++
|
||||
tr (td (x.Imperative_Jussive ! Sg) ++ td (x.Imperative_Jussive ! Pl))) ;
|
||||
s3=[]
|
||||
} ;
|
||||
lin
|
||||
InflectionN,InflectionN2,InflectionN3 = \x -> {
|
||||
t="n" ;
|
||||
s1="" ;
|
||||
s2=frameTable (
|
||||
tr (th "" ++ th "Sg" ++ th "Pl") ++
|
||||
tr (th "Nom" ++ td (x.s ! Nom ! Sg) ++ td (x.s ! Nom ! Pl)) ++
|
||||
tr (th "Dat" ++ td (x.s ! Dat ! Sg) ++ td (x.s ! Dat ! Pl)) ++
|
||||
tr (th "Ablat" ++ td (x.s ! Ablat ! Sg) ++ td (x.s ! Ablat ! Pl)) ++
|
||||
tr (th "Instr" ++ td (x.s ! Instr ! Sg) ++ td (x.s ! Instr ! Pl)) ++
|
||||
tr (th "Loc" ++ td (x.s ! Loc ! Sg) ++ td (x.s ! Loc ! Pl)) ++
|
||||
tr (intagAttr "th" "colspan=\"3\"" "definite forms") ++
|
||||
tr (th "Nom" ++ td (x.def_nom ! Sg) ++ td (x.def_nom ! Pl)) ++
|
||||
tr (th "Dat" ++ td (x.def_dat ! Sg) ++ td (x.def_dat ! Pl)) ++
|
||||
tr (intagAttr "th" "colspan=\"3\"" "1st person possessive forms") ++
|
||||
tr (th "Nom" ++ td (x.poss1 ! Nom ! Sg) ++ td (x.poss1 ! Nom ! Pl)) ++
|
||||
tr (th "Dat" ++ td (x.poss1 ! Dat ! Sg) ++ td (x.poss1 ! Dat ! Pl)) ++
|
||||
tr (th "Ablat" ++ td (x.poss1 ! Ablat ! Sg) ++ td (x.poss1 ! Ablat ! Pl)) ++
|
||||
tr (th "Instr" ++ td (x.poss1 ! Instr ! Sg) ++ td (x.poss1 ! Instr ! Pl)) ++
|
||||
tr (th "Loc" ++ td (x.poss1 ! Loc ! Sg) ++ td (x.poss1 ! Loc ! Pl)) ++
|
||||
tr (intagAttr "th" "colspan=\"3\"" "2nd person possessive forms") ++
|
||||
tr (th "Nom" ++ td (x.poss2 ! Nom ! Sg) ++ td (x.poss2 ! Nom ! Pl)) ++
|
||||
tr (th "Dat" ++ td (x.poss2 ! Dat ! Sg) ++ td (x.poss2 ! Dat ! Pl)) ++
|
||||
tr (th "Ablat" ++ td (x.poss2 ! Ablat ! Sg) ++ td (x.poss2 ! Ablat ! Pl)) ++
|
||||
tr (th "Instr" ++ td (x.poss2 ! Instr ! Sg) ++ td (x.poss2 ! Instr ! Pl)) ++
|
||||
tr (th "Loc" ++ td (x.poss2 ! Loc ! Sg) ++ td (x.poss2 ! Loc ! Pl))) ;
|
||||
s3=[]
|
||||
} ;
|
||||
lin
|
||||
InflectionA,InflectionA2 = \x -> {
|
||||
t="a" ;
|
||||
s1="" ;
|
||||
s2=frameTable (
|
||||
tr (th "" ++ th "Sg" ++ th "Pl") ++
|
||||
tr (th "Nom" ++ td (x.s ! Nom ! Sg) ++ td (x.s ! Nom ! Pl)) ++
|
||||
tr (th "Dat" ++ td (x.s ! Dat ! Sg) ++ td (x.s ! Dat ! Pl)) ++
|
||||
tr (th "Ablat" ++ td (x.s ! Ablat ! Sg) ++ td (x.s ! Ablat ! Pl)) ++
|
||||
tr (th "Instr" ++ td (x.s ! Instr ! Sg) ++ td (x.s ! Instr ! Pl)) ++
|
||||
tr (th "Loc" ++ td (x.s ! Loc ! Sg) ++ td (x.s ! Loc ! Pl)) ++
|
||||
tr (intagAttr "th" "colspan=\"3\"" "definite forms") ++
|
||||
tr (th "Nom" ++ td (x.def_nom ! Sg) ++ td (x.def_nom ! Pl)) ++
|
||||
tr (th "Dat" ++ td (x.def_dat ! Sg) ++ td (x.def_dat ! Pl)) ++
|
||||
tr (intagAttr "th" "colspan=\"3\"" "1st person possessive forms") ++
|
||||
tr (th "Nom" ++ td (x.poss1 ! Nom ! Sg) ++ td (x.poss1 ! Nom ! Pl)) ++
|
||||
tr (th "Dat" ++ td (x.poss1 ! Dat ! Sg) ++ td (x.poss1 ! Dat ! Pl)) ++
|
||||
tr (th "Ablat" ++ td (x.poss1 ! Ablat ! Sg) ++ td (x.poss1 ! Ablat ! Pl)) ++
|
||||
tr (th "Instr" ++ td (x.poss1 ! Instr ! Sg) ++ td (x.poss1 ! Instr ! Pl)) ++
|
||||
tr (th "Loc" ++ td (x.poss1 ! Loc ! Sg) ++ td (x.poss1 ! Loc ! Pl)) ++
|
||||
tr (intagAttr "th" "colspan=\"3\"" "2nd person possessive forms") ++
|
||||
tr (th "Nom" ++ td (x.poss2 ! Nom ! Sg) ++ td (x.poss2 ! Nom ! Pl)) ++
|
||||
tr (th "Dat" ++ td (x.poss2 ! Dat ! Sg) ++ td (x.poss2 ! Dat ! Pl)) ++
|
||||
tr (th "Ablat" ++ td (x.poss2 ! Ablat ! Sg) ++ td (x.poss2 ! Ablat ! Pl)) ++
|
||||
tr (th "Instr" ++ td (x.poss2 ! Instr ! Sg) ++ td (x.poss2 ! Instr ! Pl)) ++
|
||||
tr (th "Loc" ++ td (x.poss2 ! Loc ! Sg) ++ td (x.poss2 ! Loc ! Pl))) ;
|
||||
s3=[]
|
||||
} ;
|
||||
lin
|
||||
InflectionAdA,InflectionAdN,InflectionAdV,InflectionAdv = \x -> {t="adv"; s1=""; s2=x.s; s3=""} ;
|
||||
|
||||
InflectionPrep = \x -> {t="prep"; s1=""; s2=x.s; s3=""} ;
|
||||
|
||||
lin
|
||||
NoDefinition t = {s=t.s};
|
||||
MkDefinition t d = {s="<p><b>Definition:</b>"++t.s++d.s++"</p>"};
|
||||
MkDefinitionEx t d e = {s="<p><b>Definition:</b>"++t.s++d.s++"</p><p><b>Example:</b>"++e.s++"</p>"};
|
||||
|
||||
lin
|
||||
MkDocument d i e = {s = i.s1 ++ d.s ++ i.s2 ++ i.s3 ++ e.s} ;
|
||||
MkTag i = {s = i.t} ;
|
||||
}
|
||||
6
src/armenian/GrammarHye.gf
Normal file
6
src/armenian/GrammarHye.gf
Normal file
@@ -0,0 +1,6 @@
|
||||
concrete GrammarHye of Grammar =
|
||||
TenseX,
|
||||
PhraseHye,
|
||||
NounHye,
|
||||
AdjectiveHye ** {
|
||||
}
|
||||
10
src/armenian/LangHye.gf
Normal file
10
src/armenian/LangHye.gf
Normal file
@@ -0,0 +1,10 @@
|
||||
--# -path=.:../abstract
|
||||
concrete LangHye of Lang =
|
||||
GrammarHye,
|
||||
LexiconHye
|
||||
,DocumentationHye --# notpresent
|
||||
** {
|
||||
|
||||
flags startcat = Phr ;
|
||||
|
||||
}
|
||||
2
src/armenian/LexiconHye.gf
Normal file
2
src/armenian/LexiconHye.gf
Normal file
@@ -0,0 +1,2 @@
|
||||
concrete LexiconHye of Lexicon = CatHye ** open ParadigmsHye in {
|
||||
}
|
||||
7506
src/armenian/MorphoHye.gf
Normal file
7506
src/armenian/MorphoHye.gf
Normal file
File diff suppressed because it is too large
Load Diff
4
src/armenian/NounHye.gf
Normal file
4
src/armenian/NounHye.gf
Normal file
@@ -0,0 +1,4 @@
|
||||
concrete NounHye of Noun = CatHye ** {
|
||||
lin
|
||||
UseN n = n ;
|
||||
}
|
||||
491
src/armenian/ParadigmsHye.gf
Normal file
491
src/armenian/ParadigmsHye.gf
Normal file
@@ -0,0 +1,491 @@
|
||||
resource ParadigmsHye = MorphoHye ** open Predef, Prelude, CatHye, ResHye in {
|
||||
oper
|
||||
regV : Str -> V -- s
|
||||
= \form -> case form of {
|
||||
_ + "ղալ" => mkV002 form;
|
||||
_ + "ձալ" => mkV002 form;
|
||||
_ + "զալ" => mkV002 form;
|
||||
_ + "լալ" => mkV002 form;
|
||||
_ + "թալ" => mkV002 form;
|
||||
_ + "ռալ" => mkV002 form;
|
||||
_ + "րալ" => mkV002 form;
|
||||
_ + "ւալ" => mkV002 form;
|
||||
_ + "ջալ" => mkV002 form;
|
||||
_ + "գալ" => mkV002 form;
|
||||
_ + "տալ" => mkV002 form;
|
||||
_ + "ճալ" => mkV002 form;
|
||||
_ + "սալ" => mkV002 form;
|
||||
_ + "փալ" => mkV002 form;
|
||||
_ + "կալ" => mkV002 form;
|
||||
_ + "վալ" => mkV002 form;
|
||||
_ + "բալ" => mkV002 form;
|
||||
_ + "ծալ" => mkV002 form;
|
||||
_ + "չալ" => mkV002 form;
|
||||
_ + "նալ" => mkV004 form;
|
||||
_ + "ել" => mkV001 form;
|
||||
_ => error "Cannot find an inflection rule"
|
||||
} ;
|
||||
|
||||
reg2V : Str -> Str -> V -- s Imperative_Jussive;Pl
|
||||
= \form1, form2 -> case <form1, form2> of {
|
||||
<_ + "լ", _ + "է՛ք"> => mkV012 form1;
|
||||
_ => regV form1
|
||||
} ;
|
||||
|
||||
regN : Str -> N -- s;Nom;Sg
|
||||
= \form -> case form of {
|
||||
_ + "իւն" => mkN008 form;
|
||||
_ + "ժամ" => mkN007 form;
|
||||
_ + "մոմ" => mkN007 form;
|
||||
_ + "ւնտ" => mkN007 form;
|
||||
_ + "րստ" => mkN007 form;
|
||||
_ + "խոտ" => mkN007 form;
|
||||
_ + "ելտ" => mkN007 form;
|
||||
_ + "տառ" => mkN007 form;
|
||||
_ + "երդ" => mkN007 form;
|
||||
_ + "ձող" => mkN007 form;
|
||||
_ + "փող" => mkN007 form;
|
||||
_ + "հող" => mkN007 form;
|
||||
_ + "խաղ" => mkN007 form;
|
||||
_ + "իկղ" => mkN007 form;
|
||||
_ + "շոր" => mkN007 form;
|
||||
_ + "զոր" => mkN007 form;
|
||||
_ + "շեր" => mkN016 form;
|
||||
_ + "եգր" => mkN007 form;
|
||||
_ + "թել" => mkN007 form;
|
||||
_ + "խել" => mkN007 form;
|
||||
_ + "ճոճ" => mkN007 form;
|
||||
_ + "իցք" => mkN007 form;
|
||||
_ + "ենք" => mkN007 form;
|
||||
_ + "ուրծք" => mkN005 form;
|
||||
_ + "յծք" => mkN007 form;
|
||||
_ + "նչք" => mkN007 form;
|
||||
_ + "ծոց" => mkN007 form;
|
||||
_ + "այց" => mkN007 form;
|
||||
_ + "կաց" => mkN007 form;
|
||||
_ + "ջիջ" => mkN013 form;
|
||||
_ + "եղջ" => mkN007 form;
|
||||
_ + "ւրթ" => mkN007 form;
|
||||
_ + "յոթ" => mkN007 form;
|
||||
_ + "ճապ" => mkN001 form;
|
||||
_ + "րապ" => mkN001 form;
|
||||
_ + "լեպ" => mkN001 form;
|
||||
_ + "ծագ" => mkN007 form;
|
||||
_ + "ենգ" => mkN007 form;
|
||||
_ + "գիչ" => mkN013 form;
|
||||
_ + "միչ" => mkN013 form;
|
||||
_ + "տիչ" => mkN013 form;
|
||||
_ + "նիչ" => mkN013 form;
|
||||
_ + "ւրծ" => mkN007 form;
|
||||
_ + "թու" => mkN012 form;
|
||||
_ + "զու" => mkN012 form;
|
||||
_ + "ռու" => mkN012 form;
|
||||
_ + "ճու" => mkN012 form;
|
||||
_ + "ղու" => mkN012 form;
|
||||
_ + "ճաշ" => mkN007 form;
|
||||
_ + "վիշ" => mkN013 form;
|
||||
_ + "ուրձ" => mkN005 form;
|
||||
_ + "դհի" => mkN006 form;
|
||||
_ + "ւդի" => mkN006 form;
|
||||
_ + "ուն" => mkN010 form;
|
||||
_ + "սն" => mkN007 form;
|
||||
_ + "կն" => mkN007 form;
|
||||
_ + "շն" => mkN007 form;
|
||||
_ + "մն" => mkN007 form;
|
||||
_ + "ռն" => mkN007 form;
|
||||
_ + "ձն" => mkN007 form;
|
||||
_ + "նն" => mkN007 form;
|
||||
_ + "ւմ" => mkN004 form;
|
||||
_ + "րմ" => mkN007 form;
|
||||
_ + "ղմ" => mkN007 form;
|
||||
_ + "յմ" => mkN007 form;
|
||||
_ + "հմ" => mkN007 form;
|
||||
_ + "լմ" => mkN007 form;
|
||||
_ + "յտ" => mkN007 form;
|
||||
_ + "յռ" => mkN007 form;
|
||||
_ + "ղդ" => mkN007 form;
|
||||
_ + "տղ" => mkN007 form;
|
||||
_ + "ղխ" => mkN007 form;
|
||||
_ + "լխ" => mkN007 form;
|
||||
_ + "ճխ" => mkN007 form;
|
||||
_ + "չխ" => mkN007 form;
|
||||
_ + "ղկ" => mkN007 form;
|
||||
_ + "սկ" => mkN007 form;
|
||||
_ + "տր" => mkN007 form;
|
||||
_ + "կր" => mkN007 form;
|
||||
_ + "նր" => mkN007 form;
|
||||
_ + "ղր" => mkN007 form;
|
||||
_ + "խր" => mkN007 form;
|
||||
_ + "բր" => mkN007 form;
|
||||
_ + "օր" => mkN016 form;
|
||||
_ + "յլ" => mkN007 form;
|
||||
_ + "րս" => mkN007 form;
|
||||
_ + "մս" => mkN007 form;
|
||||
_ + "փս" => mkN007 form;
|
||||
_ + "լս" => mkN007 form;
|
||||
_ + "րճ" => mkN007 form;
|
||||
_ + "եճ" => mkN007 form;
|
||||
_ + "աճ" => mkN007 form;
|
||||
_ + "նճ" => mkN007 form;
|
||||
_ + "ջք" => mkN007 form;
|
||||
_ + "մք" => mkN007 form;
|
||||
_ + "վք" => mkN007 form;
|
||||
_ + "թք" => mkN007 form;
|
||||
_ + "բք" => mkN007 form;
|
||||
_ + "խց" => mkN007 form;
|
||||
_ + "ղց" => mkN007 form;
|
||||
_ + "վթ" => mkN007 form;
|
||||
_ + "ղբ" => mkN007 form;
|
||||
_ + "րբ" => mkN007 form;
|
||||
_ + "ուբ" => mkN005 form;
|
||||
_ + "զբ" => mkN007 form;
|
||||
_ + "եբ" => mkN007 form;
|
||||
_ + "ոպ" => mkN001 form;
|
||||
_ + "ւպ" => mkN001 form;
|
||||
_ + "իպ" => mkN001 form;
|
||||
_ + "եգ" => mkN007 form;
|
||||
_ + "իգ" => mkN007 form;
|
||||
_ + "ոգ" => mkN007 form;
|
||||
_ + "յգ" => mkN007 form;
|
||||
_ + "ուրչ" => mkN005 form;
|
||||
_ + "շչ" => mkN007 form;
|
||||
_ + "նծ" => mkN007 form;
|
||||
_ + "եծ" => mkN007 form;
|
||||
_ + "յծ" => mkN007 form;
|
||||
_ + "եւ" => mkN001 form;
|
||||
_ + "աւ" => mkN001 form;
|
||||
_ + "ւժ" => mkN007 form;
|
||||
_ + "իժ" => mkN013 form;
|
||||
_ + "քշ" => mkN007 form;
|
||||
_ + "րշ" => mkN007 form;
|
||||
_ + "ուզ" => mkN005 form;
|
||||
_ + "րզ" => mkN007 form;
|
||||
_ + "ավ" => mkN007 form;
|
||||
_ + "յվ" => mkN007 form;
|
||||
_ + "աֆ" => mkN001 form;
|
||||
_ + "լֆ" => mkN001 form;
|
||||
_ + "իփ" => mkN001 form;
|
||||
_ + "ափ" => mkN001 form;
|
||||
_ + "ոյ" => mkN007 form;
|
||||
_ + "լի" => mkN006 form;
|
||||
_ + "բի" => mkN006 form;
|
||||
_ + "խի" => mkN006 form;
|
||||
_ + "թի" => mkN006 form;
|
||||
_ + "պի" => mkN006 form;
|
||||
_ + "վի" => mkN006 form;
|
||||
_ + "փի" => mkN006 form;
|
||||
_ + "աի" => mkN006 form;
|
||||
_ + "ջի" => mkN006 form;
|
||||
_ + "ն" => mkN001 form;
|
||||
_ + "մ" => mkN001 form;
|
||||
_ + "տ" => mkN001 form;
|
||||
_ + "ռ" => mkN001 form;
|
||||
_ + "դ" => mkN001 form;
|
||||
_ + "ղ" => mkN001 form;
|
||||
_ + "խ" => mkN001 form;
|
||||
_ + "կ" => mkN001 form;
|
||||
_ + "ր" => mkN001 form;
|
||||
_ + "լ" => mkN001 form;
|
||||
_ + "ս" => mkN001 form;
|
||||
_ + "ճ" => mkN001 form;
|
||||
_ + "ք" => mkN001 form;
|
||||
_ + "ց" => mkN001 form;
|
||||
_ + "ջ" => mkN001 form;
|
||||
_ + "թ" => mkN001 form;
|
||||
_ + "բ" => mkN001 form;
|
||||
_ + "պ" => mkN007 form;
|
||||
_ + "գ" => mkN001 form;
|
||||
_ + "չ" => mkN001 form;
|
||||
_ + "ծ" => mkN001 form;
|
||||
_ + "ւ" => mkN006 form;
|
||||
_ + "ժ" => mkN001 form;
|
||||
_ + "շ" => mkN001 form;
|
||||
_ + "զ" => mkN001 form;
|
||||
_ + "ձ" => mkN007 form;
|
||||
_ + "վ" => mkN001 form;
|
||||
_ + "ֆ" => mkN007 form;
|
||||
_ + "հ" => mkN001 form;
|
||||
_ + "փ" => mkN007 form;
|
||||
_ + "յ" => mkN001 form;
|
||||
_ + "ա" => mkN002 form;
|
||||
_ + "ո" => mkN002 form;
|
||||
_ + "ի" => mkN003 form;
|
||||
_ + "ե" => mkN006 form;
|
||||
_ + "է" => mkN006 form;
|
||||
_ => error "Cannot find an inflection rule"
|
||||
} ;
|
||||
|
||||
reg2N : Str -> Str -> N -- s;Nom;Sg s;Dat;Sg
|
||||
= \form1, form2 -> case <form1, form2> of {
|
||||
<_ + "թու", _ + "ւի"> => mkN006 form1;
|
||||
<_ + "շեր", _ + "ի"> => mkN001 form1;
|
||||
<_ + "ժամ", _ + "ա"> => mkN016 form1;
|
||||
<_ + "ուն", _ + "բնի"> => mkN005 form1;
|
||||
<_ + "ւն", _ + "վան"> => mkN009 form1;
|
||||
<_ + "ւն", _ + "տան"> => mkN028 form1;
|
||||
<_ + "ւն", _ + "շան"> => mkN028 form1;
|
||||
<_ + "ւզ", _ + "ւզի"> => mkN001 form1;
|
||||
<_ + "ւն", _ + "ի"> => mkN001 form1;
|
||||
<_ + "ւն", _ + "ա"> => mkN032 form1;
|
||||
<_ + "ւմ", _ + "ի"> => mkN001 form1;
|
||||
<_ + "լի", _ + "ւ"> => mkN003 form1;
|
||||
<_ + "բի", _ + "ւ"> => mkN003 form1;
|
||||
<_ + "խի", _ + "ւ"> => mkN003 form1;
|
||||
<_ + "թի", _ + "ւ"> => mkN003 form1;
|
||||
<_ + "տ", _ + "մտի"> => mkN005 form1;
|
||||
<_ + "տ", _ + "գտի"> => mkN005 form1;
|
||||
<_ + "տ", _ + "վտի"> => mkN013 form1;
|
||||
<_ + "ռ", _ + "ճռի"> => mkN013 form1;
|
||||
<_ + "ն", _ + "ծնի"> => mkN013 form1;
|
||||
<_ + "ն", _ + "տնի"> => mkN013 form1;
|
||||
<_ + "ն", _ + "ցնի"> => mkN013 form1;
|
||||
<_ + "ն", _ + "ձնի"> => mkN013 form1;
|
||||
<_ + "ն", _ + "բնի"> => mkN013 form1;
|
||||
<_ + "ն", _ + "խնի"> => mkN013 form1;
|
||||
<_ + "ղ", _ + "ւղի"> => mkN007 form1;
|
||||
<_ + "ղ", _ + "վղի"> => mkN013 form1;
|
||||
<_ + "ղ", _ + "փղի"> => mkN015 form1;
|
||||
<_ + "ղ", _ + "տղի"> => mkN031 form1;
|
||||
<_ + "խ", _ + "ծխի"> => mkN005 form1;
|
||||
<_ + "խ", _ + "բխի"> => mkN031 form1;
|
||||
<_ + "կ", _ + "ղկի"> => mkN013 form1;
|
||||
<_ + "կ", _ + "տկի"> => mkN013 form1;
|
||||
<_ + "կ", _ + "պկի"> => mkN013 form1;
|
||||
<_ + "կ", _ + "զկի"> => mkN031 form1;
|
||||
<_ + "ս", _ + "մսի"> => mkN013 form1;
|
||||
<_ + "ճ", _ + "վճի"> => mkN013 form1;
|
||||
<_ + "ճ", _ + "հճի"> => mkN013 form1;
|
||||
<_ + "ց", _ + "տցի"> => mkN005 form1;
|
||||
<_ + "ց", _ + "կցի"> => mkN013 form1;
|
||||
<_ + "ր", _ + "դրի"> => mkN013 form1;
|
||||
<_ + "ր", _ + "գրի"> => mkN015 form1;
|
||||
<_ + "ր", _ + "տրի"> => mkN005 form1;
|
||||
<_ + "ր", _ + "ջրի"> => mkN005 form1;
|
||||
<_ + "ր", _ + "լրի"> => mkN005 form1;
|
||||
<_ + "ր", _ + "նրի"> => mkN013 form1;
|
||||
<_ + "ր", _ + "խրի"> => mkN013 form1;
|
||||
<_ + "ր", _ + "կրի"> => mkN013 form1;
|
||||
<_ + "ր", _ + "ցրի"> => mkN013 form1;
|
||||
<_ + "չ", _ + "պչի"> => mkN013 form1;
|
||||
<_ + "չ", _ + "կչի"> => mkN013 form1;
|
||||
<_ + "չ", _ + "րչի"> => mkN013 form1;
|
||||
<_ + "չ", _ + "ցչի"> => mkN013 form1;
|
||||
<_ + "չ", _ + "վչի"> => mkN013 form1;
|
||||
<_ + "ծ", _ + "գծի"> => mkN015 form1;
|
||||
<_ + "շ", _ + "փշի"> => mkN005 form1;
|
||||
<_ + "ի", _ + "իու"> => mkN027 form1;
|
||||
<_ + "ի", _ + "ձիի"> => mkN017 form1;
|
||||
<_ + "ւ", _ + "վի"> => mkN012 form1;
|
||||
<_ + "տ", _ + "ա"> => mkN016 form1;
|
||||
<_ + "ռ", _ + "ն"> => mkN026 form1;
|
||||
<_ + "ն", _ + "ջ"> => mkN034 form1;
|
||||
<_ + "կ", _ + "ա"> => mkN016 form1;
|
||||
<_ + "կ", _ + "ն"> => mkN023 form1;
|
||||
<_ + "ր", _ + "ջ"> => mkN043 form1;
|
||||
<_ + "ի", _ + "ի"> => mkN006 form1;
|
||||
_ => regN form1
|
||||
} ;
|
||||
|
||||
regA : Str -> A -- s;Nom;Sg
|
||||
= \form -> case form of {
|
||||
_ + "կիչ" => mkA006 form;
|
||||
_ + "ենգ" => mkA005 form;
|
||||
_ + "աղջ" => mkA005 form;
|
||||
_ + "սկի" => mkA003 form;
|
||||
_ + "աղի" => mkA003 form;
|
||||
_ + "ղց" => mkA005 form;
|
||||
_ + "ջն" => mkA005 form;
|
||||
_ + "եպ" => mkA005 form;
|
||||
_ + "նտ" => mkA005 form;
|
||||
_ + "ոդ" => mkA005 form;
|
||||
_ + "ղծ" => mkA005 form;
|
||||
_ + "յծ" => mkA005 form;
|
||||
_ + "եծ" => mkA005 form;
|
||||
_ + "ձր" => mkA005 form;
|
||||
_ + "նր" => mkA005 form;
|
||||
_ + "ծր" => mkA005 form;
|
||||
_ + "մր" => mkA005 form;
|
||||
_ + "սր" => mkA005 form;
|
||||
_ + "քր" => mkA005 form;
|
||||
_ + "ցր" => mkA005 form;
|
||||
_ + "եւ" => mkA001 form;
|
||||
_ + "ոկ" => mkA005 form;
|
||||
_ + "ղմ" => mkA005 form;
|
||||
_ + "տք" => mkA005 form;
|
||||
_ + "իղ" => mkA006 form;
|
||||
_ + "նչ" => mkA008 form;
|
||||
_ + "ոխ" => mkA005 form;
|
||||
_ + "ղխ" => mkA005 form;
|
||||
_ + "ղթ" => mkA005 form;
|
||||
_ + "ւթ" => mkA011 form;
|
||||
_ + "րշ" => mkA005 form;
|
||||
_ + "եշ" => mkA005 form;
|
||||
_ + "քշ" => mkA005 form;
|
||||
_ + "ոռ" => mkA005 form;
|
||||
_ + "ւգ" => mkA005 form;
|
||||
_ + "եգ" => mkA005 form;
|
||||
_ + "րճ" => mkA005 form;
|
||||
_ + "րզ" => mkA005 form;
|
||||
_ + "եզ" => mkA005 form;
|
||||
_ + "ւփ" => mkA005 form;
|
||||
_ + "նջ" => mkA005 form;
|
||||
_ + "աջ" => mkA005 form;
|
||||
_ + "մբ" => mkA001 form;
|
||||
_ + "ոյ" => mkA001 form;
|
||||
_ + "բի" => mkA003 form;
|
||||
_ + "սի" => mkA003 form;
|
||||
_ + "ց" => mkA001 form;
|
||||
_ + "ն" => mkA001 form;
|
||||
_ + "պ" => mkA001 form;
|
||||
_ + "տ" => mkA001 form;
|
||||
_ + "դ" => mkA001 form;
|
||||
_ + "վ" => mkA001 form;
|
||||
_ + "ծ" => mkA001 form;
|
||||
_ + "ձ" => mkA001 form;
|
||||
_ + "ր" => mkA001 form;
|
||||
_ + "լ" => mkA001 form;
|
||||
_ + "ւ" => mkA002 form;
|
||||
_ + "կ" => mkA001 form;
|
||||
_ + "մ" => mkA001 form;
|
||||
_ + "ք" => mkA001 form;
|
||||
_ + "ղ" => mkA001 form;
|
||||
_ + "չ" => mkA001 form;
|
||||
_ + "ժ" => mkA001 form;
|
||||
_ + "խ" => mkA001 form;
|
||||
_ + "թ" => mkA001 form;
|
||||
_ + "ս" => mkA001 form;
|
||||
_ + "շ" => mkA001 form;
|
||||
_ + "հ" => mkA001 form;
|
||||
_ + "ռ" => mkA001 form;
|
||||
_ + "գ" => mkA001 form;
|
||||
_ + "ճ" => mkA001 form;
|
||||
_ + "զ" => mkA001 form;
|
||||
_ + "փ" => mkA001 form;
|
||||
_ + "ջ" => mkA001 form;
|
||||
_ + "բ" => mkA005 form;
|
||||
_ + "յ" => mkA005 form;
|
||||
_ + "ե" => mkA002 form;
|
||||
_ + "ի" => mkA002 form;
|
||||
_ + "ա" => mkA004 form;
|
||||
_ + "ո" => mkA004 form;
|
||||
_ => error "Cannot find an inflection rule"
|
||||
} ;
|
||||
|
||||
reg2A : Str -> Str -> A -- s;Nom;Sg s;Nom;Pl
|
||||
= \form1, form2 -> case <form1, form2> of {
|
||||
<_ + "ոռ", _ + "ներ"> => mkA001 form1;
|
||||
<_ + "տ", _ + "տեր"> => mkA005 form1;
|
||||
<_ + "վ", _ + "վեր"> => mkA005 form1;
|
||||
<_ + "ծ", _ + "ծեր"> => mkA005 form1;
|
||||
<_ + "ձ", _ + "ձեր"> => mkA005 form1;
|
||||
<_ + "լ", _ + "լեր"> => mkA005 form1;
|
||||
<_ + "կ", _ + "կեր"> => mkA005 form1;
|
||||
<_ + "մ", _ + "մեր"> => mkA005 form1;
|
||||
<_ + "ք", _ + "քեր"> => mkA005 form1;
|
||||
<_ + "ղ", _ + "ղեր"> => mkA005 form1;
|
||||
<_ + "խ", _ + "խեր"> => mkA005 form1;
|
||||
<_ + "թ", _ + "թեր"> => mkA005 form1;
|
||||
<_ + "շ", _ + "շեր"> => mkA005 form1;
|
||||
<_ + "հ", _ + "հեր"> => mkA005 form1;
|
||||
<_ + "ռ", _ + "ռեր"> => mkA005 form1;
|
||||
<_ + "գ", _ + "գեր"> => mkA005 form1;
|
||||
<_ + "ճ", _ + "ճեր"> => mkA005 form1;
|
||||
<_ + "զ", _ + "զեր"> => mkA005 form1;
|
||||
<_ + "ջ", _ + "ջեր"> => mkA005 form1;
|
||||
_ => regA form1
|
||||
} ;
|
||||
|
||||
mkV = overload {
|
||||
mkV : Str -> V = regV; -- s
|
||||
mkV : Str -> Str -> V = reg2V -- s Imperative_Jussive;Pl
|
||||
} ;
|
||||
|
||||
mkVV : V -> VV = \v -> lin VV v ;
|
||||
mkVS : V -> VS = \v -> lin VS v ;
|
||||
mkVQ : V -> VQ = \v -> lin VQ v ;
|
||||
mkVA : V -> VA = \v -> lin VA v ;
|
||||
|
||||
mkV2 = overload {
|
||||
mkV2 : V -> V2 = \v -> lin V2 (v ** {c2 = noPrep}) ;
|
||||
mkV2 : V -> Prep -> V2 = \v,p -> lin V2 (v ** {c2 = p}) ;
|
||||
} ;
|
||||
|
||||
mkV3 = overload {
|
||||
mkV3 : V -> V3 = \v -> lin V3 (v ** {c2 = noPrep; c3 = noPrep}) ;
|
||||
mkV3 : V -> Prep -> Prep -> V3 = \v,p1,p2 -> lin V3 (v ** {c2 = p1; c3 = p2}) ;
|
||||
} ;
|
||||
|
||||
mkV2A = overload {
|
||||
mkV2A : V -> V2A = \v -> lin V2A (v ** {c2 = noPrep; c3 = noPrep}) ;
|
||||
mkV2A : V -> Prep -> Prep -> V2A = \v,p1,p2 -> lin V2A (v ** {c2 = p1; c3 = p2}) ;
|
||||
} ;
|
||||
|
||||
mkV2S = overload {
|
||||
mkV2S : V -> V2S = \v -> lin V2S (v ** {c2 = noPrep; c3 = noPrep}) ;
|
||||
mkV2S : V -> Prep -> Prep -> V2S = \v,p1,p2 -> lin V2S (v ** {c2 = p1; c3 = p2}) ;
|
||||
} ;
|
||||
|
||||
mkV2Q = overload {
|
||||
mkV2Q : V -> V2Q = \v -> lin V2Q (v ** {c2 = noPrep; c3 = noPrep}) ;
|
||||
mkV2Q : V -> Prep -> Prep -> V2Q = \v,p1,p2 -> lin V2Q (v ** {c2 = p1; c3 = p2}) ;
|
||||
} ;
|
||||
|
||||
mkV2V = overload {
|
||||
mkV2V : V -> V2V = \v -> lin V2V (v ** {c2 = noPrep; c3 = noPrep}) ;
|
||||
mkV2V : V -> Prep -> Prep -> V2V = \v,p1,p2 -> lin V2V (v ** {c2 = p1; c3 = p2}) ;
|
||||
} ;
|
||||
|
||||
mkN = overload {
|
||||
mkN : Str -> N = regN; -- s;Nom;Sg
|
||||
mkN : Str -> Str -> N = reg2N -- s;Nom;Sg s;Dat;Sg
|
||||
} ;
|
||||
|
||||
mkN2 = overload {
|
||||
mkN2 : N -> N2 = \n -> lin N2 (n ** {c2 = noPrep}) ;
|
||||
mkN2 : N -> Prep -> N2 = \n,p -> lin N2 (n ** {c2 = p}) ;
|
||||
} ;
|
||||
|
||||
mkN3 = overload {
|
||||
mkN3 : N -> N3 = \n -> lin N3 (n ** {c2 = noPrep; c3 = noPrep}) ;
|
||||
mkN3 : N -> Prep -> Prep -> N3 = \n,p1,p2 -> lin N3 (n ** {c2 = p1; c3 = p2}) ;
|
||||
} ;
|
||||
|
||||
mkA = overload {
|
||||
mkA : Str -> A = regA; -- s;Nom;Sg
|
||||
mkA : Str -> Str -> A = reg2A -- s;Nom;Sg s;Nom;Pl
|
||||
} ;
|
||||
|
||||
mkA2 = overload {
|
||||
mkA2 : A -> A2 = \a -> lin A2 (a ** {c2 = noPrep}) ;
|
||||
mkA2 : A -> Prep -> A2 = \a,p -> lin A2 (a ** {c2 = p}) ;
|
||||
} ;
|
||||
|
||||
mkAdv : Str -> Adv = \s -> lin Adv {s=s} ;
|
||||
mkAdV : Str -> AdV = \s -> lin AdV {s=s} ;
|
||||
mkAdA : Str -> AdA = \s -> lin AdA {s=s} ;
|
||||
mkAdN : Str -> AdN = \s -> lin AdN {s=s} ;
|
||||
mkCAdv : Str -> CAdv = \s -> lin CAdv {s=s; p=""} ;
|
||||
mkInterj : Str -> Interj = \s -> lin Interj {s=s} ;
|
||||
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
|
||||
|
||||
mkPrep : Str -> Prep = \s -> lin Prep {s=s; c=Dat} ;
|
||||
|
||||
mkIAdv : Str -> IAdv = \s -> lin IAdv {s=s} ;
|
||||
mkIP : Str -> IP = \s -> lin IP {s=s} ;
|
||||
mkIQuant : Str -> IQuant = \s -> lin IQuant {s=s} ;
|
||||
mkIDet : Str -> IDet = \s -> lin IDet {s=s} ;
|
||||
mkSubj : Str -> Subj = \s -> lin Subj {s=s} ;
|
||||
mkQuant : Str -> Quant = \s -> lin Quant {s=s} ;
|
||||
mkPredet : Str -> Predet = \s -> lin Predet {s=s} ;
|
||||
mkDet : Str -> Det = \s -> lin Det {s=s} ;
|
||||
mkCard : Str -> Card = \s -> lin Card {s=s} ;
|
||||
mkConj : Str -> Conj = \s -> lin Conj {s=s} ;
|
||||
mkPConj : Str -> PConj = \s -> lin PConj {s=s} ;
|
||||
mkVoc : Str -> Voc = \s -> lin Voc {s=s} ;
|
||||
|
||||
mkLN : Str -> LN = \s -> lin LN {s=s} ;
|
||||
mkGN : Str -> GN = \s -> lin GN {s=s} ;
|
||||
mkSN : Str -> SN = \s -> lin SN {s=s} ;
|
||||
mkPN : Str -> PN = \s -> lin PN {s=s} ;
|
||||
|
||||
}
|
||||
11
src/armenian/PhraseHye.gf
Normal file
11
src/armenian/PhraseHye.gf
Normal file
@@ -0,0 +1,11 @@
|
||||
concrete PhraseHye of Phrase = CatHye ** {
|
||||
lin
|
||||
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
|
||||
|
||||
UttS s = s ;
|
||||
UttInterj i = i ;
|
||||
|
||||
NoPConj = {s = []} ;
|
||||
|
||||
NoVoc = {s = []} ;
|
||||
}
|
||||
269
src/armenian/ResHye.gf
Normal file
269
src/armenian/ResHye.gf
Normal file
@@ -0,0 +1,269 @@
|
||||
resource ResHye = {
|
||||
|
||||
param Aspect = Non_Past | Perfect ;
|
||||
param Person = P1 | P3 | P2 ;
|
||||
param Number = Sg | Pl ;
|
||||
param Case = Nom | Dat | Ablat | Instr | Loc ;
|
||||
param PartType = Resultative | Subject ;
|
||||
oper Verb = {s: Str; Causative: Str; Conditional: Aspect => Person => Number => Str; Converb: {Imperfective: Str; FutCon1: Str; FutCon2: Str; Negative: Str; Perfective: Str; Simultaneous: Str}; Imperative_Jussive: Number => Str; Passive: Str; Past: Person => Number => Str; Participle: PartType => Str; Subjunctive: Aspect => Person => Number => Str} ; -- 898
|
||||
oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Verb =
|
||||
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24,f25,f26,f27,f28,f29,f30,f31,f32,f33,f34,f35,f36,f37,f38,f39,f40,f41,f42,f43 ->
|
||||
{ s = f1 ;
|
||||
Causative = f2 ;
|
||||
Conditional = table {
|
||||
Perfect => table {
|
||||
P1 => table {
|
||||
Sg => f3 ;
|
||||
Pl => f4
|
||||
} ;
|
||||
P2 => table {
|
||||
Sg => f5 ;
|
||||
Pl => f6
|
||||
} ;
|
||||
P3 => table {
|
||||
Sg => f7 ;
|
||||
Pl => f8
|
||||
}
|
||||
} ;
|
||||
Non_Past => table {
|
||||
P1 => table {
|
||||
Sg => f9 ;
|
||||
Pl => f10
|
||||
} ;
|
||||
P2 => table {
|
||||
Sg => f11 ;
|
||||
Pl => f12
|
||||
} ;
|
||||
P3 => table {
|
||||
Sg => f13 ;
|
||||
Pl => f14
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Converb = { Imperfective = f15 ;
|
||||
FutCon1 = f16 ;
|
||||
FutCon2 = f17 ;
|
||||
Negative = f18 ;
|
||||
Perfective = f19 ;
|
||||
Simultaneous = f20
|
||||
} ;
|
||||
Imperative_Jussive = table {
|
||||
Sg => f21 ;
|
||||
Pl => f22
|
||||
} ;
|
||||
Passive = f23 ;
|
||||
Past = table {
|
||||
P1 => table {
|
||||
Sg => f24 ;
|
||||
Pl => f25
|
||||
} ;
|
||||
P2 => table {
|
||||
Sg => f26 ;
|
||||
Pl => f27
|
||||
} ;
|
||||
P3 => table {
|
||||
Sg => f28 ;
|
||||
Pl => f29
|
||||
}
|
||||
} ;
|
||||
Participle = table {
|
||||
Resultative => f30 ;
|
||||
Subject => f31
|
||||
} ;
|
||||
Subjunctive = table {
|
||||
Perfect => table {
|
||||
P1 => table {
|
||||
Sg => f32 ;
|
||||
Pl => f33
|
||||
} ;
|
||||
P2 => table {
|
||||
Sg => f34 ;
|
||||
Pl => f35
|
||||
} ;
|
||||
P3 => table {
|
||||
Sg => f36 ;
|
||||
Pl => f37
|
||||
}
|
||||
} ;
|
||||
Non_Past => table {
|
||||
P1 => table {
|
||||
Sg => f38 ;
|
||||
Pl => f39
|
||||
} ;
|
||||
P2 => table {
|
||||
Sg => f40 ;
|
||||
Pl => f41
|
||||
} ;
|
||||
P3 => table {
|
||||
Sg => f42 ;
|
||||
Pl => f43
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
|
||||
|
||||
oper Noun = {s: Case => Number => Str; def_dat: Number => Str; def_nom: Number => Str; poss1: Case => Number => Str; poss2: Case => Number => Str} ; -- 4880
|
||||
oper mkNoun : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Noun =
|
||||
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24,f25,f26,f27,f28,f29,f30,f31,f32,f33,f34 ->
|
||||
{ s = table {
|
||||
Nom => table {
|
||||
Sg => f1 ;
|
||||
Pl => f2
|
||||
} ;
|
||||
Dat => table {
|
||||
Sg => f3 ;
|
||||
Pl => f4
|
||||
} ;
|
||||
Ablat => table {
|
||||
Sg => f5 ;
|
||||
Pl => f6
|
||||
} ;
|
||||
Instr => table {
|
||||
Sg => f7 ;
|
||||
Pl => f8
|
||||
} ;
|
||||
Loc => table {
|
||||
Sg => f9 ;
|
||||
Pl => f10
|
||||
}
|
||||
} ;
|
||||
def_dat = table {
|
||||
Sg => f11 ;
|
||||
Pl => f12
|
||||
} ;
|
||||
def_nom = table {
|
||||
Sg => f13 ;
|
||||
Pl => f14
|
||||
} ;
|
||||
poss1 = table {
|
||||
Nom => table {
|
||||
Sg => f15 ;
|
||||
Pl => f16
|
||||
} ;
|
||||
Dat => table {
|
||||
Sg => f17 ;
|
||||
Pl => f18
|
||||
} ;
|
||||
Ablat => table {
|
||||
Sg => f19 ;
|
||||
Pl => f20
|
||||
} ;
|
||||
Instr => table {
|
||||
Sg => f21 ;
|
||||
Pl => f22
|
||||
} ;
|
||||
Loc => table {
|
||||
Sg => f23 ;
|
||||
Pl => f24
|
||||
}
|
||||
} ;
|
||||
poss2 = table {
|
||||
Nom => table {
|
||||
Sg => f25 ;
|
||||
Pl => f26
|
||||
} ;
|
||||
Dat => table {
|
||||
Sg => f27 ;
|
||||
Pl => f28
|
||||
} ;
|
||||
Ablat => table {
|
||||
Sg => f29 ;
|
||||
Pl => f30
|
||||
} ;
|
||||
Instr => table {
|
||||
Sg => f31 ;
|
||||
Pl => f32
|
||||
} ;
|
||||
Loc => table {
|
||||
Sg => f33 ;
|
||||
Pl => f34
|
||||
}
|
||||
}
|
||||
} ;
|
||||
|
||||
|
||||
oper Adj = {s: Case => Number => Str; def_dat: Number => Str; def_nom: Number => Str; poss1: Case => Number => Str; poss2: Case => Number => Str} ; -- 1608
|
||||
oper mkAdj : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Adj =
|
||||
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24,f25,f26,f27,f28,f29,f30,f31,f32,f33,f34 ->
|
||||
{ s = table {
|
||||
Nom => table {
|
||||
Sg => f1 ;
|
||||
Pl => f2
|
||||
} ;
|
||||
Dat => table {
|
||||
Sg => f3 ;
|
||||
Pl => f4
|
||||
} ;
|
||||
Ablat => table {
|
||||
Sg => f5 ;
|
||||
Pl => f6
|
||||
} ;
|
||||
Instr => table {
|
||||
Sg => f7 ;
|
||||
Pl => f8
|
||||
} ;
|
||||
Loc => table {
|
||||
Sg => f9 ;
|
||||
Pl => f10
|
||||
}
|
||||
} ;
|
||||
def_dat = table {
|
||||
Sg => f11 ;
|
||||
Pl => f12
|
||||
} ;
|
||||
def_nom = table {
|
||||
Sg => f13 ;
|
||||
Pl => f14
|
||||
} ;
|
||||
poss1 = table {
|
||||
Nom => table {
|
||||
Sg => f15 ;
|
||||
Pl => f16
|
||||
} ;
|
||||
Dat => table {
|
||||
Sg => f17 ;
|
||||
Pl => f18
|
||||
} ;
|
||||
Ablat => table {
|
||||
Sg => f19 ;
|
||||
Pl => f20
|
||||
} ;
|
||||
Instr => table {
|
||||
Sg => f21 ;
|
||||
Pl => f22
|
||||
} ;
|
||||
Loc => table {
|
||||
Sg => f23 ;
|
||||
Pl => f24
|
||||
}
|
||||
} ;
|
||||
poss2 = table {
|
||||
Nom => table {
|
||||
Sg => f25 ;
|
||||
Pl => f26
|
||||
} ;
|
||||
Dat => table {
|
||||
Sg => f27 ;
|
||||
Pl => f28
|
||||
} ;
|
||||
Ablat => table {
|
||||
Sg => f29 ;
|
||||
Pl => f30
|
||||
} ;
|
||||
Instr => table {
|
||||
Sg => f31 ;
|
||||
Pl => f32
|
||||
} ;
|
||||
Loc => table {
|
||||
Sg => f33 ;
|
||||
Pl => f34
|
||||
}
|
||||
}
|
||||
} ;
|
||||
|
||||
|
||||
oper Compl = {s : Str; c : Case} ;
|
||||
oper noPrep : Compl = {s=""; c=Dat} ;
|
||||
|
||||
}
|
||||
@@ -121,7 +121,7 @@ concrete CatEus of Cat = CommonX ** open ResEus, Prelude in {
|
||||
N = ResEus.Noun ;
|
||||
N2 = ResEus.Noun2 ;
|
||||
N3 = ResEus.Noun3 ;
|
||||
PN = ResEus.PNoun ;
|
||||
PN,LN,GN,SN = ResEus.PNoun ;
|
||||
|
||||
|
||||
linref
|
||||
|
||||
@@ -91,7 +91,7 @@ oper
|
||||
|
||||
-- Use linCNIndef so that words with FinalA get the -a at the end
|
||||
baseCN : CN -> CN -> [CN] = \x,y ->
|
||||
y ** --choose all the other fields from second argument
|
||||
lin ListCN y ** --choose all the other fields from second argument
|
||||
{ s1 = \\agr => linCNIndef x ;
|
||||
s2 = y.s } ;
|
||||
|
||||
|
||||
65
src/basque/DocumentationEus.gf
Normal file
65
src/basque/DocumentationEus.gf
Normal file
@@ -0,0 +1,65 @@
|
||||
--# -path=.:../abstract:../common
|
||||
concrete DocumentationEus of Documentation = CatEus ** open
|
||||
ResEus,
|
||||
Prelude,
|
||||
HTML in {
|
||||
|
||||
lincat
|
||||
Inflection = {t : Str; s1,s2 : Str} ;
|
||||
Definition = {s : Str} ;
|
||||
Document = {s : Str} ;
|
||||
Tag = {s : Str} ;
|
||||
|
||||
lin
|
||||
InflectionN, InflectionN2, InflectionN3 = \n -> {
|
||||
t = "n" ;
|
||||
s1 = heading1 "Noun" ;
|
||||
s2 = frameTable (
|
||||
tr (th "" ++ th "Sg" ++ th "Pl") ++
|
||||
tr (th "absolutive" ++ td (n.s++artDef ! Sg ! Abs ! n.ph) ++ td (n.s++artDef ! Pl ! Abs ! n.ph)) ++
|
||||
tr (th "ergative" ++ td (n.s++artDef ! Sg ! Erg ! n.ph) ++ td (n.s++artDef ! Pl ! Erg ! n.ph)) ++
|
||||
tr (th "dative" ++ td (n.s++artDef ! Sg ! Dat ! n.ph) ++ td (n.s++artDef ! Pl ! Dat ! n.ph)) ++
|
||||
tr (th "genitive" ++ td (n.s++artDef ! Sg ! Gen ! n.ph) ++ td (n.s++artDef ! Pl ! Gen ! n.ph)) ++
|
||||
tr (th "commitative" ++ td (n.s++artDef ! Sg ! Soc ! n.ph) ++ td (n.s++artDef ! Pl ! Soc ! n.ph)) ++
|
||||
tr (th "instrumental"++ td (n.s++artDef ! Sg ! Ins ! n.ph) ++ td (n.s++artDef ! Pl ! Ins ! n.ph)) ++
|
||||
tr (th "inessive" ++ td (n.s++artDef ! Sg ! Ine ! n.ph) ++ td (n.s++artDef ! Pl ! Ine ! n.ph)) ++
|
||||
tr (th "partitive" ++ td (n.s++artDef ! Sg ! Par ! n.ph) ++ td (n.s++artDef ! Pl ! Par ! n.ph))
|
||||
) ;
|
||||
} ;
|
||||
|
||||
InflectionA, InflectionA2, InflectionA3 = \a -> {
|
||||
t = "a" ;
|
||||
s1 = heading1 "Adjective" ;
|
||||
s2 = frameTable (
|
||||
tr (th "" ++ th "Sg" ++ th "Pl") ++
|
||||
tr (th "absolutive" ++ td (a.s ! AF Posit++artDef ! Sg ! Abs ! a.ph) ++ td (a.s ! AF Posit++artDef ! Pl ! Abs ! a.ph)) ++
|
||||
tr (th "ergative" ++ td (a.s ! AF Posit++artDef ! Sg ! Erg ! a.ph) ++ td (a.s ! AF Posit++artDef ! Pl ! Erg ! a.ph)) ++
|
||||
tr (th "dative" ++ td (a.s ! AF Posit++artDef ! Sg ! Dat ! a.ph) ++ td (a.s ! AF Posit++artDef ! Pl ! Dat ! a.ph)) ++
|
||||
tr (th "genitive" ++ td (a.s ! AF Posit++artDef ! Sg ! Gen ! a.ph) ++ td (a.s ! AF Posit++artDef ! Pl ! Gen ! a.ph)) ++
|
||||
tr (th "commitative" ++ td (a.s ! AF Posit++artDef ! Sg ! Soc ! a.ph) ++ td (a.s ! AF Posit++artDef ! Pl ! Soc ! a.ph)) ++
|
||||
tr (th "instrumental"++ td (a.s ! AF Posit++artDef ! Sg ! Ins ! a.ph) ++ td (a.s ! AF Posit++artDef ! Pl ! Ins ! a.ph)) ++
|
||||
tr (th "inessive" ++ td (a.s ! AF Posit++artDef ! Sg ! Ine ! a.ph) ++ td (a.s ! AF Posit++artDef ! Pl ! Ine ! a.ph)) ++
|
||||
tr (th "partitive" ++ td (a.s ! AF Posit++artDef ! Sg ! Par ! a.ph) ++ td (a.s ! AF Posit++artDef ! Pl ! Par ! a.ph))
|
||||
) ;
|
||||
} ;
|
||||
|
||||
InflectionV, InflectionV2, InflectionV3, InflectionVA, InflectionVS, InflectionVQ, InflectionV2A, InflectionV2S, InflectionV2Q = \v -> {
|
||||
t = "v" ;
|
||||
s1 = heading1 "Verb" ;
|
||||
s2 = frameTable (
|
||||
tr (th "present" ++ td (v.prc ! Pres)) ++
|
||||
tr (th "past" ++ td (v.prc ! Past)) ++
|
||||
tr (th "future" ++ td (v.prc ! Fut))
|
||||
) ;
|
||||
} ;
|
||||
|
||||
lin
|
||||
NoDefinition t = {s=t.s};
|
||||
MkDefinition t d = {s="<p><b>Definition:</b>"++t.s++d.s++"</p>"};
|
||||
MkDefinitionEx t d e = {s="<p><b>Definition:</b>"++t.s++d.s++"</p><p><b>Example:</b>"++e.s++"</p>"};
|
||||
|
||||
lin
|
||||
MkDocument d i e = {s = i.s1 ++ d.s ++ i.s2 ++ paragraph e.s} ;
|
||||
MkTag i = {s = i.t} ;
|
||||
|
||||
}
|
||||
@@ -2,6 +2,7 @@ concrete LangEus of Lang =
|
||||
GrammarEus,
|
||||
LexiconEus,
|
||||
ConstructionEus
|
||||
,DocumentationEus --# notpresent
|
||||
|
||||
** {
|
||||
|
||||
|
||||
@@ -196,7 +196,7 @@ lin jump_V = mkV "jauzi" egin_V ; --Apertium
|
||||
lin kill_V2 = mkV2 "hil" ; --Apertium
|
||||
lin king_N = mkN "errege" animate ; --Apertium
|
||||
lin knee_N = mkN "belaun" ; --Apertium
|
||||
lin know_V2 = lin V2 jakin_V2 ; -- synthetic verb
|
||||
lin know_V2 = jakin_V2 ; -- synthetic verb
|
||||
lin know_VQ = lin VQ jakin_V2 ; -- synthetic verb
|
||||
|
||||
lin know_VS = ukanV "uste" ;
|
||||
@@ -426,11 +426,11 @@ oper
|
||||
egin_V : V = mkV "egin" ;
|
||||
|
||||
-- Some synthetic verbs
|
||||
etorri_V : R.Verb = R.syntVerbDa "etorri" R.Etorri ;
|
||||
etorri_V : V = lin V (R.syntVerbDa "etorri" R.Etorri) ;
|
||||
|
||||
ibili_V : R.Verb = R.syntVerbDa "ibili" R.Ibili ;
|
||||
ibili_V : V = lin V (R.syntVerbDa "ibili" R.Ibili) ;
|
||||
|
||||
jakin_V2 : R.Verb = R.syntVerbDu "jakin" R.Jakin ;
|
||||
jakin_V2 : V2 = lin V2 (R.syntVerbDu "jakin" R.Jakin) ;
|
||||
|
||||
joan_V : R.Verb = R.syntVerbDa "joan" R.Joan ;
|
||||
joan_V : V = lin V (R.syntVerbDa "joan" R.Joan) ;
|
||||
}
|
||||
@@ -29,6 +29,8 @@ lincat Sub10 = LinDigit ;
|
||||
lincat Sub100 = {s : Str ; n : Number } ;
|
||||
lincat Sub1000 = {s : Str ; n : Number ; isHundred : Bool } ;
|
||||
lincat Sub1000000 = {s : Str ; n : Number } ;
|
||||
lincat Sub1000000000 = {s : Str ; n : Number } ;
|
||||
lincat Sub1000000000000 = {s : Str ; n : Number } ;
|
||||
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
@@ -42,6 +42,9 @@ oper
|
||||
} ;
|
||||
|
||||
mkPN : Str -> PN = \s -> lin PN (mkPNoun s) ;
|
||||
mkLN : Str -> LN = \s -> lin LN (mkPNoun s) ;
|
||||
mkGN : Str -> GN = \s -> lin GN (mkPNoun s) ;
|
||||
mkSN : Str -> SN = \s -> lin SN (mkPNoun s) ;
|
||||
|
||||
mkN2 = overload {
|
||||
mkN2 : Str -> N2 = \s -> lin N2 (mkNoun2 s genitive) ;
|
||||
@@ -64,7 +67,7 @@ oper
|
||||
|
||||
mkA = overload {
|
||||
mkA : Str -> A = \s -> lin A (regAdj s) ;
|
||||
mkA : Str -> A -> A = \s,a -> irregAdvAdj s a
|
||||
mkA : Str -> A -> A = \s,a -> lin A (irregAdvAdj s a)
|
||||
} ;
|
||||
|
||||
mkA2 : Str -> Prep -> A2 = \s,pp -> lin A2 (regAdj s ** { compl = pp }) ;
|
||||
@@ -101,7 +104,7 @@ oper
|
||||
mkV2A : Str -> V2A = \s -> lin V2A (mkVerbDu s) ; -- Nor-nork
|
||||
mkVQ : Str -> VQ = \s -> lin VQ (mkVerbDu s) ; -- Nor-nork
|
||||
mkVS : Str -> VS = \s -> lin VS (mkVerbDu s) ; -- Nor-nork
|
||||
|
||||
mkVV : V -> VV = \v -> lin VV v ;
|
||||
|
||||
mkV2V : Str -> V2V = \s -> lin V2V (mkVerbDio s) ; -- ??? TODO check valency
|
||||
mkV2S : Str -> V2S = \s -> lin V2S (mkVerbDio s) ; -- Nor-nori-nork: (mutilari) (neska datorrela) erantzun diot
|
||||
@@ -113,15 +116,15 @@ oper
|
||||
-- Verbs with non-inflecting participle
|
||||
-- These are just Verb, use izanV or egonV for intransitive and ukanV for transitive.
|
||||
|
||||
izanV : Str -> Verb = \bizi ->
|
||||
mkVerbDa bizi ** { prc = \\_ => bizi } ; -- Non-inflecting participle, auxtype is Da (nor): e.g. "bizi naiz", "beldur naiz"
|
||||
izanV : Str -> V = \bizi ->
|
||||
lin V (mkVerbDa bizi ** { prc = \\_ => bizi }) ; -- Non-inflecting participle, auxtype is Da (nor): e.g. "bizi naiz", "beldur naiz"
|
||||
|
||||
egonV : Str -> Verb = \zain ->
|
||||
mkVerbDaEgon zain ** { prc = \\_ => zain } ; -- Non-inflecting participle, auxtype is Da (nor), but with egon: e.g. "zain nago"
|
||||
egonV : Str -> V = \zain ->
|
||||
lin V (mkVerbDaEgon zain ** { prc = \\_ => zain }) ; -- Non-inflecting participle, auxtype is Da (nor), but with egon: e.g. "zain nago"
|
||||
|
||||
|
||||
ukanV : Str -> Verb = \maite ->
|
||||
mkVerbDu maite ** { prc = \\_ => maite } ; -- Non-inflecting participle, auxtype is Du (nor-nork): e.g, "maite zaitut"
|
||||
ukanV : Str -> V = \maite ->
|
||||
lin V (mkVerbDu maite ** { prc = \\_ => maite }) ; -- Non-inflecting participle, auxtype is Du (nor-nork): e.g, "maite zaitut"
|
||||
|
||||
|
||||
--2 Structural categories
|
||||
@@ -154,6 +157,10 @@ oper
|
||||
|
||||
mkAdA : Str -> AdA = \s -> lin AdA {s = s} ;
|
||||
|
||||
oper mkAdN : Str -> AdN = \s -> lin AdN {s=s} ;
|
||||
|
||||
oper mkInterj : Str -> Interj = \s -> lin Interj {s=s} ;
|
||||
oper mkVoc : Str -> Voc = \s -> lin Voc {s=s} ;
|
||||
|
||||
--.
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
4
src/belarusian/AdjectiveBel.gf
Normal file
4
src/belarusian/AdjectiveBel.gf
Normal file
@@ -0,0 +1,4 @@
|
||||
concrete AdjectiveBel of Adjective = CatBel ** {
|
||||
lin
|
||||
PositA a = a ;
|
||||
}
|
||||
4
src/belarusian/AllBel.gf
Normal file
4
src/belarusian/AllBel.gf
Normal file
@@ -0,0 +1,4 @@
|
||||
concrete AllBel of AllBelAbs =
|
||||
LangBel
|
||||
**
|
||||
{} ;
|
||||
3
src/belarusian/AllBelAbs.gf
Normal file
3
src/belarusian/AllBelAbs.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
abstract AllBelAbs =
|
||||
Lang
|
||||
** {}
|
||||
21
src/belarusian/CatBel.gf
Normal file
21
src/belarusian/CatBel.gf
Normal file
@@ -0,0 +1,21 @@
|
||||
concrete CatBel of Cat = CommonX ** open ResBel in {
|
||||
|
||||
lincat N = Noun ;
|
||||
lincat N2 = Noun ** {c2 : Compl} ;
|
||||
lincat N3 = Noun ** {c2,c3 : Compl} ;
|
||||
lincat V = V ;
|
||||
lincat VV,VS,VQ,VA = V ;
|
||||
lincat V2 = V ** {c2 : Compl} ;
|
||||
lincat V3,V2A,V2S,V2Q,V2V = V ** {c2,c3 : Compl} ;
|
||||
lincat A = A ;
|
||||
lincat A2 = A ** {c2 : Compl} ;
|
||||
lincat Prep = Compl ;
|
||||
lincat CN = CommonNoun ;
|
||||
lincat AP = AdjPhrase ;
|
||||
lincat S = {s : Str} ;
|
||||
|
||||
lincat LN,SN,GN,PN = {s : Str} ;
|
||||
|
||||
linref V,VV,V2,V3,V2A,V2S,V2Q,V2V = \v -> v.infinitive ;
|
||||
|
||||
}
|
||||
77
src/belarusian/DocumentationBel.gf
Normal file
77
src/belarusian/DocumentationBel.gf
Normal file
@@ -0,0 +1,77 @@
|
||||
concrete DocumentationBel of Documentation = CatBel ** open
|
||||
ResBel, Prelude, HTML in {
|
||||
|
||||
lincat
|
||||
Inflection = {t : Str; s1,s2,s3 : Str} ;
|
||||
Definition = {s : Str} ;
|
||||
Document = {s : Str} ;
|
||||
Tag = {s : Str} ;
|
||||
|
||||
lin
|
||||
InflectionN,InflectionN2,InflectionN3 = \x -> {
|
||||
t="n" ;
|
||||
s1="" ;
|
||||
s2=frameTable (
|
||||
tr (th "" ++ th "Sg" ++ th "Pl") ++
|
||||
tr (th "Nom" ++ td (x.s ! Nom ! Sg) ++ td (x.s ! Nom ! Pl)) ++
|
||||
tr (th "Acc" ++ td (x.s ! Acc ! Sg) ++ td (x.s ! Acc ! Pl)) ++
|
||||
tr (th "Dat" ++ td (x.s ! Dat ! Sg) ++ td (x.s ! Dat ! Pl)) ++
|
||||
tr (th "Gen" ++ td (x.s ! Gen ! Sg) ++ td (x.s ! Gen ! Pl)) ++
|
||||
tr (th "Loc" ++ td (x.s ! Loc ! Sg) ++ td (x.s ! Loc ! Pl)) ++
|
||||
tr (th "Instr" ++ td (x.s ! Instr ! Sg) ++ td (x.s ! Instr ! Pl))) ;
|
||||
s3=[]
|
||||
} ;
|
||||
lin
|
||||
InflectionV,InflectionV2,InflectionV2A,InflectionV2Q,InflectionV2S,InflectionV2V,InflectionV3,InflectionVA,InflectionVQ,InflectionVS,InflectionVV = \x -> {
|
||||
t="v" ;
|
||||
s1="" ;
|
||||
s2=heading1 "Infinitive" ++
|
||||
paragraph (x.infinitive) ++
|
||||
heading1 "Present" ++
|
||||
frameTable (
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Pres" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td ((x.active ! Imperf).Pres ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td ((x.active ! Imperf).Pres ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2" ++ th "Sg" ++ td ((x.active ! Imperf).Pres ! P2 ! Sg)) ++
|
||||
tr (th "Pl" ++ td ((x.active ! Imperf).Pres ! P2 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td ((x.active ! Imperf).Pres ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td ((x.active ! Imperf).Pres ! P3 ! Pl))) ++
|
||||
heading1 "Imperative" ++
|
||||
frameTable (
|
||||
tr (th "Sg" ++ td (x.imperative ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.imperative ! Pl))) ++
|
||||
heading1 "participle" ++
|
||||
frameTable (
|
||||
tr (th "" ++ th "Sg" ++ th "Pl") ++
|
||||
tr (th "Masc" ++ td (x.participle ! Masc ! Sg) ++ td (x.participle ! Masc ! Pl)) ++
|
||||
tr (th "Fem" ++ td (x.participle ! Fem ! Sg) ++ td (x.participle ! Fem ! Pl)) ++
|
||||
tr (th "Neuter" ++ td (x.participle ! Neuter ! Sg) ++ td (x.participle ! Neuter ! Pl))) ;
|
||||
s3=[]
|
||||
} ;
|
||||
lin
|
||||
InflectionA,InflectionA2 = \x -> {
|
||||
t="a" ;
|
||||
s1="" ;
|
||||
s2=frameTable (
|
||||
tr (th "" ++ th "Masc" ++ th "Fem" ++ th "Neuter" ++ th "Pl") ++
|
||||
tr (th "Nom" ++ td (x.s ! Nom ! GSg Masc) ++ td (x.s ! Nom ! GSg Fem) ++ td (x.s ! Nom ! GSg Neuter) ++ td (x.s ! Nom ! GPl)) ++
|
||||
tr (th "Acc" ++ td (x.s ! Acc ! GSg Masc) ++ td (x.s ! Acc ! GSg Fem) ++ td (x.s ! Acc ! GSg Neuter) ++ td (x.s ! Acc ! GPl)) ++
|
||||
tr (th "Dat" ++ td (x.s ! Dat ! GSg Masc) ++ td (x.s ! Dat ! GSg Fem) ++ td (x.s ! Dat ! GSg Neuter) ++ td (x.s ! Dat ! GPl)) ++
|
||||
tr (th "Gen" ++ td (x.s ! Gen ! GSg Masc) ++ td (x.s ! Gen ! GSg Fem) ++ td (x.s ! Gen ! GSg Neuter) ++ td (x.s ! Gen ! GPl)) ++
|
||||
tr (th "Loc" ++ td (x.s ! Loc ! GSg Masc) ++ td (x.s ! Loc ! GSg Fem) ++ td (x.s ! Loc ! GSg Neuter) ++ td (x.s ! Loc ! GPl)) ++
|
||||
tr (th "Instr"++td (x.s ! Instr ! GSg Masc)++td (x.s ! Instr ! GSg Fem)++td (x.s ! Instr ! GSg Neuter)++td (x.s ! Instr ! GPl))) ;
|
||||
s3=[]
|
||||
} ;
|
||||
lin
|
||||
InflectionAdA,InflectionAdN,InflectionAdV,InflectionAdv = \x -> {t="adv"; s1=""; s2=x.s; s3=""} ;
|
||||
|
||||
InflectionPrep = \x -> {t="prep"; s1=""; s2=x.s; s3=""} ;
|
||||
|
||||
lin
|
||||
NoDefinition t = {s=t.s};
|
||||
MkDefinition t d = {s="<p><b>Definition:</b>"++t.s++d.s++"</p>"};
|
||||
MkDefinitionEx t d e = {s="<p><b>Definition:</b>"++t.s++d.s++"</p><p><b>Example:</b>"++e.s++"</p>"};
|
||||
|
||||
lin
|
||||
MkDocument d i e = {s = i.s1 ++ d.s ++ i.s2 ++ i.s3 ++ e.s} ;
|
||||
MkTag i = {s = i.t} ;
|
||||
}
|
||||
6
src/belarusian/GrammarBel.gf
Normal file
6
src/belarusian/GrammarBel.gf
Normal file
@@ -0,0 +1,6 @@
|
||||
concrete GrammarBel of Grammar =
|
||||
TenseX,
|
||||
PhraseBel,
|
||||
NounBel,
|
||||
AdjectiveBel ** {
|
||||
}
|
||||
10
src/belarusian/LangBel.gf
Normal file
10
src/belarusian/LangBel.gf
Normal file
@@ -0,0 +1,10 @@
|
||||
--# -path=.:../abstract
|
||||
concrete LangBel of Lang =
|
||||
GrammarBel,
|
||||
LexiconBel
|
||||
,DocumentationBel --# notpresent
|
||||
** {
|
||||
|
||||
flags startcat = Phr ;
|
||||
|
||||
}
|
||||
2
src/belarusian/LexiconBel.gf
Normal file
2
src/belarusian/LexiconBel.gf
Normal file
@@ -0,0 +1,2 @@
|
||||
concrete LexiconBel of Lexicon = CatBel ** open ParadigmsBel in {
|
||||
}
|
||||
29614
src/belarusian/MorphoBel.gf
Normal file
29614
src/belarusian/MorphoBel.gf
Normal file
File diff suppressed because it is too large
Load Diff
4
src/belarusian/NounBel.gf
Normal file
4
src/belarusian/NounBel.gf
Normal file
@@ -0,0 +1,4 @@
|
||||
concrete NounBel of Noun = CatBel ** {
|
||||
lin
|
||||
UseN n = n ;
|
||||
}
|
||||
842
src/belarusian/ParadigmsBel.gf
Normal file
842
src/belarusian/ParadigmsBel.gf
Normal file
@@ -0,0 +1,842 @@
|
||||
resource ParadigmsBel = MorphoBel ** open Predef, Prelude, CatBel, ResBel in {
|
||||
oper
|
||||
regN : Str -> N -- s;Nom;Sg
|
||||
= \form -> case form of {
|
||||
_ + "цат" => mkN056 form;
|
||||
_ + "фат" => mkN099 form;
|
||||
_ + "бат" => mkN131 form;
|
||||
_ + "ват" => mkN131 form;
|
||||
_ + "кат" => mkN131 form;
|
||||
_ + "энт" => mkN131 form;
|
||||
_ + "онт" => mkN056 form;
|
||||
_ + "ікт" => mkN056 form;
|
||||
_ + "укт" => mkN056 form;
|
||||
_ + "сіт" => mkN131 form;
|
||||
_ + "біт" => mkN131 form;
|
||||
_ + "ірт" => mkN205 form;
|
||||
_ + "ост" => mkN056 form;
|
||||
_ + "уст" => mkN125 form;
|
||||
_ + "эфт" => mkN056 form;
|
||||
_ + "нёт" => mkN056 form;
|
||||
_ + "ыёт" => mkN131 form;
|
||||
_ + "аэт" => mkN131 form;
|
||||
_ + "цэт" => mkN131 form;
|
||||
_ + "чыт" => mkN125 form;
|
||||
_ + "гут" => mkN125 form;
|
||||
_ + "'ят" => mkN131 form;
|
||||
_ + "лец" => mkN002 form;
|
||||
_ + "аец" => mkN235 form;
|
||||
_ + "еец" => mkN235 form;
|
||||
_ + "ыец" => mkN235 form;
|
||||
_ + "іец" => mkN235 form;
|
||||
_ + "зец" => mkN265 form;
|
||||
_ + "вец" => mkN300 form;
|
||||
_ + "рац" => mkN286 form;
|
||||
_ + "рка" => mkN003 form;
|
||||
_ + "іка" => mkN003 form;
|
||||
_ + "ека" => mkN003 form;
|
||||
_ + "ыка" => mkN003 form;
|
||||
_ + "ўка" => mkN217 form;
|
||||
_ + "ука" => mkN026 form;
|
||||
_ + "эка" => mkN026 form;
|
||||
_ + "ока" => mkN026 form;
|
||||
_ + "ака" => mkN026 form;
|
||||
_ + "яка" => mkN026 form;
|
||||
_ + "йка" => mkN124 form;
|
||||
_ + "ька" => mkN196 form;
|
||||
_ + "ква" => mkN039 form;
|
||||
_ + "ова" => mkN150 form;
|
||||
_ + "зва" => mkN039 form;
|
||||
_ + "хва" => mkN039 form;
|
||||
_ + "рва" => mkN039 form;
|
||||
_ + "ева" => mkN138 form;
|
||||
_ + "ява" => mkN150 form;
|
||||
_ + "эва" => mkN166 form;
|
||||
_ + "уза" => mkN012 form;
|
||||
_ + "аза" => mkN012 form;
|
||||
_ + "нза" => mkN012 form;
|
||||
_ + "еза" => mkN024 form;
|
||||
_ + "ўза" => mkN039 form;
|
||||
_ + "яза" => mkN187 form;
|
||||
_ + "іма" => mkN012 form;
|
||||
_ + "ома" => mkN012 form;
|
||||
_ + "ьма" => mkN091 form;
|
||||
_ + "чма" => mkN215 form;
|
||||
_ + "ьба" => mkN012 form;
|
||||
_ + "аба" => mkN012 form;
|
||||
_ + "ыба" => mkN012 form;
|
||||
_ + "ёба" => mkN024 form;
|
||||
_ + "жба" => mkN039 form;
|
||||
_ + "чба" => mkN039 form;
|
||||
_ + "ўба" => mkN091 form;
|
||||
_ + "ўна" => mkN012 form;
|
||||
_ + "ына" => mkN012 form;
|
||||
_ + "ана" => mkN012 form;
|
||||
_ + "рна" => mkN012 form;
|
||||
_ + "дна" => mkN024 form;
|
||||
_ + "нна" => mkN039 form;
|
||||
_ + "яна" => mkN061 form;
|
||||
_ + "уна" => mkN091 form;
|
||||
_ + "спа" => mkN012 form;
|
||||
_ + "лпа" => mkN083 form;
|
||||
_ + "гла" => mkN012 form;
|
||||
_ + "ула" => mkN188 form;
|
||||
_ + "ёла" => mkN012 form;
|
||||
_ + "іла" => mkN188 form;
|
||||
_ + "ела" => mkN188 form;
|
||||
_ + "яла" => mkN091 form;
|
||||
_ + "сла" => mkN260 form;
|
||||
_ + "ыса" => mkN012 form;
|
||||
_ + "оса" => mkN024 form;
|
||||
_ + "йга" => mkN020 form;
|
||||
_ + "рга" => mkN061 form;
|
||||
_ + "ьга" => mkN088 form;
|
||||
_ + "ята" => mkN245 form;
|
||||
_ + "ыта" => mkN245 form;
|
||||
_ + "дра" => mkN102 form;
|
||||
_ + "тра" => mkN080 form;
|
||||
_ + "бра" => mkN080 form;
|
||||
_ + "ўра" => mkN099 form;
|
||||
_ + "кра" => mkN102 form;
|
||||
_ + "ыца" => mkN137 form;
|
||||
_ + "ўца" => mkN137 form;
|
||||
_ + "дца" => mkN078 form;
|
||||
_ + "йца" => mkN078 form;
|
||||
_ + "чца" => mkN078 form;
|
||||
_ + "нца" => mkN080 form;
|
||||
_ + "рца" => mkN080 form;
|
||||
_ + "сца" => mkN080 form;
|
||||
_ + "ржа" => mkN064 form;
|
||||
_ + "жжа" => mkN080 form;
|
||||
_ + "джа" => mkN102 form;
|
||||
_ + "ыча" => mkN036 form;
|
||||
_ + "эча" => mkN036 form;
|
||||
_ + "яча" => mkN064 form;
|
||||
_ + "чча" => mkN080 form;
|
||||
_ + "нча" => mkN102 form;
|
||||
_ + "оха" => mkN309 form;
|
||||
_ + "ьха" => mkN309 form;
|
||||
_ + "зык" => mkN005 form;
|
||||
_ + "мык" => mkN005 form;
|
||||
_ + "тык" => mkN043 form;
|
||||
_ + "аяк" => mkN005 form;
|
||||
_ + "пяк" => mkN005 form;
|
||||
_ + "ляк" => mkN063 form;
|
||||
_ + "мак" => mkN006 form;
|
||||
_ + "пак" => mkN006 form;
|
||||
_ + "шак" => mkN006 form;
|
||||
_ + "сак" => mkN006 form;
|
||||
_ + "вак" => mkN063 form;
|
||||
_ + "зак" => mkN251 form;
|
||||
_ + "вік" => mkN005 form;
|
||||
_ + "лік" => mkN043 form;
|
||||
_ + "вук" => mkN006 form;
|
||||
_ + "цук" => mkN006 form;
|
||||
_ + "рук" => mkN043 form;
|
||||
_ + "шук" => mkN043 form;
|
||||
_ + "нук" => mkN063 form;
|
||||
_ + "чук" => mkN328 form;
|
||||
_ + "шок" => mkN015 form;
|
||||
_ + "мок" => mkN063 form;
|
||||
_ + "чок" => mkN015 form;
|
||||
_ + "нок" => mkN015 form;
|
||||
_ + "рэк" => mkN063 form;
|
||||
_ + "цуг" => mkN005 form;
|
||||
_ + "раг" => mkN063 form;
|
||||
_ + "онг" => mkN008 form;
|
||||
_ + "рог" => mkN337 form;
|
||||
_ + "лог" => mkN200 form;
|
||||
_ + "жух" => mkN005 form;
|
||||
_ + "тух" => mkN063 form;
|
||||
_ + "нах" => mkN063 form;
|
||||
_ + "віч" => mkN062 form;
|
||||
_ + "нач" => mkN184 form;
|
||||
_ + "ршч" => mkN204 form;
|
||||
_ + "пыр" => mkN334 form;
|
||||
_ + "лор" => mkN007 form;
|
||||
_ + "рор" => mkN042 form;
|
||||
_ + "пор" => mkN059 form;
|
||||
_ + "хор" => mkN155 form;
|
||||
_ + "фар" => mkN007 form;
|
||||
_ + "нар" => mkN007 form;
|
||||
_ + "хар" => mkN019 form;
|
||||
_ + "гар" => mkN019 form;
|
||||
_ + "вар" => mkN042 form;
|
||||
_ + "жар" => mkN042 form;
|
||||
_ + "сір" => mkN062 form;
|
||||
_ + "пір" => mkN062 form;
|
||||
_ + "хір" => mkN365 form;
|
||||
_ + "гір" => mkN365 form;
|
||||
_ + "кер" => mkN007 form;
|
||||
_ + "мер" => mkN042 form;
|
||||
_ + "лер" => mkN042 form;
|
||||
_ + "нер" => mkN062 form;
|
||||
_ + "вер" => mkN174 form;
|
||||
_ + "ґер" => mkN127 form;
|
||||
_ + "цэр" => mkN062 form;
|
||||
_ + "шэр" => mkN062 form;
|
||||
_ + "дэр" => mkN062 form;
|
||||
_ + "гур" => mkN062 form;
|
||||
_ + "чур" => mkN062 form;
|
||||
_ + "аўр" => mkN334 form;
|
||||
_ + "ыгр" => mkN334 form;
|
||||
_ + "даж" => mkN034 form;
|
||||
_ + "гаж" => mkN071 form;
|
||||
_ + "ыум" => mkN031 form;
|
||||
_ + "нос" => mkN013 form;
|
||||
_ + "пус" => mkN009 form;
|
||||
_ + "лас" => mkN009 form;
|
||||
_ + "рас" => mkN045 form;
|
||||
_ + "лёс" => mkN011 form;
|
||||
_ + "цыс" => mkN013 form;
|
||||
_ + "нес" => mkN045 form;
|
||||
_ + "зіс" => mkN045 form;
|
||||
_ + "вол" => mkN035 form;
|
||||
_ + "рол" => mkN159 form;
|
||||
_ + "пел" => mkN011 form;
|
||||
_ + "рал" => mkN013 form;
|
||||
_ + "дал" => mkN013 form;
|
||||
_ + "кал" => mkN013 form;
|
||||
_ + "сал" => mkN013 form;
|
||||
_ + "сул" => mkN013 form;
|
||||
_ + "мул" => mkN045 form;
|
||||
_ + "нёл" => mkN013 form;
|
||||
_ + "вон" => mkN009 form;
|
||||
_ + "рон" => mkN011 form;
|
||||
_ + "лон" => mkN011 form;
|
||||
_ + "зон" => mkN011 form;
|
||||
_ + "аон" => mkN013 form;
|
||||
_ + "зан" => mkN013 form;
|
||||
_ + "бан" => mkN195 form;
|
||||
_ + "зін" => mkN011 form;
|
||||
_ + "фін" => mkN013 form;
|
||||
_ + "він" => mkN013 form;
|
||||
_ + "рэн" => mkN011 form;
|
||||
_ + "зын" => mkN011 form;
|
||||
_ + "лын" => mkN214 form;
|
||||
_ + "іян" => mkN013 form;
|
||||
_ + "лян" => mkN045 form;
|
||||
_ + "цян" => mkN195 form;
|
||||
_ + "жун" => mkN195 form;
|
||||
_ + "кун" => mkN195 form;
|
||||
_ + "сун" => mkN195 form;
|
||||
_ + "пун" => mkN366 form;
|
||||
_ + "лаб" => mkN009 form;
|
||||
_ + "ваб" => mkN011 form;
|
||||
_ + "раб" => mkN013 form;
|
||||
_ + "арб" => mkN045 form;
|
||||
_ + "цай" => mkN022 form;
|
||||
_ + "гай" => mkN117 form;
|
||||
_ + "тай" => mkN117 form;
|
||||
_ + "чай" => mkN305 form;
|
||||
_ + "бой" => mkN017 form;
|
||||
_ + "рой" => mkN022 form;
|
||||
_ + "пой" => mkN305 form;
|
||||
_ + "зей" => mkN022 form;
|
||||
_ + "куй" => mkN099 form;
|
||||
_ + "мыз" => mkN011 form;
|
||||
_ + "цуз" => mkN013 form;
|
||||
_ + "буз" => mkN214 form;
|
||||
_ + "куп" => mkN013 form;
|
||||
_ + "чуп" => mkN045 form;
|
||||
_ + "ноп" => mkN035 form;
|
||||
_ + "хоп" => mkN045 form;
|
||||
_ + "льф" => mkN011 form;
|
||||
_ + "орф" => mkN011 form;
|
||||
_ + "сад" => mkN037 form;
|
||||
_ + "гад" => mkN037 form;
|
||||
_ + "айд" => mkN037 form;
|
||||
_ + "код" => mkN037 form;
|
||||
_ + "лод" => mkN048 form;
|
||||
_ + "луд" => mkN048 form;
|
||||
_ + "пед" => mkN037 form;
|
||||
_ + "зед" => mkN081 form;
|
||||
_ + "оід" => mkN037 form;
|
||||
_ + "туш" => mkN034 form;
|
||||
_ + "рыш" => mkN062 form;
|
||||
_ + "дло" => mkN278 form;
|
||||
_ + "яло" => mkN278 form;
|
||||
_ + "бло" => mkN278 form;
|
||||
_ + "ало" => mkN316 form;
|
||||
_ + "іно" => mkN061 form;
|
||||
_ + "гно" => mkN278 form;
|
||||
_ + "тно" => mkN316 form;
|
||||
_ + "дро" => mkN246 form;
|
||||
_ + "яро" => mkN246 form;
|
||||
_ + "шкі" => mkN242 form;
|
||||
_ + "ані" => mkN088 form;
|
||||
_ + "дні" => mkN241 form;
|
||||
_ + "уры" => mkN061 form;
|
||||
_ + "юты" => mkN181 form;
|
||||
_ + "оны" => mkN145 form;
|
||||
_ + "чны" => mkN181 form;
|
||||
_ + "ены" => mkN291 form;
|
||||
_ + "аны" => mkN291 form;
|
||||
_ + "нны" => mkN291 form;
|
||||
_ + "іцы" => mkN145 form;
|
||||
_ + "ёды" => mkN145 form;
|
||||
_ + "зія" => mkN133 form;
|
||||
_ + "хія" => mkN133 form;
|
||||
_ + "лея" => mkN133 form;
|
||||
_ + "ель" => mkN237 form;
|
||||
_ + "унь" => mkN164 form;
|
||||
_ + "энь" => mkN164 form;
|
||||
_ + "ань" => mkN164 form;
|
||||
_ + "онь" => mkN164 form;
|
||||
_ + "азь" => mkN100 form;
|
||||
_ + "дзь" => mkN152 form;
|
||||
_ + "ось" => mkN375 form;
|
||||
_ + "ась" => mkN375 form;
|
||||
_ + "яць" => mkN325 form;
|
||||
_ + "уць" => mkN325 form;
|
||||
_ + "іць" => mkN325 form;
|
||||
_ + "іт" => mkN056 form;
|
||||
_ + "рт" => mkN056 form;
|
||||
_ + "ст" => mkN131 form;
|
||||
_ + "ыт" => mkN056 form;
|
||||
_ + "ят" => mkN056 form;
|
||||
_ + "лт" => mkN056 form;
|
||||
_ + "шт" => mkN056 form;
|
||||
_ + "нц" => mkN042 form;
|
||||
_ + "яц" => mkN046 form;
|
||||
_ + "ац" => mkN046 form;
|
||||
_ + "ва" => mkN024 form;
|
||||
_ + "за" => mkN016 form;
|
||||
_ + "ма" => mkN016 form;
|
||||
_ + "ба" => mkN016 form;
|
||||
_ + "на" => mkN016 form;
|
||||
_ + "па" => mkN016 form;
|
||||
_ + "ла" => mkN024 form;
|
||||
_ + "са" => mkN016 form;
|
||||
_ + "га" => mkN021 form;
|
||||
_ + "та" => mkN023 form;
|
||||
_ + "ра" => mkN036 form;
|
||||
_ + "ца" => mkN036 form;
|
||||
_ + "жа" => mkN036 form;
|
||||
_ + "ша" => mkN036 form;
|
||||
_ + "ча" => mkN297 form;
|
||||
_ + "эа" => mkN061 form;
|
||||
_ + "да" => mkN087 form;
|
||||
_ + "ха" => mkN114 form;
|
||||
_ + "ык" => mkN063 form;
|
||||
_ + "як" => mkN006 form;
|
||||
_ + "ак" => mkN178 form;
|
||||
_ + "юк" => mkN006 form;
|
||||
_ + "ок" => mkN043 form;
|
||||
_ + "ск" => mkN043 form;
|
||||
_ + "ўк" => mkN044 form;
|
||||
_ + "ёк" => mkN122 form;
|
||||
_ + "уг" => mkN115 form;
|
||||
_ + "рг" => mkN008 form;
|
||||
_ + "аг" => mkN008 form;
|
||||
_ + "яг" => mkN008 form;
|
||||
_ + "зг" => mkN030 form;
|
||||
_ + "ог" => mkN105 form;
|
||||
_ + "ег" => mkN200 form;
|
||||
_ + "іх" => mkN006 form;
|
||||
_ + "эх" => mkN008 form;
|
||||
_ + "ях" => mkN113 form;
|
||||
_ + "рч" => mkN007 form;
|
||||
_ + "іч" => mkN007 form;
|
||||
_ + "юч" => mkN034 form;
|
||||
_ + "яч" => mkN034 form;
|
||||
_ + "шч" => mkN034 form;
|
||||
_ + "ыч" => mkN034 form;
|
||||
_ + "еч" => mkN184 form;
|
||||
_ + "эч" => mkN184 form;
|
||||
_ + "ыр" => mkN019 form;
|
||||
_ + "ар" => mkN062 form;
|
||||
_ + "ір" => mkN007 form;
|
||||
_ + "яр" => mkN019 form;
|
||||
_ + "юр" => mkN042 form;
|
||||
_ + "гр" => mkN062 form;
|
||||
_ + "ёр" => mkN062 form;
|
||||
_ + "аж" => mkN062 form;
|
||||
_ + "ож" => mkN059 form;
|
||||
_ + "ўж" => mkN155 form;
|
||||
_ + "рж" => mkN155 form;
|
||||
_ + "дж" => mkN204 form;
|
||||
_ + "ам" => mkN031 form;
|
||||
_ + "ум" => mkN045 form;
|
||||
_ + "ьм" => mkN031 form;
|
||||
_ + "ім" => mkN031 form;
|
||||
_ + "йм" => mkN031 form;
|
||||
_ + "ём" => mkN031 form;
|
||||
_ + "юм" => mkN031 form;
|
||||
_ + "эм" => mkN045 form;
|
||||
_ + "яс" => mkN009 form;
|
||||
_ + "ёс" => mkN045 form;
|
||||
_ + "нс" => mkN045 form;
|
||||
_ + "рс" => mkN045 form;
|
||||
_ + "эс" => mkN045 form;
|
||||
_ + "ыл" => mkN011 form;
|
||||
_ + "ел" => mkN330 form;
|
||||
_ + "эл" => mkN045 form;
|
||||
_ + "іл" => mkN013 form;
|
||||
_ + "ёл" => mkN018 form;
|
||||
_ + "ін" => mkN239 form;
|
||||
_ + "эн" => mkN013 form;
|
||||
_ + "рн" => mkN011 form;
|
||||
_ + "ын" => mkN013 form;
|
||||
_ + "ен" => mkN013 form;
|
||||
_ + "ун" => mkN214 form;
|
||||
_ + "рб" => mkN035 form;
|
||||
_ + "ўб" => mkN035 form;
|
||||
_ + "юб" => mkN045 form;
|
||||
_ + "уб" => mkN050 form;
|
||||
_ + "ыб" => mkN050 form;
|
||||
_ + "ей" => mkN017 form;
|
||||
_ + "яй" => mkN017 form;
|
||||
_ + "эй" => mkN022 form;
|
||||
_ + "уй" => mkN067 form;
|
||||
_ + "ыз" => mkN045 form;
|
||||
_ + "оз" => mkN057 form;
|
||||
_ + "уп" => mkN050 form;
|
||||
_ + "ап" => mkN013 form;
|
||||
_ + "ўп" => mkN045 form;
|
||||
_ + "ып" => mkN045 form;
|
||||
_ + "іф" => mkN045 form;
|
||||
_ + "рд" => mkN037 form;
|
||||
_ + "юд" => mkN081 form;
|
||||
_ + "зд" => mkN082 form;
|
||||
_ + "ьв" => mkN120 form;
|
||||
_ + "аш" => mkN034 form;
|
||||
_ + "уш" => mkN046 form;
|
||||
_ + "рш" => mkN046 form;
|
||||
_ + "ўш" => mkN059 form;
|
||||
_ + "ро" => mkN061 form;
|
||||
_ + "кі" => mkN322 form;
|
||||
_ + "ні" => mkN099 form;
|
||||
_ + "ці" => mkN099 form;
|
||||
_ + "лі" => mkN241 form;
|
||||
_ + "гі" => mkN242 form;
|
||||
_ + "ыё" => mkN061 form;
|
||||
_ + "нё" => mkN433 form;
|
||||
_ + "ье" => mkN061 form;
|
||||
_ + "ае" => mkN361 form;
|
||||
_ + "ры" => mkN145 form;
|
||||
_ + "ты" => mkN145 form;
|
||||
_ + "шы" => mkN181 form;
|
||||
_ + "бы" => mkN291 form;
|
||||
_ + "лы" => mkN291 form;
|
||||
_ + "чы" => mkN291 form;
|
||||
_ + "мы" => mkN291 form;
|
||||
_ + "мя" => mkN092 form;
|
||||
_ + "бя" => mkN092 form;
|
||||
_ + "оя" => mkN133 form;
|
||||
_ + "ця" => mkN154 form;
|
||||
_ + "ка" => mkN004 form;
|
||||
_ + "ль" => mkN100 form;
|
||||
_ + "нь" => mkN100 form;
|
||||
_ + "зь" => mkN410 form;
|
||||
_ + "сь" => mkN116 form;
|
||||
_ + "ыў" => mkN252 form;
|
||||
_ + "еў" => mkN252 form;
|
||||
_ + "т" => mkN032 form;
|
||||
_ + "ц" => mkN127 form;
|
||||
_ + "к" => mkN008 form;
|
||||
_ + "г" => mkN043 form;
|
||||
_ + "х" => mkN043 form;
|
||||
_ + "ч" => mkN019 form;
|
||||
_ + "р" => mkN046 form;
|
||||
_ + "ж" => mkN046 form;
|
||||
_ + "м" => mkN011 form;
|
||||
_ + "с" => mkN031 form;
|
||||
_ + "л" => mkN031 form;
|
||||
_ + "н" => mkN031 form;
|
||||
_ + "б" => mkN031 form;
|
||||
_ + "й" => mkN010 form;
|
||||
_ + "з" => mkN031 form;
|
||||
_ + "п" => mkN031 form;
|
||||
_ + "ф" => mkN031 form;
|
||||
_ + "д" => mkN027 form;
|
||||
_ + "в" => mkN031 form;
|
||||
_ + ("яляш"|"ялюш") => mkN243 form;
|
||||
_ + "о" => mkN055 form;
|
||||
_ + "і" => mkN061 form;
|
||||
_ + "э" => mkN061 form;
|
||||
_ + "ё" => mkN230 form;
|
||||
_ + "ю" => mkN061 form;
|
||||
_ + "е" => mkN201 form;
|
||||
_ + "ы" => mkN283 form;
|
||||
_ + "я" => mkN206 form;
|
||||
_ + "у" => mkN088 form;
|
||||
_ + "ь" => mkN262 form;
|
||||
_ + "o" => mkN144 form;
|
||||
_ + "ў" => mkN351 form;
|
||||
_ => error "Cannot find an inflection rule"
|
||||
} ;
|
||||
|
||||
reg2N : Str -> Str -> N -- s;Nom;Sg s;Acc;Pl
|
||||
= \form1, form2 -> case <form1, form2> of {
|
||||
<_ + "мак", _ + "мкі"> => mkN178 form1;
|
||||
<_ + "ана", _ + "оны"> => mkN070 form1;
|
||||
<_ + "ана", _ + "эны"> => mkN182 form1;
|
||||
<_ + "нер", _ + "яры"> => mkN069 form1;
|
||||
<_ + "ель", _ + "блі"> => mkN118 form1;
|
||||
<_ + "ель", _ + "флі"> => mkN179 form1;
|
||||
<_ + "ань", _ + "жні"> => mkN177 form1;
|
||||
<_ + "раб", _ + "оў"> => mkN195 form1;
|
||||
<_ + "вак", _ + "оў"> => mkN328 form1;
|
||||
<_ + "вец", _ + "оў"> => mkN420 form1;
|
||||
<_ + "рка", _ + "і"> => mkN004 form1;
|
||||
<_ + "іка", _ + "і"> => mkN026 form1;
|
||||
<_ + "ека", _ + "і"> => mkN256 form1;
|
||||
<_ + "ыка", _ + "і"> => mkN026 form1;
|
||||
<_ + "ыка", _ + "ў"> => mkN129 form1;
|
||||
<_ + "ўка", _ + "к"> => mkN161 form1;
|
||||
<_ + "зык", _ + "ў"> => mkN006 form1;
|
||||
<_ + "мак", _ + "і"> => mkN005 form1;
|
||||
<_ + "пак", _ + "і"> => mkN005 form1;
|
||||
<_ + "шок", _ + "і"> => mkN008 form1;
|
||||
<_ + "лік", _ + "ў"> => mkN063 form1;
|
||||
<_ + "нос", _ + "ы"> => mkN009 form1;
|
||||
<_ + "гай", _ + "і"> => mkN010 form1;
|
||||
<_ + "льф", _ + "ы"> => mkN031 form1;
|
||||
<_ + "рон", _ + "ў"> => mkN013 form1;
|
||||
<_ + "лон", _ + "ў"> => mkN029 form1;
|
||||
<_ + "лон", _ + "ы"> => mkN045 form1;
|
||||
<_ + "лёс", _ + "ы"> => mkN045 form1;
|
||||
<_ + "зін", _ + "ы"> => mkN031 form1;
|
||||
<_ + "уза", _ + "ы"> => mkN091 form1;
|
||||
<_ + "аза", _ + "ы"> => mkN016 form1;
|
||||
<_ + "аза", _ + "з"> => mkN139 form1;
|
||||
<_ + "ьба", _ + "ы"> => mkN016 form1;
|
||||
<_ + "іма", _ + "ы"> => mkN091 form1;
|
||||
<_ + "ына", _ + "ы"> => mkN016 form1;
|
||||
<_ + "спа", _ + "ы"> => mkN039 form1;
|
||||
<_ + "ана", _ + "ы"> => mkN016 form1;
|
||||
<_ + "гла", _ + "ы"> => mkN356 form1;
|
||||
<_ + "аба", _ + "ы"> => mkN016 form1;
|
||||
<_ + "ула", _ + "л"> => mkN012 form1;
|
||||
<_ + "ула", _ + "ы"> => mkN016 form1;
|
||||
<_ + "ыса", _ + "ы"> => mkN016 form1;
|
||||
<_ + "рна", _ + "ы"> => mkN091 form1;
|
||||
<_ + "раб", _ + "ы"> => mkN031 form1;
|
||||
<_ + "іян", _ + "ы"> => mkN031 form1;
|
||||
<_ + "цыс", _ + "ы"> => mkN031 form1;
|
||||
<_ + "мок", _ + "і"> => mkN015 form1;
|
||||
<_ + "іла", _ + "ы"> => mkN016 form1;
|
||||
<_ + "ела", _ + "ы"> => mkN016 form1;
|
||||
<_ + "ова", _ + "ў"> => mkN138 form1;
|
||||
<_ + "вол", _ + "ў"> => mkN029 form1;
|
||||
<_ + "дра", _ + "ў"> => mkN141 form1;
|
||||
<_ + "гад", _ + "ў"> => mkN081 form1;
|
||||
<_ + "зва", _ + "ў"> => mkN083 form1;
|
||||
<_ + "рва", _ + "ў"> => mkN083 form1;
|
||||
<_ + "вар", _ + "ў"> => mkN062 form1;
|
||||
<_ + "рук", _ + "ў"> => mkN328 form1;
|
||||
<_ + "нер", _ + "ы"> => mkN046 form1;
|
||||
<_ + "ост", _ + "ы"> => mkN054 form1;
|
||||
<_ + "энт", _ + "ы"> => mkN056 form1;
|
||||
<_ + "вер", _ + "ў"> => mkN062 form1;
|
||||
<_ + "раг", _ + "і"> => mkN115 form1;
|
||||
<_ + "ўца", _ + "ў"> => mkN078 form1;
|
||||
<_ + "бра", _ + "ы"> => mkN102 form1;
|
||||
<_ + "ьма", _ + "ў"> => mkN083 form1;
|
||||
<_ + "ель", _ + "і"> => mkN100 form1;
|
||||
<_ + "рог", _ + "і"> => mkN105 form1;
|
||||
<_ + "рог", _ + "ў"> => mkN339 form1;
|
||||
<_ + "унь", _ + "і"> => mkN121 form1;
|
||||
<_ + "йка", _ + "к"> => mkN160 form1;
|
||||
<_ + "ька", _ + "ў"> => mkN129 form1;
|
||||
<_ + "ька", _ + "і"> => mkN197 form1;
|
||||
<_ + "яць", _ + "ў"> => mkN132 form1;
|
||||
<_ + "ось", _ + "ў"> => mkN152 form1;
|
||||
<_ + "зак", _ + "ў"> => mkN191 form1;
|
||||
<_ + "ар", _ + "тры"> => mkN373 form1;
|
||||
<_ + "ок", _ + "ркі"> => mkN015 form1;
|
||||
<_ + "ок", _ + "ткі"> => mkN015 form1;
|
||||
<_ + "ок", _ + "акі"> => mkN030 form1;
|
||||
<_ + "ва", _ + "івы"> => mkN150 form1;
|
||||
<_ + "ла", _ + "элы"> => mkN182 form1;
|
||||
<_ + "ла", _ + "ылы"> => mkN188 form1;
|
||||
<_ + "са", _ + "осы"> => mkN070 form1;
|
||||
<_ + "ел", _ + "елы"> => mkN031 form1;
|
||||
<_ + "ль", _ + "злі"> => mkN177 form1;
|
||||
<_ + "нь", _ + "дні"> => mkN173 form1;
|
||||
<_ + "нь", _ + "ўні"> => mkN175 form1;
|
||||
<_ + "нь", _ + "сні"> => mkN179 form1;
|
||||
<_ + "нь", _ + "пні"> => mkN179 form1;
|
||||
<_ + "нь", _ + "яні"> => mkN400 form1;
|
||||
<_ + "ак", _ + "оў"> => mkN006 form1;
|
||||
<_ + "ык", _ + "оў"> => mkN006 form1;
|
||||
<_ + "як", _ + "аў"> => mkN063 form1;
|
||||
<_ + "ар", _ + "оў"> => mkN019 form1;
|
||||
<_ + "ла", _ + "ол"> => mkN139 form1;
|
||||
<_ + "ын", _ + "оў"> => mkN038 form1;
|
||||
<_ + "яр", _ + "аў"> => mkN062 form1;
|
||||
<_ + "іт", _ + "ты"> => mkN032 form1;
|
||||
<_ + "ль", _ + "ёў"> => mkN203 form1;
|
||||
<_ + "ак", _ + "ў"> => mkN276 form1;
|
||||
<_ + "ык", _ + "і"> => mkN008 form1;
|
||||
<_ + "ыр", _ + "ы"> => mkN034 form1;
|
||||
<_ + "ір", _ + "ы"> => mkN042 form1;
|
||||
<_ + "ар", _ + "ы"> => mkN046 form1;
|
||||
<_ + "аг", _ + "ў"> => mkN063 form1;
|
||||
<_ + "эх", _ + "ў"> => mkN063 form1;
|
||||
<_ + "ма", _ + "м"> => mkN012 form1;
|
||||
<_ + "на", _ + "н"> => mkN012 form1;
|
||||
<_ + "ба", _ + "б"> => mkN012 form1;
|
||||
<_ + "ла", _ + "л"> => mkN012 form1;
|
||||
<_ + "па", _ + "п"> => mkN012 form1;
|
||||
<_ + "ап", _ + "ы"> => mkN031 form1;
|
||||
<_ + "эл", _ + "ў"> => mkN013 form1;
|
||||
<_ + "ен", _ + "ы"> => mkN045 form1;
|
||||
<_ + "ей", _ + "ў"> => mkN022 form1;
|
||||
<_ + "ёл", _ + "ы"> => mkN031 form1;
|
||||
<_ + "та", _ + "ў"> => mkN078 form1;
|
||||
<_ + "ін", _ + "ы"> => mkN031 form1;
|
||||
<_ + "ст", _ + "ы"> => mkN032 form1;
|
||||
<_ + "шч", _ + "ў"> => mkN346 form1;
|
||||
<_ + "ца", _ + "ц"> => mkN137 form1;
|
||||
<_ + "рд", _ + "ў"> => mkN081 form1;
|
||||
<_ + "ск", _ + "ў"> => mkN063 form1;
|
||||
<_ + "еч", _ + "ы"> => mkN069 form1;
|
||||
<_ + "ча", _ + "ў"> => mkN141 form1;
|
||||
<_ + "бя", _ + "т"> => mkN153 form1;
|
||||
<_ + "ль", _ + "ў"> => mkN152 form1;
|
||||
<_ + "нь", _ + "ў"> => mkN152 form1;
|
||||
<_ + "ха", _ + "і"> => mkN309 form1;
|
||||
<_ + "зь", _ + "ў"> => mkN132 form1;
|
||||
<_ + "оя", _ + "і"> => mkN301 form1;
|
||||
<_ + "ж", _ + "ыжы"> => mkN090 form1;
|
||||
<_ + "г", _ + "ўгі"> => mkN044 form1;
|
||||
<_ + "с", _ + "ысы"> => mkN050 form1;
|
||||
<_ + "д", _ + "оды"> => mkN037 form1;
|
||||
<_ + "р", _ + "ары"> => mkN059 form1;
|
||||
<_ + "ь", _ + "кці"> => mkN177 form1;
|
||||
<_ + "ь", _ + "гці"> => mkN177 form1;
|
||||
<_ + "ь", _ + "аці"> => mkN325 form1;
|
||||
<_ + "т", _ + "оў"> => mkN001 form1;
|
||||
<_ + "к", _ + "оў"> => mkN006 form1;
|
||||
<_ + "л", _ + "оў"> => mkN159 form1;
|
||||
<_ + "й", _ + "оі"> => mkN017 form1;
|
||||
<_ + "й", _ + "іі"> => mkN067 form1;
|
||||
<_ + "с", _ + "оў"> => mkN195 form1;
|
||||
<_ + "н", _ + "оў"> => mkN038 form1;
|
||||
<_ + "о", _ + "вы"> => mkN278 form1;
|
||||
<_ + "т", _ + "ў"> => mkN131 form1;
|
||||
<_ + "а", _ + "к"> => mkN003 form1;
|
||||
<_ + "к", _ + "ў"> => mkN063 form1;
|
||||
<_ + "м", _ + "ў"> => mkN013 form1;
|
||||
<_ + "л", _ + "ў"> => mkN013 form1;
|
||||
<_ + "с", _ + "ў"> => mkN013 form1;
|
||||
<_ + "з", _ + "ў"> => mkN013 form1;
|
||||
<_ + "н", _ + "ў"> => mkN013 form1;
|
||||
<_ + "п", _ + "ў"> => mkN029 form1;
|
||||
<_ + "р", _ + "ў"> => mkN062 form1;
|
||||
<_ + "х", _ + "ў"> => mkN063 form1;
|
||||
<_ + "я", _ + "т"> => mkN153 form1;
|
||||
<_ + "я", _ + "ў"> => mkN154 form1;
|
||||
<_ + "я", _ + "ь"> => mkN232 form1;
|
||||
<_ + "я", _ + "й"> => mkN384 form1;
|
||||
<_ + "ц", _ + "ы"> => mkN299 form1;
|
||||
<_ + "ь", _ + "й"> => mkN323 form1;
|
||||
_ => regN form1
|
||||
} ;
|
||||
|
||||
regV : Str -> V -- infinitive
|
||||
= \form -> case form of {
|
||||
_ + "агчы" => mkV021 form;
|
||||
_ + "іць" => mkV036 form;
|
||||
_ + "эць" => mkV048 form;
|
||||
_ + "ыць" => mkV020 form;
|
||||
_ + "уць" => mkV045 form;
|
||||
_ + "ячы" => mkV072 form;
|
||||
_ + "ьці" => mkV013 form;
|
||||
_ + "зці" => mkV049 form;
|
||||
_ + "бці" => mkV137 form;
|
||||
_ + "сці" => mkV016 form;
|
||||
_ + "цца" => mkV043 form;
|
||||
_ + "ма" => mkV013 form;
|
||||
_ + "шы" => mkV013 form;
|
||||
_ + "ь" => mkV015 form;
|
||||
_ => error "Cannot find an inflection rule"
|
||||
} ;
|
||||
|
||||
reg2V : Str -> Str -> V -- infinitive Imperative;Sg
|
||||
= \form1, form2 -> case <form1, form2> of {
|
||||
<_ + "іць", _ + "ані"> => mkV096 form1;
|
||||
<_ + "іць", _ + "яні"> => mkV079 form1;
|
||||
<_ + "іць", _ + "апі"> => mkV017 form1;
|
||||
<_ + "іць", _ + "сці"> => mkV078 form1;
|
||||
<_ + "уць", _ + "кні"> => mkV074 form1;
|
||||
<_ + "уць", _ + "хні"> => mkV074 form1;
|
||||
<_ + "іць", _ + "ві"> => mkV001 form1;
|
||||
<_ + "іць", _ + "бі"> => mkV058 form1;
|
||||
<_ + "іць", _ + "зі"> => mkV058 form1;
|
||||
<_ + "іць", _ + "аі"> => mkV155 form1;
|
||||
<_ + "іць", _ + "пі"> => mkV058 form1;
|
||||
<_ + "іць", _ + "ці"> => mkV033 form1;
|
||||
<_ + "іць", _ + "сі"> => mkV050 form1;
|
||||
<_ + "іць", _ + "ць"> => mkV060 form1;
|
||||
<_ + "іць", _ + "мь"> => mkV106 form1;
|
||||
<_ + "ыць", _ + "жы"> => mkV064 form1;
|
||||
<_ + "іць", _ + "і"> => mkV011 form1;
|
||||
<_ + "іць", _ + "ў"> => mkV139 form1;
|
||||
<_ + "іць", _ + "й"> => mkV156 form1;
|
||||
<_ + "эць", _ + "й"> => mkV015 form1;
|
||||
<_ + "эць", _ + "ь"> => mkV063 form1;
|
||||
<_ + "ыць", _ + "ы"> => mkV070 form1;
|
||||
<_ + "ыць", _ + "й"> => mkV055 form1;
|
||||
<_ + "ыць", _ + "і"> => mkV089 form1;
|
||||
<_ + "уць", _ + "ь"> => mkV037 form1;
|
||||
<_ + "уць", _ + "й"> => mkV055 form1;
|
||||
<_ + "зці", _ + "ь"> => mkV092 form1;
|
||||
<_ + "ь", _ + "жуй"> => mkV003 form1;
|
||||
<_ + "ь", _ + "цай"> => mkV055 form1;
|
||||
<_ + "ь", _ + "лжы"> => mkV125 form1;
|
||||
<_ + "ь", _ + "аві"> => mkV102 form1;
|
||||
<_ + "ь", _ + "ссі"> => mkV145 form1;
|
||||
<_ + "і", _ + "асі"> => mkV137 form1;
|
||||
<_ + "ы", _ + "яжы"> => mkV143 form1;
|
||||
<_ + "а", _ + "іся"> => mkV046 form1;
|
||||
<_ + "а", _ + "ыся"> => mkV046 form1;
|
||||
<_ + "а", _ + "ься"> => mkV080 form1;
|
||||
<_ + "а", _ + "рся"> => mkV087 form1;
|
||||
<_ + "а", _ + "чся"> => mkV087 form1;
|
||||
<_ + "ь", _ + "уй"> => mkV029 form1;
|
||||
<_ + "ь", _ + "ой"> => mkV025 form1;
|
||||
<_ + "ь", _ + "юй"> => mkV120 form1;
|
||||
<_ + "ь", _ + "нь"> => mkV063 form1;
|
||||
<_ + "ь", _ + "шы"> => mkV028 form1;
|
||||
<_ + "ь", _ + "чы"> => mkV130 form1;
|
||||
<_ + "ь", _ + "мі"> => mkV039 form1;
|
||||
<_ + "ь", _ + "ві"> => mkV039 form1;
|
||||
<_ + "ь", _ + "зі"> => mkV115 form1;
|
||||
<_ + "ь", _ + "ні"> => mkV102 form1;
|
||||
<_ + "ь", _ + "бі"> => mkV145 form1;
|
||||
<_ + "і", _ + "сі"> => mkV049 form1;
|
||||
<_ + "і", _ + "ці"> => mkV056 form1;
|
||||
<_ + "ь", _ + "ь"> => mkV018 form1;
|
||||
<_ + "ь", _ + "ы"> => mkV066 form1;
|
||||
<_ + "ь", _ + "ч"> => mkV034 form1;
|
||||
<_ + "ь", _ + "і"> => mkV069 form1;
|
||||
<_ + "і", _ + "ь"> => mkV054 form1;
|
||||
_ => regV form1
|
||||
} ;
|
||||
|
||||
regA : Str -> A -- s;Nom;('GSg', Masc)
|
||||
= \form -> case form of {
|
||||
_ + "які" => mkA006 form;
|
||||
_ + "пы" => mkA002 form;
|
||||
_ + "гі" => mkA006 form;
|
||||
_ + "хі" => mkA006 form;
|
||||
_ + "ні" => mkA005 form;
|
||||
_ + "ці" => mkA005 form;
|
||||
_ + "ыі" => mkA005 form;
|
||||
_ + "ы" => mkA001 form;
|
||||
_ + "і" => mkA003 form;
|
||||
_ + "а" => mkA004 form;
|
||||
_ + "н" => mkA004 form;
|
||||
_ + "т" => mkA004 form;
|
||||
_ + "ў" => mkA004 form;
|
||||
_ + "ь" => mkA004 form;
|
||||
_ => error "Cannot find an inflection rule"
|
||||
} ;
|
||||
|
||||
reg2A : Str -> Str -> A -- s;Nom;('GSg', Masc) s;Nom;('GSg', Neuter)
|
||||
= \form1, form2 -> case <form1, form2> of {
|
||||
<_ + "гі", _ + "ае"> => mkA003 form1;
|
||||
<_ + "хі", _ + "ае"> => mkA003 form1;
|
||||
<_ + "ы", _ + "ое"> => mkA002 form1;
|
||||
<_ + "і", _ + "яе"> => mkA004 form1;
|
||||
<_ + "і", _ + "ое"> => mkA006 form1;
|
||||
_ => regA form1
|
||||
} ;
|
||||
|
||||
mkN = overload {
|
||||
mkN : Str -> N = regN; -- s;Nom;Sg
|
||||
mkN : Str -> Str -> N = reg2N -- s;Nom;Sg s;Acc;Pl
|
||||
} ;
|
||||
|
||||
mkN2 = overload {
|
||||
mkN2 : N -> N2 = \n -> lin N2 (n ** {c2 = noPrep}) ;
|
||||
mkN2 : N -> Prep -> N2 = \n,p -> lin N2 (n ** {c2 = p}) ;
|
||||
} ;
|
||||
|
||||
mkN3 = overload {
|
||||
mkN3 : N -> N3 = \n -> lin N3 (n ** {c2 = noPrep; c3 = noPrep}) ;
|
||||
mkN3 : N -> Prep -> Prep -> N3 = \n,p1,p2 -> lin N3 (n ** {c2 = p1; c3 = p2}) ;
|
||||
} ;
|
||||
|
||||
mkV = overload {
|
||||
mkV : Str -> V = regV; -- infinitive
|
||||
mkV : Str -> Str -> V = reg2V -- infinitive Imperative;Sg
|
||||
} ;
|
||||
|
||||
mkVV : V -> VV = \v -> lin VV v ;
|
||||
mkVS : V -> VS = \v -> lin VS v ;
|
||||
mkVQ : V -> VQ = \v -> lin VQ v ;
|
||||
mkVA : V -> VA = \v -> lin VA v ;
|
||||
|
||||
mkV2 = overload {
|
||||
mkV2 : V -> V2 = \v -> lin V2 (v ** {c2 = noPrep}) ;
|
||||
mkV2 : V -> Prep -> V2 = \v,p -> lin V2 (v ** {c2 = p}) ;
|
||||
} ;
|
||||
|
||||
mkV3 = overload {
|
||||
mkV3 : V -> V3 = \v -> lin V3 (v ** {c2 = noPrep; c3 = noPrep}) ;
|
||||
mkV3 : V -> Prep -> Prep -> V3 = \v,p1,p2 -> lin V3 (v ** {c2 = p1; c3 = p2}) ;
|
||||
} ;
|
||||
|
||||
mkV2A = overload {
|
||||
mkV2A : V -> V2A = \v -> lin V2A (v ** {c2 = noPrep; c3 = noPrep}) ;
|
||||
mkV2A : V -> Prep -> Prep -> V2A = \v,p1,p2 -> lin V2A (v ** {c2 = p1; c3 = p2}) ;
|
||||
} ;
|
||||
|
||||
mkV2S = overload {
|
||||
mkV2S : V -> V2S = \v -> lin V2S (v ** {c2 = noPrep; c3 = noPrep}) ;
|
||||
mkV2S : V -> Prep -> Prep -> V2S = \v,p1,p2 -> lin V2S (v ** {c2 = p1; c3 = p2}) ;
|
||||
} ;
|
||||
|
||||
mkV2Q = overload {
|
||||
mkV2Q : V -> V2Q = \v -> lin V2Q (v ** {c2 = noPrep; c3 = noPrep}) ;
|
||||
mkV2Q : V -> Prep -> Prep -> V2Q = \v,p1,p2 -> lin V2Q (v ** {c2 = p1; c3 = p2}) ;
|
||||
} ;
|
||||
|
||||
mkV2V = overload {
|
||||
mkV2V : V -> V2V = \v -> lin V2V (v ** {c2 = noPrep; c3 = noPrep}) ;
|
||||
mkV2V : V -> Prep -> Prep -> V2V = \v,p1,p2 -> lin V2V (v ** {c2 = p1; c3 = p2}) ;
|
||||
} ;
|
||||
|
||||
mkA = overload {
|
||||
mkA : Str -> A = regA; -- s;Nom;('GSg', Masc)
|
||||
mkA : Str -> Str -> A = reg2A -- s;Nom;('GSg', Masc) s;Nom;('GSg', Neuter)
|
||||
} ;
|
||||
|
||||
mkA2 = overload {
|
||||
mkA2 : A -> A2 = \a -> lin A2 (a ** {c2 = noPrep}) ;
|
||||
mkA2 : A -> Prep -> A2 = \a,p -> lin A2 (a ** {c2 = p}) ;
|
||||
} ;
|
||||
|
||||
mkAdv : Str -> Adv = \s -> lin Adv {s=s} ;
|
||||
mkAdV : Str -> AdV = \s -> lin AdV {s=s} ;
|
||||
mkAdA : Str -> AdA = \s -> lin AdA {s=s} ;
|
||||
mkAdN : Str -> AdN = \s -> lin AdN {s=s} ;
|
||||
mkCAdv : Str -> CAdv = \s -> lin CAdv {s=s; p=""} ;
|
||||
mkInterj : Str -> Interj = \s -> lin Interj {s=s} ;
|
||||
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
|
||||
|
||||
mkPrep : Str -> Prep = \s -> lin Prep {s=s; c=Acc} ;
|
||||
|
||||
mkIAdv : Str -> IAdv = \s -> lin IAdv {s=s} ;
|
||||
mkIP : Str -> IP = \s -> lin IP {s=s} ;
|
||||
mkIQuant : Str -> IQuant = \s -> lin IQuant {s=s} ;
|
||||
mkIDet : Str -> IDet = \s -> lin IDet {s=s} ;
|
||||
mkSubj : Str -> Subj = \s -> lin Subj {s=s} ;
|
||||
mkQuant : Str -> Quant = \s -> lin Quant {s=s} ;
|
||||
mkPredet : Str -> Predet = \s -> lin Predet {s=s} ;
|
||||
mkDet : Str -> Det = \s -> lin Det {s=s} ;
|
||||
mkCard : Str -> Card = \s -> lin Card {s=s} ;
|
||||
mkConj : Str -> Conj = \s -> lin Conj {s=s} ;
|
||||
mkPConj : Str -> PConj = \s -> lin PConj {s=s} ;
|
||||
mkVoc : Str -> Voc = \s -> lin Voc {s=s} ;
|
||||
|
||||
mkLN : Str -> LN = \s -> lin LN {s=s} ;
|
||||
mkGN : Str -> GN = \s -> lin GN {s=s} ;
|
||||
mkSN : Str -> SN = \s -> lin SN {s=s} ;
|
||||
mkPN : Str -> PN = \s -> lin PN {s=s} ;
|
||||
|
||||
}
|
||||
11
src/belarusian/PhraseBel.gf
Normal file
11
src/belarusian/PhraseBel.gf
Normal file
@@ -0,0 +1,11 @@
|
||||
concrete PhraseBel of Phrase = CatBel ** {
|
||||
lin
|
||||
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
|
||||
|
||||
UttS s = s ;
|
||||
UttInterj i = i ;
|
||||
|
||||
NoPConj = {s = []} ;
|
||||
|
||||
NoVoc = {s = []} ;
|
||||
}
|
||||
163
src/belarusian/ResBel.gf
Normal file
163
src/belarusian/ResBel.gf
Normal file
@@ -0,0 +1,163 @@
|
||||
resource ResBel = {
|
||||
|
||||
param Case = Nom | Acc | Dat | Gen | Loc | Instr ;
|
||||
param Number = Sg | Pl ;
|
||||
param Gender = Masc | Fem | Neuter ;
|
||||
oper Noun = {s: Case => Number => Str; voc: Str; g: Gender} ; -- 2696
|
||||
oper mkNoun : (_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Gender -> Noun =
|
||||
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,g ->
|
||||
{ s = table {
|
||||
Nom => table {
|
||||
Sg => f1 ;
|
||||
Pl => f2
|
||||
} ;
|
||||
Acc => table {
|
||||
Sg => f3 ;
|
||||
Pl => f4
|
||||
} ;
|
||||
Dat => table {
|
||||
Sg => f5 ;
|
||||
Pl => f6
|
||||
} ;
|
||||
Gen => table {
|
||||
Sg => f7 ;
|
||||
Pl => f8
|
||||
} ;
|
||||
Loc => table {
|
||||
Sg => f9 ;
|
||||
Pl => f10
|
||||
} ;
|
||||
Instr => table {
|
||||
Sg => f11 ;
|
||||
Pl => f12
|
||||
}
|
||||
} ;
|
||||
voc = f13 ;
|
||||
g = g
|
||||
} ;
|
||||
|
||||
|
||||
param Aspect = Imperf | Perf ;
|
||||
param Person = P1 | P2 | P3 ;
|
||||
param Tense = Pres | Past ;
|
||||
oper V = {active: Aspect => {Past: Str; Pres: Person => Number => Str}; imperative: Number => Str; infinitive: Str; participle: Gender => Number => Str; passive: Aspect => Tense => Str} ; -- 703
|
||||
oper mkV : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> V =
|
||||
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24,f25,f26,f27 ->
|
||||
{ active = table {
|
||||
Imperf => { Past = f1 ;
|
||||
Pres = table {
|
||||
P1 => table {
|
||||
Sg => f2 ;
|
||||
Pl => f3
|
||||
} ;
|
||||
P2 => table {
|
||||
Sg => f4 ;
|
||||
Pl => f5
|
||||
} ;
|
||||
P3 => table {
|
||||
Sg => f6 ;
|
||||
Pl => f7
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Perf => { Past = f8 ;
|
||||
Pres = table {
|
||||
P1 => table {
|
||||
Sg => f9 ;
|
||||
Pl => f10
|
||||
} ;
|
||||
P2 => table {
|
||||
Sg => f11 ;
|
||||
Pl => f12
|
||||
} ;
|
||||
P3 => table {
|
||||
Sg => f13 ;
|
||||
Pl => f14
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
imperative = table {
|
||||
Sg => f15 ;
|
||||
Pl => f16
|
||||
} ;
|
||||
infinitive = f17 ;
|
||||
participle = table {
|
||||
Masc => table {
|
||||
Sg => f18 ;
|
||||
Pl => f19
|
||||
} ;
|
||||
Fem => table {
|
||||
Sg => f20 ;
|
||||
Pl => f21
|
||||
} ;
|
||||
Neuter => table {
|
||||
Sg => f22 ;
|
||||
Pl => f23
|
||||
}
|
||||
} ;
|
||||
passive = table {
|
||||
Imperf => table {
|
||||
Pres => f24 ;
|
||||
Past => f25
|
||||
} ;
|
||||
Perf => table {
|
||||
Pres => f26 ;
|
||||
Past => f27
|
||||
}
|
||||
}
|
||||
} ;
|
||||
|
||||
|
||||
param GenNum = GSg Gender | GPl ;
|
||||
oper A = {s: Case => GenNum => Str} ; -- 704
|
||||
oper mkA : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> A =
|
||||
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24 ->
|
||||
{ s = table {
|
||||
Nom => table {
|
||||
GSg Masc => f1 ;
|
||||
GSg Fem => f2 ;
|
||||
GSg Neuter => f3 ;
|
||||
GPl => f4
|
||||
} ;
|
||||
Acc => table {
|
||||
GSg Masc => f5 ;
|
||||
GSg Fem => f6 ;
|
||||
GSg Neuter => f7 ;
|
||||
GPl => f8
|
||||
} ;
|
||||
Dat => table {
|
||||
GSg Masc => f9 ;
|
||||
GSg Fem => f10 ;
|
||||
GSg Neuter => f11 ;
|
||||
GPl => f12
|
||||
} ;
|
||||
Gen => table {
|
||||
GSg Masc => f13 ;
|
||||
GSg Fem => f14 ;
|
||||
GSg Neuter => f15 ;
|
||||
GPl => f16
|
||||
} ;
|
||||
Loc => table {
|
||||
GSg Masc => f17 ;
|
||||
GSg Fem => f18 ;
|
||||
GSg Neuter => f19 ;
|
||||
GPl => f20
|
||||
} ;
|
||||
Instr => table {
|
||||
GSg Masc => f21 ;
|
||||
GSg Fem => f22 ;
|
||||
GSg Neuter => f23 ;
|
||||
GPl => f24
|
||||
}
|
||||
}
|
||||
} ;
|
||||
|
||||
|
||||
oper Compl = {s : Str; c : Case} ;
|
||||
oper noPrep : Compl = {s=""; c=Acc} ;
|
||||
|
||||
oper CommonNoun = Noun ;
|
||||
oper AdjPhrase = A ;
|
||||
|
||||
}
|
||||
@@ -148,7 +148,7 @@ lin
|
||||
s1= heading1 ("Прилагателно") ;
|
||||
s2= frameTable (
|
||||
tr (intagAttr "th" "rowspan=\"7\"" "ед.ч." ++
|
||||
intagAttr "th" "rowspan=\"3\"" "мн.ч." ++
|
||||
intagAttr "th" "rowspan=\"3\"" "м.р." ++
|
||||
th "нечленувано" ++
|
||||
td (a.s ! (ASg Masc Indef))) ++
|
||||
tr (th "непълен член" ++ td (a.s ! (ASg Masc Def))) ++
|
||||
|
||||
@@ -316,18 +316,6 @@ lin UseComp_estar = UseComp ;
|
||||
|
||||
lin ProDrop pro = pro ;
|
||||
|
||||
lin AnaphPron np =
|
||||
case <np.gn, np.p> of {
|
||||
<GSg _, PronP1> => i_Pron ;
|
||||
<GSg _, PronP2> => youSg_Pron ;
|
||||
<GSg Masc, _> => he_Pron ;
|
||||
<GSg Fem, _> => she_Pron ;
|
||||
<GSg Neutr, _> => it_Pron ;
|
||||
<GPl, PronP1> => we_Pron ;
|
||||
<GPl, PronP2> => youPl_Pron ;
|
||||
<GPl, _> => they_Pron
|
||||
} ;
|
||||
|
||||
lin TPastSimple = {s = []} ** {t = VPastSimple} ; --# notpresent
|
||||
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
--# -path=.:../abstract:../common:../api
|
||||
--# -path=.:../abstract:../common:../api:../prelude
|
||||
|
||||
concrete LangBul of Lang =
|
||||
GrammarBul,
|
||||
|
||||
@@ -168,7 +168,7 @@ oper
|
||||
--
|
||||
|
||||
prepN2 : N -> Prep -> N2 ;
|
||||
prepN2 n p = n ** {c2 = p} ;
|
||||
prepN2 n p = lin N2 (n ** {c2 = p}) ;
|
||||
|
||||
dirN2 : N -> N2 ;
|
||||
dirN2 n = prepN2 n noPrep ;
|
||||
@@ -178,7 +178,7 @@ oper
|
||||
--
|
||||
|
||||
prepN3 : N -> Prep -> Prep -> N3 ;
|
||||
prepN3 n p q = n ** {c2 = p; c3 = q} ;
|
||||
prepN3 n p q = lin N3 (n ** {c2 = p; c3 = q}) ;
|
||||
|
||||
dirN3 : N -> Prep -> N3 ;
|
||||
dirN3 n p = prepN3 n noPrep p ;
|
||||
|
||||
@@ -200,12 +200,6 @@ lin pot5decimal d = {
|
||||
_ => BIND
|
||||
} ;
|
||||
|
||||
inc : DTail -> DTail = \t -> case t of {
|
||||
T1 => T2 ;
|
||||
T2 => T3 ;
|
||||
T3 => T1
|
||||
} ;
|
||||
|
||||
mk2Dig : Str -> Str -> TDigit = \c,o -> mk3Dig c (c+"ма") o Pl ;
|
||||
mkDig : Str -> TDigit = \c -> mk2Dig c (c + "ти") ;
|
||||
|
||||
|
||||
@@ -179,12 +179,6 @@ param
|
||||
_ => BIND
|
||||
} ;
|
||||
|
||||
inc : DTail -> DTail = \t -> case t of {
|
||||
T1 => T2 ;
|
||||
T2 => T3 ;
|
||||
T3 => T1
|
||||
} ;
|
||||
|
||||
oper
|
||||
mk2Dig : Str -> Str -> TDigit = \c,o -> mk3Dig c o Pl ;
|
||||
mkDig : Str -> TDigit = \c -> mk2Dig c (c + ":o") ;
|
||||
|
||||
@@ -183,7 +183,7 @@ oper
|
||||
mkInterj : Str -> Interj
|
||||
= \s -> lin Interj {s = word s} ;
|
||||
|
||||
emptyPrep : Preposition = mkPrep [] ;
|
||||
emptyPrep : Prep = mkPrep [] ;
|
||||
|
||||
mkpNP : Str -> CatChi.NP
|
||||
= \s -> lin NP {s = word s ; det = []} ;
|
||||
|
||||
@@ -64,5 +64,11 @@ resource ParamX = open Prelude in {
|
||||
param
|
||||
DTail = T1 | T2 | T3 ;
|
||||
|
||||
oper
|
||||
inc : DTail -> DTail = \t -> case t of {
|
||||
T1 => T2 ;
|
||||
T2 => T3 ;
|
||||
T3 => T1
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -726,7 +726,6 @@ adjFormsAdjective : AdjForms -> Adjective = \afs -> {
|
||||
|
||||
Ag _ Pl P1 => jarniAdjForms "naše" ** {
|
||||
msnom = "náš" ;
|
||||
msins = "naším" ;
|
||||
fsgen,mpnom = "naši" ;
|
||||
fsins = "naší" ;
|
||||
pdat, msins = "našim" ;
|
||||
@@ -735,7 +734,6 @@ adjFormsAdjective : AdjForms -> Adjective = \afs -> {
|
||||
} ;
|
||||
Ag _ Pl P2 => jarniAdjForms "vaše" ** {
|
||||
msnom = "váš" ;
|
||||
msins = "vaším" ;
|
||||
fsgen,mpnom = "vaši" ;
|
||||
fsins = "vaší" ;
|
||||
pdat, msins = "vašim" ;
|
||||
|
||||
@@ -19,8 +19,14 @@ concrete ExtendDan of Extend = CatDan **
|
||||
GenRP
|
||||
]
|
||||
with (Grammar = GrammarDan)
|
||||
** {
|
||||
** open Prelude in {
|
||||
|
||||
flags coding=utf8 ;
|
||||
|
||||
lin CompoundN n1 n2 = {
|
||||
s = \\n,s,c => n1.co ++ BIND ++ n2.s ! n ! s ! c ;
|
||||
co = n1.co ++ BIND ++ n2.co ;
|
||||
g = n2.g
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ concrete NumeralDan of Numeral = CatDan [Numeral,Digits,Decimal] ** open MorphoD
|
||||
lincat
|
||||
Digit = {s : DForm => CardOrd => Str} ;
|
||||
Sub10 = {s : DForm => CardOrd => Str ; n : Number} ;
|
||||
Sub100, Sub1000, Sub1000000 =
|
||||
Sub100, Sub1000, Sub1000000, Sub1000000000, Sub1000000000000 =
|
||||
{s : CardOrd => Str ; n : Number} ;
|
||||
|
||||
lin num x = x ;
|
||||
@@ -45,6 +45,9 @@ lin n9 = mkTal "ni" "nitten" "halvfems" "niende" "halvfemsindstyvende" ;
|
||||
pot3 n = numPl (\\g => n.s ! invNum ++ cardOrd "tusind" "tusinde" ! g) ;
|
||||
pot3plus n m = {s = \\g => n.s ! invNum ++ "tusind" ++ "og" ++ m.s ! g ; n =Pl} ;
|
||||
|
||||
pot3as4 n = n ;
|
||||
pot4as5 n = n ;
|
||||
|
||||
lincat
|
||||
Dig = TDigit ;
|
||||
|
||||
|
||||
@@ -191,7 +191,7 @@ lin
|
||||
VVPresPart => pp "verb+ing"
|
||||
}) ;
|
||||
s2= frameTable (
|
||||
tr (th "infitive" ++ td (v.s ! VVF VInf)) ++
|
||||
tr (th "infinitive" ++ td (v.s ! VVF VInf)) ++
|
||||
tr (th "present" ++ td (v.s ! VVF VPres ++ " " ++ v.s ! VVPresNeg)) ++
|
||||
tr (th "past" ++ td (v.s ! VVF VPast ++ " " ++ v.s ! VVPastNeg)) ++ --# notpresent
|
||||
tr (th "past part." ++ td (v.s ! VVF VPPart)) ++
|
||||
@@ -229,7 +229,7 @@ lin
|
||||
oper
|
||||
inflVerb : Verb -> Str = \verb ->
|
||||
frameTable (
|
||||
tr (th "infitive" ++ td (verb.s ! VInf)) ++
|
||||
tr (th "infinitive" ++ td (verb.s ! VInf)) ++
|
||||
tr (th "present" ++ td (verb.s ! VPres)) ++
|
||||
tr (th "past" ++ td (verb.s ! VPast)) ++ --# notpresent
|
||||
tr (th "past part." ++ td (verb.s ! VPPart)) ++
|
||||
|
||||
@@ -182,7 +182,7 @@ concrete ExtendEng of Extend =
|
||||
|
||||
BaseVPS2 x y =
|
||||
let baseX : OneFinVPS = baseVPS2 x ;
|
||||
baseY : OneFinVPS = baseVPS y ;
|
||||
baseY : OneFinVPS = baseVPS (lin VPS y) ;
|
||||
in twoTable2 Order Agr baseX baseY ** {fin = baseX.fin ; c2 = y.c2} ;
|
||||
ConsVPS2 x xs =
|
||||
let baseX : OneFinVPS = baseVPS2 x ;
|
||||
@@ -323,8 +323,8 @@ lin BaseImp = twoTable2 CPolarity ImpForm ;
|
||||
} ;
|
||||
|
||||
lin
|
||||
PassVPSlash vps = passVPSlash (lin VPS vps) [] ;
|
||||
PassAgentVPSlash vps np = passVPSlash (lin VPS vps) ("by" ++ np.s ! NPAcc) ;
|
||||
PassVPSlash vps = passVPSlash (lin VPSlash vps) [] ;
|
||||
PassAgentVPSlash vps np = passVPSlash (lin VPSlash vps) ("by" ++ np.s ! NPAcc) ;
|
||||
ProgrVPSlash vp = insertObjc (\\a => vp.ad ! a ++ vp.prp ++ vp.p ++ vp.s2 ! a)
|
||||
(predAux auxBe ** {c2 = vp.c2; gapInMiddle = vp.gapInMiddle; missingAdv = vp.missingAdv});
|
||||
|
||||
@@ -500,18 +500,4 @@ lin CardCNCard card cn =
|
||||
lin theyFem_Pron = mkPron "they" "them" "their" "theirs" plural P3 feminine ;
|
||||
lin theyNeutr_Pron = mkPron "they" "them" "their" "theirs" plural P3 nonhuman ;
|
||||
|
||||
lin AnaphPron np =
|
||||
case np.a of {
|
||||
AgP1 Sg => i_Pron ;
|
||||
AgP1 Pl => we_Pron ;
|
||||
AgP2 Sg => youSg_Pron ;
|
||||
AgP2 Pl => youPl_Pron ;
|
||||
AgP3Sg Masc => he_Pron ;
|
||||
AgP3Sg Fem => she_Pron ;
|
||||
AgP3Sg Neutr => it_Pron ;
|
||||
AgP3Pl Masc => they_Pron ;
|
||||
AgP3Pl Fem => theyFem_Pron ;
|
||||
AgP3Pl Neutr => theyNeutr_Pron
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -134,12 +134,6 @@ lin PosDecimal d = d ** {hasDot=False} ;
|
||||
_ => BIND
|
||||
} ;
|
||||
|
||||
inc : DTail -> DTail = \t -> case t of {
|
||||
T1 => T2 ;
|
||||
T2 => T3 ;
|
||||
T3 => T1
|
||||
} ;
|
||||
|
||||
mk2Dig : Str -> Str -> TDigit = \c,o -> mk3Dig c o Pl ;
|
||||
mkDig : Str -> TDigit = \c -> mk2Dig c (c + "th") ;
|
||||
|
||||
|
||||
@@ -353,7 +353,7 @@ concrete ExtendEst of Extend =
|
||||
|
||||
-- : VPSlash -> AP ; -- täna leitud
|
||||
PastPartAP vp = {
|
||||
s = \\_,_ => vp2adv <vp : VP> <True : Bool> <PastPart Pass : VForm> ;
|
||||
s = \\_,_ => vp2adv <lin VP vp : VP> True (PastPart Pass) ;
|
||||
infl = Invariable
|
||||
} ;
|
||||
|
||||
@@ -366,7 +366,7 @@ concrete ExtendEst of Extend =
|
||||
-- : VPSlash -> NP -> AP -- hobisukeldujate poolt leitud (süvaveepomm)
|
||||
PastPartAgentAP vp np = {
|
||||
s = \\_,_ => appCompl True Pos by8agent_Prep np
|
||||
++ vp2adv <vp : VP> <True : Bool> <PastPart Pass : VForm> ;
|
||||
++ vp2adv <lin VP vp : VP> True (PastPart Pass) ;
|
||||
infl = Invariable
|
||||
} ;
|
||||
|
||||
@@ -374,7 +374,7 @@ concrete ExtendEst of Extend =
|
||||
|
||||
-- : AP -> VP -> Cl ; -- it is good to walk / on hea kõndida
|
||||
PredAPVP ap vp =
|
||||
let heaOllaVP : VP = insertObj (\\_,_,_ => ap.s ! True ! NCase Sg Nom) vp ; -- puts AP into the s2 field
|
||||
let heaOllaVP : VP = lin VP (insertObj (\\_,_,_ => ap.s ! True ! NCase Sg Nom) vp) ; -- puts AP into the s2 field
|
||||
heaOllaComp : Comp = CompVP ASimul PPos heaOllaVP ; -- chooses InfDa, fixes word order
|
||||
heaOlla : VP = UseComp heaOllaComp -- looks silly, but I want to reuse the abstract syntax funs :-P
|
||||
in existClause noSubj (agrP3 Sg) heaOlla ;
|
||||
|
||||
@@ -970,9 +970,9 @@ oper
|
||||
mkV2Q v p = lin V2Q (mk2V2 v p) ;
|
||||
|
||||
mkAS a = a ;
|
||||
mkA2S a p = mkA2 a p ;
|
||||
mkA2S a p = lin A (mkA2 a p) ;
|
||||
mkAV a = a ;
|
||||
mkA2V a p = mkA2 a p ;
|
||||
mkA2V a p = lin A (mkA2 a p) ;
|
||||
|
||||
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
|
||||
|
||||
|
||||
4
src/faroese/AdjectiveFao.gf
Normal file
4
src/faroese/AdjectiveFao.gf
Normal file
@@ -0,0 +1,4 @@
|
||||
concrete AdjectiveFao of Adjective = CatFao ** {
|
||||
lin
|
||||
PositA a = a ;
|
||||
}
|
||||
4
src/faroese/AllFao.gf
Normal file
4
src/faroese/AllFao.gf
Normal file
@@ -0,0 +1,4 @@
|
||||
concrete AllFao of AllFaoAbs =
|
||||
LangFao
|
||||
**
|
||||
{} ;
|
||||
3
src/faroese/AllFaoAbs.gf
Normal file
3
src/faroese/AllFaoAbs.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
abstract AllFaoAbs =
|
||||
Lang
|
||||
** {}
|
||||
20
src/faroese/CatFao.gf
Normal file
20
src/faroese/CatFao.gf
Normal file
@@ -0,0 +1,20 @@
|
||||
concrete CatFao of Cat = CommonX ** open ResFao in {
|
||||
|
||||
lincat N = Noun ;
|
||||
lincat N2 = Noun ** {c2 : Compl} ;
|
||||
lincat N3 = Noun ** {c2,c3 : Compl} ;
|
||||
lincat A = Adj ;
|
||||
lincat A2 = Adj ** {c2 : Compl} ;
|
||||
lincat V = Verb ;
|
||||
lincat VV,VS,VQ,VA = Verb ;
|
||||
lincat V2 = Verb ** {c2 : Compl} ;
|
||||
lincat V3,V2A,V2S,V2Q,V2V = Verb ** {c2,c3 : Compl} ;
|
||||
lincat Prep = Compl ;
|
||||
lincat CN = CommonNoun ;
|
||||
lincat AP = AdjPhrase ;
|
||||
lincat S = {s : Str} ;
|
||||
|
||||
lincat LN,SN,GN,PN = {s : Str} ;
|
||||
|
||||
linref V = \v -> v.Nonfinite ++ v.particle ;
|
||||
}
|
||||
87
src/faroese/DocumentationFao.gf
Normal file
87
src/faroese/DocumentationFao.gf
Normal file
@@ -0,0 +1,87 @@
|
||||
concrete DocumentationFao of Documentation = CatFao ** open
|
||||
ResFao, Prelude, HTML in {
|
||||
|
||||
lincat
|
||||
Inflection = {t : Str; s1,s2,s3 : Str} ;
|
||||
Definition = {s : Str} ;
|
||||
Document = {s : Str} ;
|
||||
Tag = {s : Str} ;
|
||||
|
||||
lin
|
||||
InflectionN,InflectionN2,InflectionN3 = \x -> {
|
||||
t="n" ;
|
||||
s1="" ;
|
||||
s2=frameTable (
|
||||
tr (intagAttr "th" "colspan=\"2\"" "" ++ th "Indef" ++ th "Def") ++
|
||||
tr (intagAttr "th" "rowspan=\"4\"" "Sg" ++
|
||||
th "Nom" ++ td (x.s ! Indef ! Sg ! Nom) ++ td (x.s ! Def ! Sg ! Nom)) ++
|
||||
tr (th "Acc" ++ td (x.s ! Indef ! Sg ! Acc) ++ td (x.s ! Def ! Sg ! Acc)) ++
|
||||
tr (th "Dat" ++ td (x.s ! Indef ! Sg ! Dat) ++ td (x.s ! Def ! Sg ! Dat)) ++
|
||||
tr (th "Gen" ++ td (x.s ! Indef ! Sg ! Gen) ++ td (x.s ! Def ! Sg ! Gen)) ++
|
||||
tr (intagAttr "th" "rowspan=\"4\"" "Pl" ++
|
||||
th "Nom" ++ td (x.s ! Indef ! Pl ! Nom) ++ td (x.s ! Def ! Pl ! Nom)) ++
|
||||
tr (th "Acc" ++ td (x.s ! Indef ! Pl ! Acc) ++ td (x.s ! Def ! Pl ! Acc)) ++
|
||||
tr (th "Dat" ++ td (x.s ! Indef ! Pl ! Dat) ++ td (x.s ! Def ! Pl ! Dat)) ++
|
||||
tr (th "Gen" ++ td (x.s ! Indef ! Pl ! Gen) ++ td (x.s ! Def ! Pl ! Gen))) ;
|
||||
s3=[]
|
||||
} ;
|
||||
lin
|
||||
InflectionA,InflectionA2 = \x -> {
|
||||
t="a" ;
|
||||
s1="" ;
|
||||
s2=frameTable (
|
||||
tr (intagAttr "th" "colspan=\"2\"" "" ++ th "Masc" ++ th "Fem" ++ th "Neutr") ++
|
||||
tr (intagAttr "th" "rowspan=\"4\"" "Sg" ++
|
||||
th "Nom" ++ td (x.s ! Masc ! Sg ! Nom) ++ td (x.s ! Fem ! Sg ! Nom) ++ td (x.s ! Neutr ! Sg ! Nom)) ++
|
||||
tr (th "Acc" ++ td (x.s ! Masc ! Sg ! Acc) ++ td (x.s ! Fem ! Sg ! Acc) ++ td (x.s ! Neutr ! Sg ! Acc)) ++
|
||||
tr (th "Dat" ++ td (x.s ! Masc ! Sg ! Dat) ++ td (x.s ! Fem ! Sg ! Dat) ++ td (x.s ! Neutr ! Sg ! Dat)) ++
|
||||
tr (th "Gen" ++ td (x.s ! Masc ! Sg ! Gen) ++ td (x.s ! Fem ! Sg ! Gen) ++ td (x.s ! Neutr ! Sg ! Gen)) ++
|
||||
tr (intagAttr "th" "rowspan=\"4\"" "Pl" ++
|
||||
th "Nom" ++ td (x.s ! Masc ! Pl ! Nom) ++ td (x.s ! Fem ! Pl ! Nom) ++ td (x.s ! Neutr ! Pl ! Nom)) ++
|
||||
tr (th "Acc" ++ td (x.s ! Masc ! Pl ! Acc) ++ td (x.s ! Fem ! Pl ! Acc) ++ td (x.s ! Neutr ! Pl ! Acc)) ++
|
||||
tr (th "Dat" ++ td (x.s ! Masc ! Pl ! Dat) ++ td (x.s ! Fem ! Pl ! Dat) ++ td (x.s ! Neutr ! Pl ! Dat)) ++
|
||||
tr (th "Gen" ++ td (x.s ! Masc ! Pl ! Gen) ++ td (x.s ! Fem ! Pl ! Gen) ++ td (x.s ! Neutr ! Pl ! Gen))) ;
|
||||
s3=[]
|
||||
} ;
|
||||
lin
|
||||
InflectionV,InflectionV2,InflectionV2A,InflectionV2Q,InflectionV2S,InflectionV2V,InflectionV3,InflectionVA,InflectionVQ,InflectionVS,InflectionVV = \x -> {
|
||||
t="v" ;
|
||||
s1="" ;
|
||||
s2=heading2 "Converb" ++
|
||||
paragraph x.Converb ++
|
||||
heading2 "Imperative" ++
|
||||
frameTable (
|
||||
tr (th "Sg" ++ td (x.Imperative_Jussive ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Imperative_Jussive ! Pl))) ++
|
||||
heading2 "Indicative" ++
|
||||
frameTable (
|
||||
tr (intagAttr "th" "rowspan=\"4\"" "Pres" ++ th "Sg P1" ++ td (x.Indicative ! Pres ! PSg P1)) ++
|
||||
tr (th "Sg P2" ++ td (x.Indicative ! Pres ! PSg P2)) ++
|
||||
tr (th "Sg P3" ++ td (x.Indicative ! Pres ! PSg P3)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative ! Pres ! PPl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"4\"" "Past" ++ th "Sg P1" ++ td (x.Indicative ! Past ! PSg P1)) ++
|
||||
tr (th "Sg P2" ++ td (x.Indicative ! Past ! PSg P2)) ++
|
||||
tr (th "Sg P3" ++ td (x.Indicative ! Past ! PSg P3)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative ! Past ! PPl))) ++
|
||||
heading2 "Nonfinite" ++
|
||||
paragraph x.Nonfinite ++
|
||||
heading2 "Participle" ++
|
||||
frameTable (
|
||||
tr (th "Pres" ++ td (x.Participle ! Pres)) ++
|
||||
tr (th "Past" ++ td (x.Participle ! Past))) ;
|
||||
s3=[]
|
||||
} ;
|
||||
lin
|
||||
InflectionAdA,InflectionAdN,InflectionAdV,InflectionAdv = \x -> {t="adv"; s1=""; s2=x.s; s3=""} ;
|
||||
|
||||
InflectionPrep = \x -> {t="prep"; s1=""; s2=x.s; s3=""} ;
|
||||
|
||||
lin
|
||||
NoDefinition t = {s=t.s};
|
||||
MkDefinition t d = {s="<p><b>Definition:</b>"++t.s++d.s++"</p>"};
|
||||
MkDefinitionEx t d e = {s="<p><b>Definition:</b>"++t.s++d.s++"</p><p><b>Example:</b>"++e.s++"</p>"};
|
||||
|
||||
lin
|
||||
MkDocument d i e = {s = i.s1 ++ d.s ++ i.s2 ++ i.s3 ++ e.s} ;
|
||||
MkTag i = {s = i.t} ;
|
||||
}
|
||||
6
src/faroese/GrammarFao.gf
Normal file
6
src/faroese/GrammarFao.gf
Normal file
@@ -0,0 +1,6 @@
|
||||
concrete GrammarFao of Grammar =
|
||||
TenseX,
|
||||
PhraseFao,
|
||||
NounFao,
|
||||
AdjectiveFao ** {
|
||||
}
|
||||
10
src/faroese/LangFao.gf
Normal file
10
src/faroese/LangFao.gf
Normal file
@@ -0,0 +1,10 @@
|
||||
--# -path=.:../abstract
|
||||
concrete LangFao of Lang =
|
||||
GrammarFao,
|
||||
LexiconFao
|
||||
,DocumentationFao --# notpresent
|
||||
** {
|
||||
|
||||
flags startcat = Phr ;
|
||||
|
||||
}
|
||||
2
src/faroese/LexiconFao.gf
Normal file
2
src/faroese/LexiconFao.gf
Normal file
@@ -0,0 +1,2 @@
|
||||
concrete LexiconFao of Lexicon = CatFao ** open ParadigmsFao in {
|
||||
}
|
||||
12292
src/faroese/MorphoFao.gf
Normal file
12292
src/faroese/MorphoFao.gf
Normal file
File diff suppressed because it is too large
Load Diff
4
src/faroese/NounFao.gf
Normal file
4
src/faroese/NounFao.gf
Normal file
@@ -0,0 +1,4 @@
|
||||
concrete NounFao of Noun = CatFao ** {
|
||||
lin
|
||||
UseN n = n ;
|
||||
}
|
||||
572
src/faroese/ParadigmsFao.gf
Normal file
572
src/faroese/ParadigmsFao.gf
Normal file
@@ -0,0 +1,572 @@
|
||||
resource ParadigmsFao = MorphoFao ** open Predef, Prelude, CatFao, ResFao in {
|
||||
oper
|
||||
regN : Str -> N -- s;Indef;Sg;Nom
|
||||
= \form -> case form of {
|
||||
_ + "aður" => mkN032 form;
|
||||
_ + "eki" => mkN025 form;
|
||||
_ + "ski" => mkN014 form;
|
||||
_ + "ýki" => mkN002 form;
|
||||
_ + "rki" => mkN014 form;
|
||||
_ + "lki" => mkN014 form;
|
||||
_ + "øki" => mkN014 form;
|
||||
_ + "øri" => mkN002 form;
|
||||
_ + "vri" => mkN021 form;
|
||||
_ + "lri" => mkN031 form;
|
||||
_ + "yri" => mkN079 form;
|
||||
_ + "ldi" => mkN031 form;
|
||||
_ + "dni" => mkN002 form;
|
||||
_ + "gni" => mkN002 form;
|
||||
_ + "vni" => mkN021 form;
|
||||
_ + "avi" => mkN021 form;
|
||||
_ + "rvi" => mkN031 form;
|
||||
_ + "yvi" => mkN031 form;
|
||||
_ + "ugi" => mkN021 form;
|
||||
_ + "ggi" => mkN040 form;
|
||||
_ + "rgi" => mkN014 form;
|
||||
_ + "øpi" => mkN002 form;
|
||||
_ + "ýpi" => mkN031 form;
|
||||
_ + "ppi" => mkN031 form;
|
||||
_ + "mli" => mkN021 form;
|
||||
_ + "pli" => mkN031 form;
|
||||
_ + "æli" => mkN031 form;
|
||||
_ + "iði" => mkN031 form;
|
||||
_ + "æði" => mkN031 form;
|
||||
_ + "ýði" => mkN031 form;
|
||||
_ + "eði" => mkN104 form;
|
||||
_ + "ysi" => mkN002 form;
|
||||
_ + "lsi" => mkN031 form;
|
||||
_ + "esi" => mkN031 form;
|
||||
_ + "æmi" => mkN002 form;
|
||||
_ + "ami" => mkN021 form;
|
||||
_ + "ømi" => mkN031 form;
|
||||
_ + "rmi" => mkN079 form;
|
||||
_ + "sur" => mkN003 form;
|
||||
_ + "øur" => mkN009 form;
|
||||
_ + "ýur" => mkN009 form;
|
||||
_ + "par" => mkN008 form;
|
||||
_ + "gar" => mkN015 form;
|
||||
_ + "tar" => mkN019 form;
|
||||
_ + "mar" => mkN159 form;
|
||||
_ + "fer" => mkN008 form;
|
||||
_ + "ter" => mkN019 form;
|
||||
_ + "tør" => mkN015 form;
|
||||
_ + "dir" => mkN133 form;
|
||||
_ + "ørr" => mkN139 form;
|
||||
_ + "arn" => mkN004 form;
|
||||
_ + "ørn" => mkN018 form;
|
||||
_ + "agn" => mkN008 form;
|
||||
_ + "ogn" => mkN007 form;
|
||||
_ + "egn" => mkN008 form;
|
||||
_ + "pan" => mkN007 form;
|
||||
_ + "ran" => mkN008 form;
|
||||
_ + "ian" => mkN008 form;
|
||||
_ + "ton" => mkN008 form;
|
||||
_ + "lon" => mkN019 form;
|
||||
_ + "ein" => mkN019 form;
|
||||
_ + "min" => mkN045 form;
|
||||
_ + "vín" => mkN019 form;
|
||||
_ + "ekn" => mkN019 form;
|
||||
_ + "gun" => mkN024 form;
|
||||
_ + "ødn" => mkN018 form;
|
||||
_ + "jún" => mkN115 form;
|
||||
_ + "lak" => mkN008 form;
|
||||
_ + "bak" => mkN049 form;
|
||||
_ + "ark" => mkN004 form;
|
||||
_ + "ørk" => mkN018 form;
|
||||
_ + "tsk" => mkN007 form;
|
||||
_ + "pik" => mkN008 form;
|
||||
_ + "eik" => mkN015 form;
|
||||
_ + "økk" => mkN018 form;
|
||||
_ + "ekk" => mkN068 form;
|
||||
_ + "ikk" => mkN068 form;
|
||||
_ + "úkk" => mkN163 form;
|
||||
_ + "røk" => mkN121 form;
|
||||
_ + "øgg" => mkN007 form;
|
||||
_ + "agg" => mkN091 form;
|
||||
_ + "org" => mkN015 form;
|
||||
_ + "log" => mkN049 form;
|
||||
_ + "ald" => mkN004 form;
|
||||
_ + "old" => mkN007 form;
|
||||
_ + "rgd" => mkN007 form;
|
||||
_ + "und" => mkN019 form;
|
||||
_ + "and" => mkN096 form;
|
||||
_ + "ond" => mkN117 form;
|
||||
_ + "ødd" => mkN088 form;
|
||||
_ + "arð" => mkN004 form;
|
||||
_ + "urð" => mkN006 form;
|
||||
_ + "ørð" => mkN018 form;
|
||||
_ + "lið" => mkN027 form;
|
||||
_ + "nið" => mkN027 form;
|
||||
_ + "ráð" => mkN027 form;
|
||||
_ + "jal" => mkN004 form;
|
||||
_ + "gal" => mkN038 form;
|
||||
_ + "eil" => mkN006 form;
|
||||
_ + "fil" => mkN099 form;
|
||||
_ + "sól" => mkN007 form;
|
||||
_ + "egl" => mkN015 form;
|
||||
_ + "øll" => mkN078 form;
|
||||
_ + "ell" => mkN078 form;
|
||||
_ + "lat" => mkN004 form;
|
||||
_ + "ikt" => mkN007 form;
|
||||
_ + "átt" => mkN137 form;
|
||||
_ + "itt" => mkN087 form;
|
||||
_ + "ýtt" => mkN087 form;
|
||||
_ + "att" => mkN087 form;
|
||||
_ + "uft" => mkN007 form;
|
||||
_ + "bót" => mkN007 form;
|
||||
_ + "ist" => mkN008 form;
|
||||
_ + "øst" => mkN008 form;
|
||||
_ + "jøt" => mkN008 form;
|
||||
_ + "eit" => mkN015 form;
|
||||
_ + "rát" => mkN008 form;
|
||||
_ + "pet" => mkN015 form;
|
||||
_ + "álp" => mkN007 form;
|
||||
_ + "upp" => mkN015 form;
|
||||
_ + "alv" => mkN004 form;
|
||||
_ + "eyv" => mkN006 form;
|
||||
_ + "úgv" => mkN132 form;
|
||||
_ + "yga" => mkN044 form;
|
||||
_ + "oka" => mkN012 form;
|
||||
_ + "ina" => mkN012 form;
|
||||
_ + "mla" => mkN012 form;
|
||||
_ + "vja" => mkN012 form;
|
||||
_ + "tsj" => mkN015 form;
|
||||
_ + "tos" => mkN026 form;
|
||||
_ + "jús" => mkN026 form;
|
||||
_ + "lús" => mkN047 form;
|
||||
_ + "mús" => mkN047 form;
|
||||
_ + "bus" => mkN026 form;
|
||||
_ + "ins" => mkN026 form;
|
||||
_ + "fræ" => mkN027 form;
|
||||
_ + "omb" => mkN117 form;
|
||||
_ + "ði" => mkN025 form;
|
||||
_ + "fi" => mkN002 form;
|
||||
_ + "ai" => mkN015 form;
|
||||
_ + "ar" => mkN004 form;
|
||||
_ + "ðr" => mkN006 form;
|
||||
_ + "er" => mkN046 form;
|
||||
_ + "úr" => mkN007 form;
|
||||
_ + "or" => mkN008 form;
|
||||
_ + "yr" => mkN008 form;
|
||||
_ + "ør" => mkN008 form;
|
||||
_ + "ár" => mkN019 form;
|
||||
_ + "ór" => mkN019 form;
|
||||
_ + "ýr" => mkN019 form;
|
||||
_ + "ir" => mkN053 form;
|
||||
_ + "ír" => mkN019 form;
|
||||
_ + "ær" => mkN034 form;
|
||||
_ + "æv" => mkN034 form;
|
||||
_ + "rr" => mkN080 form;
|
||||
_ + "rn" => mkN008 form;
|
||||
_ + "vn" => mkN004 form;
|
||||
_ + "gn" => mkN018 form;
|
||||
_ + "tn" => mkN004 form;
|
||||
_ + "in" => mkN008 form;
|
||||
_ + "ín" => mkN008 form;
|
||||
_ + "yn" => mkN008 form;
|
||||
_ + "nn" => mkN051 form;
|
||||
_ + "ún" => mkN019 form;
|
||||
_ + "ýn" => mkN019 form;
|
||||
_ + "sn" => mkN019 form;
|
||||
_ + "án" => mkN019 form;
|
||||
_ + "pn" => mkN019 form;
|
||||
_ + "ak" => mkN004 form;
|
||||
_ + "ík" => mkN006 form;
|
||||
_ + "sk" => mkN008 form;
|
||||
_ + "ðk" => mkN008 form;
|
||||
_ + "kk" => mkN015 form;
|
||||
_ + "øk" => mkN018 form;
|
||||
_ + "ók" => mkN061 form;
|
||||
_ + "ag" => mkN004 form;
|
||||
_ + "gg" => mkN063 form;
|
||||
_ + "óg" => mkN015 form;
|
||||
_ + "rg" => mkN019 form;
|
||||
_ + "ig" => mkN019 form;
|
||||
_ + "og" => mkN027 form;
|
||||
_ + "ld" => mkN019 form;
|
||||
_ + "dd" => mkN076 form;
|
||||
_ + "vd" => mkN118 form;
|
||||
_ + "að" => mkN004 form;
|
||||
_ + "rð" => mkN019 form;
|
||||
_ + "oð" => mkN027 form;
|
||||
_ + "al" => mkN008 form;
|
||||
_ + "il" => mkN045 form;
|
||||
_ + "ll" => mkN085 form;
|
||||
_ + "ul" => mkN024 form;
|
||||
_ + "yl" => mkN046 form;
|
||||
_ + "øl" => mkN075 form;
|
||||
_ + "el" => mkN092 form;
|
||||
_ + "at" => mkN015 form;
|
||||
_ + "kt" => mkN015 form;
|
||||
_ + "tt" => mkN015 form;
|
||||
_ + "ft" => mkN112 form;
|
||||
_ + "ót" => mkN061 form;
|
||||
_ + "lt" => mkN008 form;
|
||||
_ + "nt" => mkN008 form;
|
||||
_ + "øt" => mkN015 form;
|
||||
_ + "mt" => mkN008 form;
|
||||
_ + "yt" => mkN015 form;
|
||||
_ + "vt" => mkN015 form;
|
||||
_ + "ít" => mkN015 form;
|
||||
_ + "rp" => mkN004 form;
|
||||
_ + "lp" => mkN015 form;
|
||||
_ + "pp" => mkN108 form;
|
||||
_ + "rv" => mkN004 form;
|
||||
_ + "lv" => mkN008 form;
|
||||
_ + "yv" => mkN008 form;
|
||||
_ + "av" => mkN008 form;
|
||||
_ + "øv" => mkN018 form;
|
||||
_ + "ív" => mkN019 form;
|
||||
_ + "gv" => mkN041 form;
|
||||
_ + "ev" => mkN046 form;
|
||||
_ + "lf" => mkN008 form;
|
||||
_ + "ím" => mkN008 form;
|
||||
_ + "am" => mkN008 form;
|
||||
_ + "mm" => mkN054 form;
|
||||
_ + "po" => mkN008 form;
|
||||
_ + "no" => mkN015 form;
|
||||
_ + "sj" => mkN026 form;
|
||||
_ + "ós" => mkN015 form;
|
||||
_ + "ks" => mkN015 form;
|
||||
_ + "as" => mkN103 form;
|
||||
_ + "ás" => mkN100 form;
|
||||
_ + "es" => mkN092 form;
|
||||
_ + "øs" => mkN139 form;
|
||||
_ + "i" => mkN001 form;
|
||||
_ + "r" => mkN010 form;
|
||||
_ + "n" => mkN015 form;
|
||||
_ + "k" => mkN019 form;
|
||||
_ + "g" => mkN006 form;
|
||||
_ + "d" => mkN015 form;
|
||||
_ + "ð" => mkN015 form;
|
||||
_ + "l" => mkN019 form;
|
||||
_ + "t" => mkN019 form;
|
||||
_ + "p" => mkN019 form;
|
||||
_ + "a" => mkN005 form;
|
||||
_ + "y" => mkN008 form;
|
||||
_ + "ó" => mkN007 form;
|
||||
_ + "ý" => mkN008 form;
|
||||
_ + "ø" => mkN008 form;
|
||||
_ + "f" => mkN077 form;
|
||||
_ + "m" => mkN019 form;
|
||||
_ + "o" => mkN019 form;
|
||||
_ + "j" => mkN105 form;
|
||||
_ + "s" => mkN028 form;
|
||||
_ + "á" => mkN015 form;
|
||||
_ + "í" => mkN019 form;
|
||||
_ + "u" => mkN019 form;
|
||||
_ + "e" => mkN027 form;
|
||||
_ + "æ" => mkN022 form;
|
||||
_ + "b" => mkN096 form;
|
||||
_ => error "Cannot find an inflection rule"
|
||||
} ;
|
||||
|
||||
reg2N : Str -> Str -> N -- s;Indef;Sg;Nom s;Indef;Pl;Dat
|
||||
= \form1, form2 -> case <form1, form2> of {
|
||||
<_ + "ski", _ + "kum"> => mkN001 form1;
|
||||
<_ + "ugi", _ + "gum"> => mkN001 form1;
|
||||
<_ + "ggi", _ + "gum"> => mkN001 form1;
|
||||
<_ + "sur", _ + "num"> => mkN058 form1;
|
||||
<_ + "ald", _ + "num"> => mkN008 form1;
|
||||
<_ + "eyv", _ + "num"> => mkN008 form1;
|
||||
<_ + "ist", _ + "tum"> => mkN015 form1;
|
||||
<_ + "ður", _ + "ðum"> => mkN009 form1;
|
||||
<_ + "ður", _ + "rum"> => mkN127 form1;
|
||||
<_ + "rki", _ + "num"> => mkN021 form1;
|
||||
<_ + "agg", _ + "num"> => mkN063 form1;
|
||||
<_ + "ekk", _ + "num"> => mkN163 form1;
|
||||
<_ + "eki", _ + "m"> => mkN001 form1;
|
||||
<_ + "agn", _ + "m"> => mkN004 form1;
|
||||
<_ + "pan", _ + "m"> => mkN015 form1;
|
||||
<_ + "álp", _ + "m"> => mkN015 form1;
|
||||
<_ + "ogn", _ + "m"> => mkN015 form1;
|
||||
<_ + "sól", _ + "m"> => mkN015 form1;
|
||||
<_ + "átt", _ + "i"> => mkN007 form1;
|
||||
<_ + "ist", _ + "i"> => mkN007 form1;
|
||||
<_ + "rki", _ + "i"> => mkN025 form1;
|
||||
<_ + "øll", _ + "m"> => mkN018 form1;
|
||||
<_ + "lið", _ + "m"> => mkN019 form1;
|
||||
<_ + "iði", _ + "i"> => mkN025 form1;
|
||||
<_ + "ði", _ + "num"> => mkN021 form1;
|
||||
<_ + "ar", _ + "num"> => mkN008 form1;
|
||||
<_ + "al", _ + "lum"> => mkN004 form1;
|
||||
<_ + "lt", _ + "tum"> => mkN019 form1;
|
||||
<_ + "sk", _ + "kum"> => mkN015 form1;
|
||||
<_ + "ót", _ + "num"> => mkN008 form1;
|
||||
<_ + "il", _ + "jum"> => mkN092 form1;
|
||||
<_ + "ir", _ + "rum"> => mkN019 form1;
|
||||
<_ + "gv", _ + "vum"> => mkN148 form1;
|
||||
<_ + "gv", _ + "um"> => mkN102 form1;
|
||||
<_ + "ði", _ + "m"> => mkN001 form1;
|
||||
<_ + "rð", _ + "i"> => mkN007 form1;
|
||||
<_ + "tt", _ + "i"> => mkN007 form1;
|
||||
<_ + "ft", _ + "i"> => mkN007 form1;
|
||||
<_ + "ld", _ + "i"> => mkN075 form1;
|
||||
<_ + "a", _ + "aum"> => mkN019 form1;
|
||||
<_ + "y", _ + "yum"> => mkN006 form1;
|
||||
<_ + "ð", _ + "num"> => mkN049 form1;
|
||||
<_ + "t", _ + "num"> => mkN008 form1;
|
||||
<_ + "r", _ + "rum"> => mkN042 form1;
|
||||
<_ + "r", _ + "jum"> => mkN150 form1;
|
||||
<_ + "æ", _ + "æum"> => mkN027 form1;
|
||||
<_ + "s", _ + "num"> => mkN026 form1;
|
||||
<_ + "i", _ + "i"> => mkN025 form1;
|
||||
<_ + "a", _ + "i"> => mkN012 form1;
|
||||
<_ + "g", _ + "i"> => mkN007 form1;
|
||||
<_ + "d", _ + "i"> => mkN007 form1;
|
||||
<_ + "ð", _ + "i"> => mkN007 form1;
|
||||
<_ + "k", _ + "i"> => mkN007 form1;
|
||||
_ => regN form1
|
||||
} ;
|
||||
|
||||
regA : Str -> A -- s;Masc;Sg;Nom
|
||||
= \form -> case form of {
|
||||
_ + "dur" => mkA001 form;
|
||||
_ + "tur" => mkA003 form;
|
||||
_ + "ður" => mkA010 form;
|
||||
_ + "pur" => mkA004 form;
|
||||
_ + "sur" => mkA008 form;
|
||||
_ + "mur" => mkA016 form;
|
||||
_ + "áur" => mkA017 form;
|
||||
_ + "íur" => mkA017 form;
|
||||
_ + "óur" => mkA017 form;
|
||||
_ + "jur" => mkA033 form;
|
||||
_ + "il" => mkA035 form;
|
||||
_ + "in" => mkA009 form;
|
||||
_ + "ur" => mkA007 form;
|
||||
_ => error "Cannot find an inflection rule"
|
||||
} ;
|
||||
|
||||
reg2A : Str -> Str -> A -- s;Masc;Sg;Nom s;Masc;Sg;Dat
|
||||
= \form1, form2 -> case <form1, form2> of {
|
||||
_ => regA form1
|
||||
} ;
|
||||
|
||||
regV : Str -> V -- Nonfinite
|
||||
= \form -> case form of {
|
||||
_ + "erja" => mkV011 form;
|
||||
_ + "ala" => mkV046 form;
|
||||
_ + "øla" => mkV009 form;
|
||||
_ + "gla" => mkV009 form;
|
||||
_ + "æla" => mkV009 form;
|
||||
_ + "íla" => mkV020 form;
|
||||
_ + "ula" => mkV088 form;
|
||||
_ + "lda" => mkV056 form;
|
||||
_ + "úka" => mkV044 form;
|
||||
_ + "aka" => mkV054 form;
|
||||
_ + "eka" => mkV028 form;
|
||||
_ + "mba" => mkV009 form;
|
||||
_ + "íða" => mkV014 form;
|
||||
_ + "rða" => mkV108 form;
|
||||
_ + "nna" => mkV039 form;
|
||||
_ + "vna" => mkV009 form;
|
||||
_ + "ina" => mkV009 form;
|
||||
_ + "ína" => mkV014 form;
|
||||
_ + "yna" => mkV009 form;
|
||||
_ + "æna" => mkV020 form;
|
||||
_ + "ýna" => mkV009 form;
|
||||
_ + "øna" => mkV020 form;
|
||||
_ + "una" => mkV021 form;
|
||||
_ + "iga" => mkV086 form;
|
||||
_ + "ega" => mkV075 form;
|
||||
_ + "íga" => mkV014 form;
|
||||
_ + "uga" => mkV029 form;
|
||||
_ + "nga" => mkV047 form;
|
||||
_ + "ðja" => mkV012 form;
|
||||
_ + "kja" => mkV077 form;
|
||||
_ + "lja" => mkV042 form;
|
||||
_ + "mja" => mkV042 form;
|
||||
_ + "lsa" => mkV020 form;
|
||||
_ + "æsa" => mkV020 form;
|
||||
_ + "ysa" => mkV020 form;
|
||||
_ + "ýsa" => mkV020 form;
|
||||
_ + "ósa" => mkV050 form;
|
||||
_ + "esa" => mkV071 form;
|
||||
_ + "sta" => mkV037 form;
|
||||
_ + "tta" => mkV037 form;
|
||||
_ + "áta" => mkV053 form;
|
||||
_ + "íta" => mkV014 form;
|
||||
_ + "óta" => mkV019 form;
|
||||
_ + "yta" => mkV020 form;
|
||||
_ + "ýta" => mkV020 form;
|
||||
_ + "eta" => mkV023 form;
|
||||
_ + "øta" => mkV020 form;
|
||||
_ + "fta" => mkV037 form;
|
||||
_ + "øra" => mkV009 form;
|
||||
_ + "ýra" => mkV009 form;
|
||||
_ + "yra" => mkV009 form;
|
||||
_ + "æra" => mkV009 form;
|
||||
_ + "íra" => mkV009 form;
|
||||
_ + "gva" => mkV040 form;
|
||||
_ + "ava" => mkV058 form;
|
||||
_ + "ova" => mkV099 form;
|
||||
_ + "eva" => mkV028 form;
|
||||
_ + "íva" => mkV014 form;
|
||||
_ + "yva" => mkV009 form;
|
||||
_ + "øva" => mkV009 form;
|
||||
_ + "rpa" => mkV018 form;
|
||||
_ + "ópa" => mkV021 form;
|
||||
_ + "epa" => mkV028 form;
|
||||
_ + "úpa" => mkV044 form;
|
||||
_ + "ema" => mkV018 form;
|
||||
_ + "oma" => mkV062 form;
|
||||
_ + "ða" => mkV006 form;
|
||||
_ + "pa" => mkV020 form;
|
||||
_ + "ma" => mkV009 form;
|
||||
_ + "áa" => mkV034 form;
|
||||
_ + "fa" => mkV106 form;
|
||||
_ + "øa" => mkV043 form;
|
||||
_ + "a" => mkV001 form;
|
||||
_ + "t" => mkV005 form;
|
||||
_ => error "Cannot find an inflection rule"
|
||||
} ;
|
||||
|
||||
reg2V : Str -> Str -> V -- Nonfinite Indicative;Pres;('PSg', P2)
|
||||
= \form1, form2 -> case <form1, form2> of {
|
||||
<_ + "gva", _ + "ørt"> => mkV055 form1;
|
||||
<_ + "era", _ + "ert"> => mkV008 form1;
|
||||
<_ + "ala", _ + "ar"> => mkV001 form1;
|
||||
<_ + "ala", _ + "ir"> => mkV009 form1;
|
||||
<_ + "úka", _ + "ar"> => mkV001 form1;
|
||||
<_ + "aka", _ + "ar"> => mkV001 form1;
|
||||
<_ + "nna", _ + "ar"> => mkV001 form1;
|
||||
<_ + "íða", _ + "ar"> => mkV001 form1;
|
||||
<_ + "íða", _ + "ir"> => mkV006 form1;
|
||||
<_ + "rja", _ + "ar"> => mkV001 form1;
|
||||
<_ + "sta", _ + "ar"> => mkV001 form1;
|
||||
<_ + "sta", _ + "ur"> => mkV018 form1;
|
||||
<_ + "gva", _ + "ar"> => mkV001 form1;
|
||||
<_ + "rða", _ + "ar"> => mkV001 form1;
|
||||
<_ + "tta", _ + "ar"> => mkV001 form1;
|
||||
<_ + "tta", _ + "ur"> => mkV024 form1;
|
||||
<_ + "ava", _ + "ar"> => mkV001 form1;
|
||||
<_ + "iga", _ + "ar"> => mkV001 form1;
|
||||
<_ + "iga", _ + "ir"> => mkV007 form1;
|
||||
<_ + "ova", _ + "ar"> => mkV001 form1;
|
||||
<_ + "lda", _ + "ar"> => mkV001 form1;
|
||||
<_ + "lda", _ + "ir"> => mkV010 form1;
|
||||
<_ + "áta", _ + "ar"> => mkV001 form1;
|
||||
<_ + "vna", _ + "ar"> => mkV001 form1;
|
||||
<_ + "eka", _ + "ar"> => mkV001 form1;
|
||||
<_ + "mba", _ + "ar"> => mkV001 form1;
|
||||
<_ + "eva", _ + "ar"> => mkV001 form1;
|
||||
<_ + "ita", _ + "ir"> => mkV020 form1;
|
||||
<_ + "ína", _ + "ir"> => mkV009 form1;
|
||||
<_ + "íva", _ + "ir"> => mkV009 form1;
|
||||
<_ + "yta", _ + "ur"> => mkV041 form1;
|
||||
<_ + "ysa", _ + "ur"> => mkV041 form1;
|
||||
<_ + "eta", _ + "ir"> => mkV020 form1;
|
||||
<_ + "kja", _ + "ur"> => mkV100 form1;
|
||||
<_ + "nna", _ + "t"> => mkV076 form1;
|
||||
<_ + "rja", _ + "t"> => mkV093 form1;
|
||||
<_ + "gva", _ + "t"> => mkV022 form1;
|
||||
<_ + "ega", _ + "r"> => mkV001 form1;
|
||||
<_ + "ita", _ + "t"> => mkV109 form1;
|
||||
<_ + "lja", _ + "t"> => mkV112 form1;
|
||||
<_ + "ða", _ + "ar"> => mkV001 form1;
|
||||
<_ + "ða", _ + "ur"> => mkV066 form1;
|
||||
<_ + "pa", _ + "ar"> => mkV001 form1;
|
||||
<_ + "ma", _ + "ar"> => mkV001 form1;
|
||||
<_ + "fa", _ + "ar"> => mkV001 form1;
|
||||
<_ + "áa", _ + "r"> => mkV001 form1;
|
||||
<_ + "a", _ + "ært"> => mkV084 form1;
|
||||
<_ + "a", _ + "t"> => mkV025 form1;
|
||||
_ => regV form1
|
||||
} ;
|
||||
|
||||
mkN = overload {
|
||||
mkN : Str -> N = regN; -- s;Indef;Sg;Nom
|
||||
mkN : Str -> Str -> N = reg2N -- s;Indef;Sg;Nom s;Indef;Pl;Dat
|
||||
} ;
|
||||
|
||||
mkN2 = overload {
|
||||
mkN2 : N -> N2 = \n -> lin N2 (n ** {c2 = noPrep}) ;
|
||||
mkN2 : N -> Prep -> N2 = \n,p -> lin N2 (n ** {c2 = p}) ;
|
||||
} ;
|
||||
|
||||
mkN3 = overload {
|
||||
mkN3 : N -> N3 = \n -> lin N3 (n ** {c2 = noPrep; c3 = noPrep}) ;
|
||||
mkN3 : N -> Prep -> Prep -> N3 = \n,p1,p2 -> lin N3 (n ** {c2 = p1; c3 = p2}) ;
|
||||
} ;
|
||||
|
||||
mkA = overload {
|
||||
mkA : Str -> A = regA; -- s;Masc;Sg;Nom
|
||||
mkA : Str -> Str -> A = reg2A -- s;Masc;Sg;Nom s;Masc;Sg;Dat
|
||||
} ;
|
||||
|
||||
mkA2 = overload {
|
||||
mkA2 : A -> A2 = \a -> lin A2 (a ** {c2 = noPrep}) ;
|
||||
mkA2 : A -> Prep -> A2 = \a,p -> lin A2 (a ** {c2 = p}) ;
|
||||
} ;
|
||||
|
||||
mkV = overload {
|
||||
mkV : Str -> V = regV; -- Nonfinite
|
||||
mkV : Str -> Str -> V = reg2V ; -- Nonfinite Indicative;Pres;('PSg', P2)
|
||||
mkV : V -> Str -> V -- particle verb
|
||||
= \v,p -> v ** {particle = p}
|
||||
} ;
|
||||
|
||||
mkVV : V -> VV = \v -> lin VV v ;
|
||||
mkVS : V -> VS = \v -> lin VS v ;
|
||||
mkVQ : V -> VQ = \v -> lin VQ v ;
|
||||
mkVA : V -> VA = \v -> lin VA v ;
|
||||
|
||||
mkV2 = overload {
|
||||
mkV2 : V -> V2 = \v -> lin V2 (v ** {c2 = noPrep}) ;
|
||||
mkV2 : V -> Prep -> V2 = \v,p -> lin V2 (v ** {c2 = p}) ;
|
||||
} ;
|
||||
|
||||
mkV3 = overload {
|
||||
mkV3 : V -> V3 = \v -> lin V3 (v ** {c2 = noPrep; c3 = noPrep}) ;
|
||||
mkV3 : V -> Prep -> Prep -> V3 = \v,p1,p2 -> lin V3 (v ** {c2 = p1; c3 = p2}) ;
|
||||
} ;
|
||||
|
||||
mkV2A = overload {
|
||||
mkV2A : V -> V2A = \v -> lin V2A (v ** {c2 = noPrep; c3 = noPrep}) ;
|
||||
mkV2A : V -> Prep -> Prep -> V2A = \v,p1,p2 -> lin V2A (v ** {c2 = p1; c3 = p2}) ;
|
||||
} ;
|
||||
|
||||
mkV2S = overload {
|
||||
mkV2S : V -> V2S = \v -> lin V2S (v ** {c2 = noPrep; c3 = noPrep}) ;
|
||||
mkV2S : V -> Prep -> Prep -> V2S = \v,p1,p2 -> lin V2S (v ** {c2 = p1; c3 = p2}) ;
|
||||
} ;
|
||||
|
||||
mkV2Q = overload {
|
||||
mkV2Q : V -> V2Q = \v -> lin V2Q (v ** {c2 = noPrep; c3 = noPrep}) ;
|
||||
mkV2Q : V -> Prep -> Prep -> V2Q = \v,p1,p2 -> lin V2Q (v ** {c2 = p1; c3 = p2}) ;
|
||||
} ;
|
||||
|
||||
mkV2V = overload {
|
||||
mkV2V : V -> V2V = \v -> lin V2V (v ** {c2 = noPrep; c3 = noPrep}) ;
|
||||
mkV2V : V -> Prep -> Prep -> V2V = \v,p1,p2 -> lin V2V (v ** {c2 = p1; c3 = p2}) ;
|
||||
} ;
|
||||
|
||||
mkAdv : Str -> Adv = \s -> lin Adv {s=s} ;
|
||||
mkAdV : Str -> AdV = \s -> lin AdV {s=s} ;
|
||||
mkAdA : Str -> AdA = \s -> lin AdA {s=s} ;
|
||||
mkAdN : Str -> AdN = \s -> lin AdN {s=s} ;
|
||||
mkCAdv : Str -> CAdv = \s -> lin CAdv {s=s; p=""} ;
|
||||
mkInterj : Str -> Interj = \s -> lin Interj {s=s} ;
|
||||
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
|
||||
|
||||
mkPrep : Str -> Prep = \s -> lin Prep {s=s; c=Acc} ;
|
||||
|
||||
mkIAdv : Str -> IAdv = \s -> lin IAdv {s=s} ;
|
||||
mkIP : Str -> IP = \s -> lin IP {s=s} ;
|
||||
mkIQuant : Str -> IQuant = \s -> lin IQuant {s=s} ;
|
||||
mkIDet : Str -> IDet = \s -> lin IDet {s=s} ;
|
||||
mkSubj : Str -> Subj = \s -> lin Subj {s=s} ;
|
||||
mkQuant : Str -> Quant = \s -> lin Quant {s=s} ;
|
||||
mkPredet : Str -> Predet = \s -> lin Predet {s=s} ;
|
||||
mkDet : Str -> Det = \s -> lin Det {s=s} ;
|
||||
mkCard : Str -> Card = \s -> lin Card {s=s} ;
|
||||
mkConj : Str -> Conj = \s -> lin Conj {s=s} ;
|
||||
mkPConj : Str -> PConj = \s -> lin PConj {s=s} ;
|
||||
mkVoc : Str -> Voc = \s -> lin Voc {s=s} ;
|
||||
|
||||
mkLN : Str -> LN = \s -> lin LN {s=s} ;
|
||||
mkGN : Str -> GN = \s -> lin GN {s=s} ;
|
||||
mkSN : Str -> SN = \s -> lin SN {s=s} ;
|
||||
mkPN : Str -> PN = \s -> lin PN {s=s} ;
|
||||
|
||||
}
|
||||
11
src/faroese/PhraseFao.gf
Normal file
11
src/faroese/PhraseFao.gf
Normal file
@@ -0,0 +1,11 @@
|
||||
concrete PhraseFao of Phrase = CatFao ** {
|
||||
lin
|
||||
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
|
||||
|
||||
UttS s = s ;
|
||||
UttInterj i = i ;
|
||||
|
||||
NoPConj = {s = []} ;
|
||||
|
||||
NoVoc = {s = []} ;
|
||||
}
|
||||
132
src/faroese/ResFao.gf
Normal file
132
src/faroese/ResFao.gf
Normal file
@@ -0,0 +1,132 @@
|
||||
resource ResFao = {
|
||||
|
||||
param Species = Indef | Def ;
|
||||
param Number = Sg | Pl ;
|
||||
param Case = Nom | Acc | Dat | Gen ;
|
||||
param Gender = Neutr | Fem | Masc ;
|
||||
oper Noun = {s: Species => Number => Case => Str} ; -- 2135
|
||||
oper mkNoun : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Noun =
|
||||
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16 ->
|
||||
{ s = table {
|
||||
Indef => table {
|
||||
Sg => table {
|
||||
Nom => f1 ;
|
||||
Acc => f2 ;
|
||||
Dat => f3 ;
|
||||
Gen => f4
|
||||
} ;
|
||||
Pl => table {
|
||||
Nom => f5 ;
|
||||
Acc => f6 ;
|
||||
Dat => f7 ;
|
||||
Gen => f8
|
||||
}
|
||||
} ;
|
||||
Def => table {
|
||||
Sg => table {
|
||||
Nom => f9 ;
|
||||
Acc => f10 ;
|
||||
Dat => f11 ;
|
||||
Gen => f12
|
||||
} ;
|
||||
Pl => table {
|
||||
Nom => f13 ;
|
||||
Acc => f14 ;
|
||||
Dat => f15 ;
|
||||
Gen => f16
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
|
||||
|
||||
oper Adj = {s: Gender => Number => Case => Str} ; -- 346
|
||||
oper mkAdj : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Adj =
|
||||
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24 ->
|
||||
{ s = table {
|
||||
Masc => table {
|
||||
Sg => table {
|
||||
Nom => f1 ;
|
||||
Acc => f2 ;
|
||||
Dat => f3 ;
|
||||
Gen => f4
|
||||
} ;
|
||||
Pl => table {
|
||||
Nom => f5 ;
|
||||
Acc => f6 ;
|
||||
Dat => f7 ;
|
||||
Gen => f8
|
||||
}
|
||||
} ;
|
||||
Fem => table {
|
||||
Sg => table {
|
||||
Nom => f9 ;
|
||||
Acc => f10 ;
|
||||
Dat => f11 ;
|
||||
Gen => f12
|
||||
} ;
|
||||
Pl => table {
|
||||
Nom => f13 ;
|
||||
Acc => f14 ;
|
||||
Dat => f15 ;
|
||||
Gen => f16
|
||||
}
|
||||
} ;
|
||||
Neutr => table {
|
||||
Sg => table {
|
||||
Nom => f17 ;
|
||||
Acc => f18 ;
|
||||
Dat => f19 ;
|
||||
Gen => f20
|
||||
} ;
|
||||
Pl => table {
|
||||
Nom => f21 ;
|
||||
Acc => f22 ;
|
||||
Dat => f23 ;
|
||||
Gen => f24
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
|
||||
param Tense = Past | Pres ;
|
||||
param PersNum = PSg Person | PPl ;
|
||||
param Person = P1 | P3 | P2 ;
|
||||
oper Verb = {Converb: Str; Imperative_Jussive: Number => Str; Indicative: Tense => PersNum => Str; Nonfinite: Str; Participle: Tense => Str ; particle : Str} ; -- 596
|
||||
oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Verb =
|
||||
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14 ->
|
||||
{ Converb = f1 ;
|
||||
Imperative_Jussive = table {
|
||||
Sg => f2 ;
|
||||
Pl => f3
|
||||
} ;
|
||||
Indicative = table {
|
||||
Pres => table {
|
||||
PSg P1 => f4 ;
|
||||
PSg P2 => f5 ;
|
||||
PSg P3 => f6 ;
|
||||
PPl => f7
|
||||
} ;
|
||||
Past => table {
|
||||
PSg P1 => f8 ;
|
||||
PSg P2 => f9 ;
|
||||
PSg P3 => f10 ;
|
||||
PPl => f11
|
||||
}
|
||||
} ;
|
||||
Nonfinite = f12 ;
|
||||
Participle = table {
|
||||
Pres => f13 ;
|
||||
Past => f14
|
||||
} ;
|
||||
particle = []
|
||||
} ;
|
||||
|
||||
|
||||
oper Compl = {s : Str; c : Case} ;
|
||||
oper noPrep : Compl = {s=""; c=Acc} ;
|
||||
|
||||
oper CommonNoun = Noun ;
|
||||
oper AdjPhrase = Adj ;
|
||||
|
||||
}
|
||||
@@ -161,14 +161,14 @@ oper
|
||||
verbExample : CatFin.Cl -> Str = \cl -> (S.mkUtt cl).s ;
|
||||
{-
|
||||
-} --# notpresent
|
||||
inflVerb : CatFin.V -> Str = \verb0 ->
|
||||
inflVerb : SVerb1 -> Str = \verb0 ->
|
||||
let
|
||||
verb = sverb2verbSep verb0 ;
|
||||
vfin : ResFin.VForm -> Str = \f ->
|
||||
verb.s ! f ;
|
||||
|
||||
nounNounHeading : Parameter -> Parameter -> Str = \n1,n2 ->
|
||||
(S.mkUtt (G.PossNP (S.mkCN n1) (S.mkNP (snoun2nounSep n2)))).s ;
|
||||
(S.mkUtt (G.PossNP (S.mkCN n1) (S.mkNP (lin N (snoun2nounSep n2))))).s ;
|
||||
in
|
||||
heading3 (nounNounHeading present_Parameter indicative_Parameter) ++
|
||||
frameTable (
|
||||
|
||||
@@ -258,7 +258,7 @@ lin PresPartAP vp = {
|
||||
hasPrefix = False
|
||||
} ;
|
||||
lin PastPartAP vps = {
|
||||
s = \\_,nf => preCompVP <vps : VP> (PastPartAct (AN nf)) ;
|
||||
s = \\_,nf => preCompVP (lin VP vps) (PastPartAct (AN nf)) ;
|
||||
p = vps.c2.s.p1 ;
|
||||
hasPrefix = False
|
||||
} ;
|
||||
|
||||
@@ -406,10 +406,10 @@ mkVS = overload {
|
||||
|
||||
mkQuant = overload {
|
||||
mkQuant : N -> Quant =
|
||||
\noun -> heavyQuant {s1 = \\n,c => (snoun2nounBind noun).s ! NCase n c ; s2 = \\_ => [] ; isNum,isPoss,isNeg,isDef = False} ;
|
||||
\noun -> lin Quant (heavyQuant {s1 = \\n,c => (snoun2nounBind noun).s ! NCase n c ; s2 = \\_ => [] ; isNum,isPoss,isNeg,isDef = False}) ;
|
||||
mkQuant : N -> N -> Quant =
|
||||
\sg,pl -> heavyQuant {s1 = table {Sg => \\c => (snoun2nounBind pl).s ! NCase Sg c ; Pl => \\c => (snoun2nounBind pl).s ! NCase Pl c} ;
|
||||
s2 = \\_ => [] ; isNum,isPoss,isNeg,isDef = False} ;
|
||||
\sg,pl -> lin Quant (heavyQuant {s1 = table {Sg => \\c => (snoun2nounBind pl).s ! NCase Sg c ; Pl => \\c => (snoun2nounBind pl).s ! NCase Pl c} ;
|
||||
s2 = \\_ => [] ; isNum,isPoss,isNeg,isDef = False}) ;
|
||||
} ;
|
||||
|
||||
mkInterj : Str -> Interj
|
||||
|
||||
@@ -89,13 +89,13 @@ concrete StructuralFin of Structural = CatFin **
|
||||
} ;
|
||||
somePl_Det = heavyDet {
|
||||
s1 = jokuPron ! Pl ;
|
||||
s2 = \\_ => [] ; isNum,isPoss = False ; isNeg = False ; isDef = True ;
|
||||
s2 = \\_ => [] ; isNum,isPoss = False ; isDef = True ;
|
||||
n = Pl ; isNeg = False
|
||||
} ;
|
||||
something_NP = {
|
||||
s = \\c => jokinPron ! Sg ! npform2case Sg c ;
|
||||
a = agrP3 Sg ;
|
||||
isPron = False ; isNeg = False ; isNeg = False
|
||||
isPron = False ; isNeg = False
|
||||
} ;
|
||||
somewhere_Adv = ssp "ADV" "jossain" ;
|
||||
that_Quant = heavyQuant {
|
||||
|
||||
@@ -98,10 +98,9 @@ lin ApposNP np1 np2 = np1 ** { -- guessed by KA
|
||||
lin CompoundN a b = lin N {
|
||||
s = \\n => b.s ! n ++
|
||||
case b.relType of {
|
||||
NRelPrep p => prepCase (CPrep p) ; -- tasa de suicidio
|
||||
NRelNoPrep => [] -- connessione internet = internet connection
|
||||
} ++
|
||||
a.s ! Sg ;
|
||||
NRelPrep p => prepCase (CPrep p) ++ a.s ! Sg ; -- tasa de suicidio
|
||||
NRelNoPrep => a.s ! n -- connessione internet = internet connection
|
||||
} ;
|
||||
g = b.g ;
|
||||
relType = b.relType
|
||||
} ;
|
||||
|
||||
@@ -192,12 +192,6 @@ oper hyphen = BIND ++ "-" ++ BIND ;
|
||||
_ => BIND
|
||||
} ;
|
||||
|
||||
inc : DTail -> DTail = \t -> case t of {
|
||||
T1 => T2 ;
|
||||
T2 => T3 ;
|
||||
T3 => T1
|
||||
} ;
|
||||
|
||||
oper
|
||||
mk2Dig : Str -> Str -> TDigit = \c,o -> mk3Dig c o Pl ;
|
||||
mkDig : Str -> TDigit = \c -> mk2Dig c (c + "ème") ;
|
||||
|
||||
@@ -200,7 +200,7 @@ oper
|
||||
mkA : (banal,banale,banaux,banalement : Str) -> A ; -- almost worst-case adjective
|
||||
|
||||
-- This is the worst-case paradigm for the positive forms, used for "vieux/vieil".
|
||||
mkA : (vieux,vieil,vieille,vieuxs,vieuxment : Str) -> A ; -- worst-case adjetive
|
||||
mkA : (vieux,vieil,vieille,vieux,vieillement : Str) -> A ; -- worst-case adjetive
|
||||
|
||||
-- If comparison forms are irregular (i.e. not formed by "plus", e.g.
|
||||
-- "bon-meilleur"), the positive and comparative can be given as separate
|
||||
@@ -468,6 +468,17 @@ oper
|
||||
|
||||
prefixA = prefA ;
|
||||
|
||||
invarA : (sud : Str) -> A = \sud -> compADeg {
|
||||
s = table {
|
||||
AF _ _ => sud;
|
||||
AAttrMasc => sud;
|
||||
AA => case sud of {
|
||||
_ + "ée" => init sud + "ment" ;
|
||||
_ => sud + "ment"
|
||||
}
|
||||
} ;
|
||||
} ;
|
||||
|
||||
mkAdv x = ss x ** {lock_Adv = <>} ;
|
||||
mkAdV x = ss x ** {lock_AdV = <>} ;
|
||||
mkAdA x = ss x ** {lock_AdA = <>} ;
|
||||
|
||||
67
src/gaelic/AdjectiveGla.gf
Normal file
67
src/gaelic/AdjectiveGla.gf
Normal file
@@ -0,0 +1,67 @@
|
||||
concrete AdjectiveGla of Adjective = CatGla ** open ResGla, Prelude in {
|
||||
|
||||
flags optimize=all_subs ;
|
||||
|
||||
lin
|
||||
|
||||
-- : AP -> Adv -> AP ; -- warm by nature
|
||||
AdvAP ap adv = ap ** {
|
||||
s = \\af => ap.s ! af ++ adv.s ;
|
||||
voc = \\g => ap.voc ! g ++ adv.s
|
||||
} ;
|
||||
|
||||
-- : A -> AP ;
|
||||
PositA a = a ;
|
||||
|
||||
-- : A -> NP -> AP ;
|
||||
--ComparA a np = a ** {
|
||||
-- compar = np.s
|
||||
-- } ;
|
||||
|
||||
-- : A2 -> NP -> AP ; -- married to her
|
||||
-- ComplA2 a2 np = a2 ** { } ;
|
||||
|
||||
-- : A2 -> AP ; -- married to itself
|
||||
-- ReflA2 a2 = a2 ** { } ;
|
||||
|
||||
-- : A2 -> AP ; -- married
|
||||
-- UseA2 = PositA ;
|
||||
|
||||
-- : A -> AP ; -- warmer
|
||||
-- UseComparA a = a ** {
|
||||
-- s = \\af => "???" ++ a.s ! af ;
|
||||
-- compar = []
|
||||
-- } ;
|
||||
|
||||
|
||||
-- : CAdv -> AP -> NP -> AP ; -- as cool as John
|
||||
-- CAdvAP adv ap np = ap ** { } ;
|
||||
|
||||
-- The superlative use is covered in $Ord$.
|
||||
|
||||
-- : Ord -> AP ; -- warmest
|
||||
-- AdjOrd ord = ord ** {
|
||||
-- compar = []
|
||||
-- } ;
|
||||
-- AdjOrd : Ord -> AP =
|
||||
-- AdjOrd ord = ord ;
|
||||
|
||||
-- Sentence and question complements defined for all adjectival
|
||||
-- phrases, although the semantics is only clear for some adjectives.
|
||||
|
||||
-- : AP -> SC -> AP ; -- good that she is here
|
||||
-- SentAP ap sc = ap ** {
|
||||
-- s = \\af => ap.s ! af ++ sc.s
|
||||
-- } ;
|
||||
|
||||
-- An adjectival phrase can be modified by an *adadjective*, such as "very".
|
||||
|
||||
-- : AdA -> AP -> AP ;
|
||||
-- AdAP ada ap = ap ** { } ;
|
||||
|
||||
|
||||
-- It can also be postmodified by an adverb, typically a prepositional phrase.
|
||||
|
||||
|
||||
|
||||
}
|
||||
59
src/gaelic/AdverbGla.gf
Normal file
59
src/gaelic/AdverbGla.gf
Normal file
@@ -0,0 +1,59 @@
|
||||
concrete AdverbGla of Adverb = CatGla ** open ResGla, ParadigmsGla, Prelude in {
|
||||
lin
|
||||
{-
|
||||
|
||||
-- : A -> Adv ;
|
||||
PositAdvAdj adj =
|
||||
|
||||
-- : CAdv -> A -> NP -> Adv ; -- more warmly than John
|
||||
ComparAdvAdj cadv a np =
|
||||
|
||||
-- : CAdv -> A -> S -> Adv ; -- more warmly than he runs
|
||||
ComparAdvAdjS cadv a s =
|
||||
-}
|
||||
-- : Prep -> NP -> Adv ;
|
||||
PrepNP prep np = {
|
||||
s = prepAndArt ++ noun
|
||||
} where {
|
||||
defaultCase : Case = prep.c2 ! getDefi np.a ;
|
||||
complCase : Case = case <defaultCase, np.a> of {
|
||||
<Dat NoMutation, NotPron (DPoss _ (Sg1|Sg2|Sg3 Masc))>
|
||||
=> Dat Lenited ; -- force lenition if possessive triggers it
|
||||
<Nom NoMutation, NotPron (DPoss _ (Sg1|Sg2|Sg3 Masc))>
|
||||
=> Nom Lenited ; -- force lenition if possessive triggers it
|
||||
_ => defaultCase } ;
|
||||
prepStr : Str = prep.s ! agr2pagr np.a ; -- can be Prep or Prep+Pron merged
|
||||
artStr : Str = np.art ! complCase ;
|
||||
prepAndArt : Str = case np.a of {
|
||||
NotPron (DDef _ Indefinite) => prepStr ++ artStr ;
|
||||
_ => prepStr } ;
|
||||
noun : Str = case <prep.replacesObjPron, np.a> of {
|
||||
<_, NotPron _> | <False, _>
|
||||
=> np.s ! complCase ;
|
||||
_ => np.empty -- empty string to avoid metavariables
|
||||
}
|
||||
};
|
||||
{-
|
||||
-- Adverbs can be modified by 'adadjectives', just like adjectives.
|
||||
|
||||
-- : AdA -> Adv -> Adv ; -- very quickly
|
||||
AdAdv ada adv = adv **
|
||||
|
||||
-- Like adverbs, adadjectives can be produced by adjectives.
|
||||
|
||||
-- : A -> AdA ; -- extremely
|
||||
PositAdAAdj a =
|
||||
|
||||
-- Subordinate clauses can function as adverbs.
|
||||
|
||||
-- : Subj -> S -> Adv ;
|
||||
SubjS subj s = {s = subj.s ++ s.s} ;
|
||||
|
||||
-- Comparison adverbs also work as numeral adverbs.
|
||||
|
||||
-- : CAdv -> AdN ; -- less (than five)
|
||||
AdnCAdv cadv = ;
|
||||
|
||||
-}
|
||||
|
||||
}
|
||||
6
src/gaelic/AllGla.gf
Normal file
6
src/gaelic/AllGla.gf
Normal file
@@ -0,0 +1,6 @@
|
||||
--# -path=.:../abstract:../common:../prelude
|
||||
|
||||
concrete AllGla of AllGlaAbs =
|
||||
LangGla -- ,
|
||||
-- ExtendGla
|
||||
;
|
||||
3
src/gaelic/AllGlaAbs.gf
Normal file
3
src/gaelic/AllGlaAbs.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
abstract AllGlaAbs =
|
||||
Lang
|
||||
** {}
|
||||
122
src/gaelic/CatGla.gf
Normal file
122
src/gaelic/CatGla.gf
Normal file
@@ -0,0 +1,122 @@
|
||||
concrete CatGla of Cat = CommonX ** open ResGla, Coordination, Prelude in {
|
||||
|
||||
flags optimize=all_subs ;
|
||||
|
||||
lincat
|
||||
|
||||
--2 Sentences and clauses
|
||||
-- Constructed in SentenceGla, and also in IdiomGla
|
||||
S = SS ;
|
||||
QS = SS ;
|
||||
RS = SS ;
|
||||
-- relative sentence. Tense and polarity fixed,
|
||||
-- but agreement may depend on the CN/NP it modifies.
|
||||
|
||||
Cl = ResGla.LinCl ;
|
||||
ClSlash = SS ;
|
||||
SSlash = SS ; -- sentence missing NP; e.g. "she has looked at"
|
||||
Imp = SS ; -- imperative e.g. "look at this"
|
||||
|
||||
--2 Questions and interrogatives
|
||||
|
||||
-- Constructed in QuestionGla.
|
||||
QCl = SS ;
|
||||
IComp = SS ; -- interrogative complement of copula e.g. "where"
|
||||
IDet = SS ; -- interrogative determiner e.g. "how many"
|
||||
IQuant = SS ; -- interrogative quantifier e.g. "which"
|
||||
IP = SS ; -- interrogative pronoun e.g. "who"
|
||||
|
||||
--2 Subord clauses and pronouns
|
||||
|
||||
RCl = SS ;
|
||||
RP = SS ;
|
||||
|
||||
--2 Verb phrases
|
||||
|
||||
-- Constructed in VerbGla.
|
||||
VP = ResGla.LinVP ;
|
||||
VPSlash = SS ;
|
||||
Comp = SS ;
|
||||
|
||||
--2 Adjectival phrases
|
||||
|
||||
-- Constructed in AdjectiveGla.
|
||||
AP = LinAP ;
|
||||
|
||||
--2 Nouns and noun phrases
|
||||
|
||||
-- Constructed in NounGla.
|
||||
-- Many atomic noun phrases e.g. "everybody"
|
||||
-- are constructed in StructuralGla.
|
||||
|
||||
CN = ResGla.LinN ;
|
||||
NP = ResGla.LinNP ;
|
||||
Pron = LinPron ;
|
||||
Det = ResGla.LinDet ; -- s : Str , n : Number
|
||||
Predet = SS ;
|
||||
Quant = ResGla.LinQuant ; -- s : Number => Str
|
||||
Num = ResGla.LinNum ;
|
||||
Card = ResGla.LinNum ;
|
||||
ACard = SS ;
|
||||
Ord = SS ;
|
||||
DAP = SS ;
|
||||
|
||||
|
||||
--2 Numerals
|
||||
|
||||
-- Constructed in NumeralGla.
|
||||
|
||||
Numeral = ResGla.LinNumeral ;
|
||||
Digits = ResGla.LinNumeral ;
|
||||
|
||||
--2 Structural words
|
||||
|
||||
-- Constructed in StructuralGla.
|
||||
Conj = Coordination.ConjunctionDistr ** {
|
||||
n : Number -- The number of the NP that results from
|
||||
-- coordinating a list of NPs with that Conj.
|
||||
} ; -- "[Ann and Bob] are children" → and_Conj.n = Pl
|
||||
Subj = SS ;
|
||||
Prep = ResGla.LinPrep ;
|
||||
|
||||
|
||||
|
||||
--2 Words of open classes
|
||||
|
||||
-- These are constructed in LexiconGla and in
|
||||
-- additional lexicon modules.
|
||||
|
||||
-- TODO: eventually different lincats
|
||||
VS, -- sentence-complement verb e.g. "claim"
|
||||
VQ, -- question-complement verb e.g. "wonder"
|
||||
VA, -- adjective-complement verb e.g. "look"
|
||||
V = ResGla.LinV ;
|
||||
|
||||
VV -- verb-phrase-complement verb e.g. "want"
|
||||
= ResGla.LinV ;
|
||||
|
||||
V2A, -- verb with NP and AP complement e.g. "paint"
|
||||
V2V, -- verb with NP and V complement e.g. "cause"
|
||||
V2S, -- verb with NP and S complement e.g. "tell"
|
||||
V2Q, -- verb with NP and Q complement e.g. "ask"
|
||||
V2 = LinV ** {c2 : LinPrep} ;
|
||||
V3 = LinV ** {c2,c3 : LinPrep} ;
|
||||
|
||||
A = LinA ;
|
||||
A2 = LinA ** {c2 : LinPrep} ;
|
||||
|
||||
N = ResGla.LinN ;
|
||||
N2 = ResGla.LinN ;
|
||||
N3 = ResGla.LinN ;
|
||||
PN = SS ;
|
||||
|
||||
-- From the Names module, not in the official API as of 2023-08
|
||||
GN = SS ; -- Given name, e.g. "George"
|
||||
SN = SS ; -- Second name, e.g. "Washington"
|
||||
LN = SS ; -- Location name, e.g. "Sweden"
|
||||
|
||||
linref
|
||||
NP = linNP ;
|
||||
Cl = linCl ;
|
||||
|
||||
}
|
||||
147
src/gaelic/ConjunctionGla.gf
Normal file
147
src/gaelic/ConjunctionGla.gf
Normal file
@@ -0,0 +1,147 @@
|
||||
concrete ConjunctionGla of Conjunction =
|
||||
CatGla ** open ResGla, Coordination, Prelude in {
|
||||
|
||||
flags optimize=all_subs ;
|
||||
|
||||
{- Conjunction for category X needs four things:
|
||||
lincat [X]
|
||||
lin BaseX
|
||||
lin ConsX
|
||||
lin ConjX
|
||||
|
||||
For example, if X is defined as
|
||||
|
||||
lincat X = {s : Number => Str ; g : Gender} ;
|
||||
|
||||
then [X] will split its s field into two, and retain its other fields as is:
|
||||
|
||||
lincat [X] = {s1,s2 : Number => Str ; g : Gender} ;
|
||||
|
||||
Let us look at a simple case: Adv is of type {s : Str}
|
||||
Then [Adv] is {s1,s2 : Str}.
|
||||
BaseAdv, ConsAdv and ConjAdv can all use functions defined in prelude/Coordination:
|
||||
|
||||
BaseAdv = twoSS ;
|
||||
ConsAdv = consrSS comma ;
|
||||
ConjAdv = conjunctSS ;
|
||||
|
||||
--}
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
-- Adverb and other simple {s : Str} types.
|
||||
lincat
|
||||
[Adv],[AdV],[IAdv] = {s1,s2 : Str} ;
|
||||
|
||||
lin
|
||||
BaseAdv, BaseAdV, BaseIAdv = twoSS ;
|
||||
ConsAdv, ConsAdV, ConsIAdv = consrSS comma ;
|
||||
ConjAdv, ConjAdV, ConjIAdv = conjunctDistrSS ;
|
||||
|
||||
{-
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
-- S is sometimes already {s : Str}, sometimes open for mood or word order.
|
||||
-- Simply take the lincat of S, and split the s field into s1 and s2.
|
||||
-- Then make sure that all of the other fields are retained.
|
||||
|
||||
lincat
|
||||
[S] = {s1, s2 : …} ;
|
||||
|
||||
lin
|
||||
-- : S -> S -> ListS ; -- John walks, Mary runs
|
||||
BaseS x y =
|
||||
|
||||
-- : S -> ListS -> ListS ; -- John walks, Mary runs, Bill swims
|
||||
ConsS x xs =
|
||||
|
||||
-- : Conj -> ListS -> S ; -- he walks and she runs
|
||||
ConjS conj xs =
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
-- RS is variable on … and has inherent …
|
||||
-- RS can modify CNs, which are open for …, and have inherent …
|
||||
|
||||
lincat
|
||||
[RS] = {s1,s2 : … => Str} ;
|
||||
|
||||
lin
|
||||
|
||||
-- : RS -> RS -> ListRS ; -- who walks, whom I know
|
||||
BaseRS x y =
|
||||
|
||||
-- : RS -> ListRS -> ListRS ; -- who wals, whom I know, who is here
|
||||
ConsRS x xs =
|
||||
|
||||
-- : Conj -> ListRS -> RS ; -- who walks and whose mother runs
|
||||
ConjRS conj xs =
|
||||
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
-- NP is variable on … and has inherent …
|
||||
|
||||
lincat
|
||||
[NP] = {s1, s2 : …} ;
|
||||
|
||||
lin
|
||||
-- : NP -> NP -> ListNP ; -- John, Mary
|
||||
BaseNP x y =
|
||||
|
||||
-- : NP -> ListNP -> ListNP ; -- John, Mary, Bill
|
||||
ConsNP x xs =
|
||||
|
||||
-- : Conj -> ListNP -> NP ; -- she or we
|
||||
ConjNP conj xs =
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
-- AP is variable on … and has an inherent …
|
||||
|
||||
lincat
|
||||
[AP] = {s1, s2 : …} ;
|
||||
|
||||
lin
|
||||
-- : AP -> AP -> ListAP ; -- red, white
|
||||
BaseAP x y =
|
||||
|
||||
-- : AP -> ListAP -> ListAP ; -- red, white, blue
|
||||
ConsAP x xs =
|
||||
|
||||
-- : Conj -> ListAP -> AP ; -- cold and warm
|
||||
ConjAP conj xs =
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
-- CN is variable on …
|
||||
-- CN conjunction is not in the API, so this can be lower prio
|
||||
|
||||
lincat
|
||||
[CN] = {s1, s2 : …} ;
|
||||
|
||||
lin
|
||||
-- : CN -> CN -> ListCN ; -- man, woman
|
||||
BaseCN x y =
|
||||
|
||||
-- : CN -> ListCN -> ListCN ; -- man, woman, child
|
||||
ConsCN x xs =
|
||||
|
||||
-- : Conj -> ListCN -> CN ; -- man and woman
|
||||
ConjCN conj xs =
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
-- Det and DAP
|
||||
-- Note that there is no [Det], the way to coordinate Dets is to make them
|
||||
-- into DAP first, using Noun.DetDAP : Det -> DAP ;
|
||||
-- DAP ("three small") isn't used in any API functions, so lower prio.
|
||||
|
||||
lincat
|
||||
[DAP] = {s1, s2 : …} ;
|
||||
|
||||
lin
|
||||
-- : DAP -> DAP -> ListDAP ;
|
||||
BaseDAP x y =
|
||||
|
||||
-- : DAP -> ListDAP -> ListDAP ;
|
||||
ConsDAP xs x =
|
||||
|
||||
-- : Conj -> ListDAP -> Det ; -- his or her
|
||||
ConjDet conj xs =
|
||||
-}
|
||||
}
|
||||
117
src/gaelic/ConstructionGla.gf
Normal file
117
src/gaelic/ConstructionGla.gf
Normal file
@@ -0,0 +1,117 @@
|
||||
concrete ConstructionGla of Construction = CatGla ** open ParadigmsGla in {
|
||||
|
||||
lincat
|
||||
Timeunit = N ;
|
||||
Weekday = N ;
|
||||
Monthday = NP ;
|
||||
Month = N ;
|
||||
Year = NP ;
|
||||
{-
|
||||
lin
|
||||
|
||||
timeunitAdv n time =
|
||||
let n_card : Card = n ;
|
||||
n_hours_NP : NP = mkNP n_card time ;
|
||||
in SyntaxGla.mkAdv for_Prep n_hours_NP | mkAdv (n_hours_NP.s ! R.npNom) ;
|
||||
|
||||
weekdayPunctualAdv w = ; -- on Sunday
|
||||
weekdayHabitualAdv w = ; -- on Sundays
|
||||
weekdayNextAdv w = -- next Sunday
|
||||
weekdayLastAdv w = -- last Sunday
|
||||
|
||||
monthAdv m = mkAdv in_Prep (mkNP m) ;
|
||||
yearAdv y = mkAdv in_Prep y ;
|
||||
dayMonthAdv d m = ; -- on 17 Gla
|
||||
monthYearAdv m y = ; -- in Gla 2012
|
||||
dayMonthYearAdv d m y = ; -- on 17 Gla 2013
|
||||
|
||||
intYear = symb ;
|
||||
intMonthday = symb ;
|
||||
|
||||
lincat Language = N ;
|
||||
|
||||
lin InLanguage l = mkAdv ???_Prep (mkNP l) ;
|
||||
|
||||
lin
|
||||
weekdayN w = w ;
|
||||
monthN m = m ;
|
||||
|
||||
weekdayPN w = mkPN w ;
|
||||
monthPN m = mkPN m ;
|
||||
|
||||
languageCN l = mkCN l ;
|
||||
languageNP l = mkNP l ;
|
||||
|
||||
|
||||
oper mkLanguage : Str -> N = \s -> mkN s ;
|
||||
|
||||
----------------------------------------------
|
||||
---- lexicon of special names
|
||||
|
||||
lin second_Timeunit = mkN "second" ;
|
||||
lin minute_Timeunit = mkN "minute" ;
|
||||
lin hour_Timeunit = mkN "hour" ;
|
||||
lin day_Timeunit = mkN "day" ;
|
||||
lin week_Timeunit = mkN "week" ;
|
||||
lin month_Timeunit = mkN "month" ;
|
||||
lin year_Timeunit = mkN "year" ;
|
||||
|
||||
lin monday_Weekday = mkN "Monday" ;
|
||||
lin tuesday_Weekday = mkN "Tuesday" ;
|
||||
lin wednesday_Weekday = mkN "Wednesday" ;
|
||||
lin thursday_Weekday = mkN "Thursday" ;
|
||||
lin friday_Weekday = mkN "Friday" ;
|
||||
lin saturday_Weekday = mkN "Saturday" ;
|
||||
lin sunday_Weekday = mkN "Sunday" ;
|
||||
|
||||
lin january_Month = mkN "January" ;
|
||||
lin february_Month = mkN "February" ;
|
||||
lin march_Month = mkN "March" ;
|
||||
lin april_Month = mkN "April" ;
|
||||
lin may_Month = mkN "May" ;
|
||||
lin june_Month = mkN "June" ;
|
||||
lin july_Month = mkN "July" ;
|
||||
lin august_Month = mkN "August" ;
|
||||
lin september_Month = mkN "September" ;
|
||||
lin october_Month = mkN "October" ;
|
||||
lin november_Month = mkN "November" ;
|
||||
lin december_Month = mkN "December" ;
|
||||
|
||||
lin afrikaans_Language = mkLanguage "Afrikaans" ;
|
||||
lin amharic_Language = mkLanguage "Amharic" ;
|
||||
lin arabic_Language = mkLanguage "Arabic" ;
|
||||
lin bulgarian_Language = mkLanguage "Bulgarian" ;
|
||||
lin catalan_Language = mkLanguage "Catalan" ;
|
||||
lin chinese_Language = mkLanguage "Chinese" ;
|
||||
lin danish_Language = mkLanguage "Danish" ;
|
||||
lin dutch_Language = mkLanguage "Dutch" ;
|
||||
lin english_Language = mkLanguage "Euslish" ;
|
||||
lin estonian_Language = mkLanguage "Estonian" ;
|
||||
lin finnish_Language = mkLanguage "Finnish" ;
|
||||
lin french_Language = mkLanguage "French" ;
|
||||
lin german_Language = mkLanguage "German" ;
|
||||
lin greek_Language = mkLanguage "Greek" ;
|
||||
lin hebrew_Language = mkLanguage "Hebrew" ;
|
||||
lin hindi_Language = mkLanguage "Hindi" ;
|
||||
lin japanese_Language = mkLanguage "Japanese" ;
|
||||
lin italian_Language = mkLanguage "Italian" ;
|
||||
lin latin_Language = mkLanguage "Latin" ;
|
||||
lin latvian_Language = mkLanguage "Latvian" ;
|
||||
lin maltese_Language = mkLanguage "Maltese" ;
|
||||
lin nepali_Language = mkLanguage "Nepali" ;
|
||||
lin norwegian_Language = mkLanguage "Norwegian" ;
|
||||
lin persian_Language = mkLanguage "Persian" ;
|
||||
lin polish_Language = mkLanguage "Polish" ;
|
||||
lin punjabi_Language = mkLanguage "Punjabi" ;
|
||||
lin romanian_Language = mkLanguage "Romanian" ;
|
||||
lin russian_Language = mkLanguage "Russian" ;
|
||||
lin sindhi_Language = mkLanguage "Sindhi" ;
|
||||
lin spanish_Language = mkLanguage "Spanish" ;
|
||||
lin swahili_Language = mkLanguage "Swahili" ;
|
||||
lin swedish_Language = mkLanguage "Swedish" ;
|
||||
lin thai_Language = mkLanguage "Thai" ;
|
||||
lin turkish_Language = mkLanguage "Turkish" ;
|
||||
lin urdu_Language = mkLanguage "Urdu" ;
|
||||
|
||||
-}
|
||||
}
|
||||
77
src/gaelic/DocumentationGla.gf
Normal file
77
src/gaelic/DocumentationGla.gf
Normal file
@@ -0,0 +1,77 @@
|
||||
concrete DocumentationGla of Documentation = CatGla ** open
|
||||
ResGla, Prelude, HTML in {
|
||||
|
||||
lincat
|
||||
Inflection = {t : Str; s1,s2,s3 : Str} ;
|
||||
Definition = {s : Str} ;
|
||||
Document = {s : Str} ;
|
||||
Tag = {s : Str} ;
|
||||
|
||||
lin
|
||||
InflectionN,InflectionN2,InflectionN3 = \x -> {
|
||||
t="n" ;
|
||||
s1=heading1 ("Noun"++
|
||||
case x.g of {
|
||||
Masc => "(masculine)" ;
|
||||
Fem => "(feminine)"
|
||||
}) ;
|
||||
s2=frameTable (
|
||||
tr (th "" ++ th "Sg" ++ th "Pl") ++
|
||||
tr (intagAttr "th" "colspan=\"3\"" "indefinite") ++
|
||||
tr (th "nom" ++ td (x.s ! Nom NoMutation ! Indef ! Sg) ++ td (x.s ! Nom NoMutation ! Indef ! Pl)) ++
|
||||
tr (th "dat" ++ td (x.s ! Dat NoMutation ! Indef ! Sg) ++ td (x.s ! Dat NoMutation ! Indef ! Pl)) ++
|
||||
tr (th "gen" ++ td (x.s ! Gen ! Indef ! Sg) ++ td (x.s ! Gen ! Indef ! Pl)) ++
|
||||
tr (intagAttr "th" "colspan=\"3\"" "definite") ++
|
||||
tr (th "nom" ++ td (x.s ! Nom NoMutation ! Def ! Sg) ++ td (x.s ! Nom NoMutation ! Def ! Pl)) ++
|
||||
tr (th "dat" ++ td (x.s ! Dat NoMutation ! Def ! Sg) ++ td (x.s ! Dat NoMutation ! Def ! Pl)) ++
|
||||
tr (th "gen" ++ td (x.s ! Gen ! Def ! Sg) ++ td (x.s ! Gen ! Def ! Pl)) ++
|
||||
tr (th "voc" ++ td (x.voc ! Sg) ++ td (x.voc ! Pl))) ;
|
||||
s3=[]
|
||||
} ;
|
||||
lin
|
||||
InflectionV,InflectionV2,InflectionV2A,InflectionV2Q,InflectionV2S,InflectionV2V,InflectionV3,InflectionVA,InflectionVQ,InflectionVS,InflectionVV = \x -> {
|
||||
t="v" ;
|
||||
s1=heading1 "Verb" ;
|
||||
s2=frameTable (
|
||||
tr (th "s" ++ td (x.s)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "Conditional" ++ th "Sg" ++ td (x.conditional ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.conditional ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Imperative" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.imperative ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.imperative ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2" ++ th "Sg" ++ td (x.imperative ! P2 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.imperative ! P2 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.imperative ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.imperative ! P3 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"4\"" "Indicative" ++ th "Fut" ++ td (x.future ! Indep)) ++
|
||||
tr (th "Past" ++ td (x.past ! Indep)) ++
|
||||
tr (th "Participle" ++ td (x.participle))) ;
|
||||
s3=[]
|
||||
} ;
|
||||
lin
|
||||
InflectionA,InflectionA2 = \x -> {
|
||||
t="a" ;
|
||||
s1=heading1 "Adjective" ;
|
||||
s2=frameTable (
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "" ++
|
||||
th "masculine" ++ th "feminine") ++
|
||||
tr (intagAttr "th" "colspan=\"2\"" "singular") ++
|
||||
tr (th "Nom" ++ td (x.s ! ASg (Nom NoMutation) Masc) ++ td (x.s ! ASg (Nom NoMutation) Fem)) ++
|
||||
tr (th "Dat" ++ td (x.s ! ASg (Dat NoMutation) Masc) ++ td (x.s ! ASg (Dat NoMutation) Fem)) ++
|
||||
tr (th "Gen" ++ td (x.s ! ASg Gen Masc) ++ td (x.s ! ASg Gen Fem)) ++
|
||||
tr (th "Voc" ++ td (x.voc ! Masc) ++ td (x.voc ! Fem)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "" ++ intagAttr "th" "colspan=\"2\"" "plural") ++
|
||||
tr ( intagAttr "td" "colspan=\"2\"" (x.s ! APl))) ++
|
||||
heading2 "Comparative" ++
|
||||
paragraph (x.compar) ;
|
||||
s3=[]
|
||||
} ;
|
||||
|
||||
lin
|
||||
NoDefinition t = {s=t.s};
|
||||
MkDefinition t d = {s="<p><b>Definition:</b>"++t.s++d.s++"</p>"};
|
||||
MkDefinitionEx t d e = {s="<p><b>Definition:</b>"++t.s++d.s++"</p><p><b>Example:</b>"++e.s++"</p>"};
|
||||
|
||||
lin
|
||||
MkDocument d i e = {s = i.s1 ++ d.s ++ i.s2 ++ i.s3 ++ e.s} ;
|
||||
MkTag i = {s = i.t} ;
|
||||
}
|
||||
36
src/gaelic/ExtendGla.gf
Normal file
36
src/gaelic/ExtendGla.gf
Normal file
@@ -0,0 +1,36 @@
|
||||
--# -path=.:../common:../abstract
|
||||
|
||||
concrete ExtendGla of Extend = CatGla
|
||||
** ExtendFunctor - [
|
||||
VPS -- finite VP's with tense and polarity
|
||||
, ListVPS
|
||||
, VPI
|
||||
, ListVPI -- infinitive VP's (TODO: with anteriority and polarity)
|
||||
, MkVPS
|
||||
, PredVPS
|
||||
|
||||
-- excluded because RGL funs needed for them not implemented yet
|
||||
, SlashBareV2S
|
||||
, PredAPVP
|
||||
, ComplBareVS
|
||||
, AdvIsNP, AdvIsNPAP
|
||||
, CompBareCN
|
||||
, CompIQuant
|
||||
, ComplSlashPartLast
|
||||
, ComplDirectVQ
|
||||
, ComplDirectVS
|
||||
, DetNPFem, DetNPMasc
|
||||
, ExistCN, ExistMassCN, ExistPluralCN, ExistsNP
|
||||
, ExistIPQS, ExistNPQS, ExistS
|
||||
, PredIAdvVP
|
||||
, PrepCN
|
||||
, ReflPossPron
|
||||
, UttVP, UttVPShort, UttAccNP, UttDatNP, UttAccIP, UttDatIP
|
||||
, EmptyRelSlash, StrandQuestSlash, StrandRelSlash
|
||||
, SubjRelNP
|
||||
, UseComp_ser, UseComp_estar
|
||||
, iFem_Pron, weFem_Pron, youFem_Pron, youPlFem_Pron, youPolFem_Pron, youPolPlFem_Pron, youPolPl_Pron, theyFem_Pron, theyNeutr_Pron
|
||||
, GenModNP
|
||||
, PiedPipingQuestSlash, PiedPipingRelSlash, SubjunctRelCN
|
||||
|
||||
] with (Grammar=GrammarGla) ;
|
||||
17
src/gaelic/GrammarGla.gf
Normal file
17
src/gaelic/GrammarGla.gf
Normal file
@@ -0,0 +1,17 @@
|
||||
concrete GrammarGla of Grammar =
|
||||
NounGla
|
||||
, VerbGla
|
||||
, AdjectiveGla
|
||||
, AdverbGla
|
||||
, NumeralGla
|
||||
, SentenceGla
|
||||
, QuestionGla
|
||||
, RelativeGla
|
||||
, ConjunctionGla
|
||||
, PhraseGla
|
||||
, TextX
|
||||
, StructuralGla
|
||||
, IdiomGla
|
||||
, TenseX
|
||||
, NamesGla -- Not part of original Grammar, here to trigger compilation
|
||||
;
|
||||
56
src/gaelic/IdiomGla.gf
Normal file
56
src/gaelic/IdiomGla.gf
Normal file
@@ -0,0 +1,56 @@
|
||||
|
||||
--1 Idiom: Idiomatic Expressions
|
||||
|
||||
concrete IdiomGla of Idiom = CatGla ** open Prelude, ResGla, VerbGla, QuestionGla, NounGla, StructuralGla in {
|
||||
|
||||
-- This module defines constructions that are formed in fixed ways,
|
||||
-- often different even in closely related languages.
|
||||
|
||||
{-
|
||||
lin
|
||||
|
||||
|
||||
-- ImpersCl : VP -> Cl ; -- it is hot
|
||||
ImpersCl vp = {
|
||||
} ;
|
||||
|
||||
-- : NP -> Cl ; -- there is a house
|
||||
ExistNP np =
|
||||
|
||||
-- ExistIP : IP -> QCl ; -- which houses are there
|
||||
ExistIP ip =
|
||||
|
||||
-- GenericCl : VP -> Cl ; -- one sleeps
|
||||
GenericCl vp =
|
||||
|
||||
CleftNP : NP -> RS -> Cl ; -- it is I who did it
|
||||
CleftAdv : Adv -> S -> Cl ; -- it is here she slept
|
||||
|
||||
-- : NP -> Cl ; -- there is a house
|
||||
ExistNP np =
|
||||
|
||||
ExistIP : IP -> QCl ; -- which houses are there
|
||||
|
||||
-- 7/12/2012 generalizations of these
|
||||
|
||||
ExistNPAdv : NP -> Adv -> Cl ; -- there is a house in Paris
|
||||
ExistIPAdv : IP -> Adv -> QCl ; -- which houses are there in Paris
|
||||
|
||||
-- : VP -> VP ;
|
||||
ProgrVP vp = vp ** {
|
||||
} ;
|
||||
|
||||
|
||||
-- : VP -> Utt ; -- let's go
|
||||
ImpPl1 vp = { } ;
|
||||
|
||||
ImpP3 : NP -> VP -> Utt ; -- let John walk
|
||||
|
||||
-- 3/12/2013 non-reflexive uses of "self"
|
||||
|
||||
SelfAdvVP : VP -> VP ; -- is at home himself
|
||||
SelfAdVVP : VP -> VP ; -- is himself at home
|
||||
SelfNP : NP -> NP ; -- the president himself (is at home)
|
||||
-}
|
||||
|
||||
}
|
||||
6
src/gaelic/LangGla.gf
Normal file
6
src/gaelic/LangGla.gf
Normal file
@@ -0,0 +1,6 @@
|
||||
--# -path=.:../abstract:../common:../prelude:../api
|
||||
concrete LangGla of Lang =
|
||||
GrammarGla,
|
||||
LexiconGla
|
||||
,DocumentationGla --# notpresent
|
||||
;
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user