add bulgarian language (still incomplete)

This commit is contained in:
krasimir
2008-02-05 15:54:58 +00:00
parent ff9f224242
commit c3e4a8b454
19 changed files with 1850 additions and 0 deletions

View File

@@ -0,0 +1,188 @@
resource AdjParadigmsBul = open
(Predef=Predef),
Prelude,
MorphoBul,
CatBul
in {
oper
mkA76 : Str -> A =
\nov -> mkAdjective nov
(nov+"č˙")
(nov+"č˙ň")
(nov+"ŕ")
(nov+"ŕňŕ")
(nov+"î")
(nov+"îňî")
(nov+"č")
(nov+"čňĺ")
** {lock_A = <>} ;
mkA77 : Str -> A =
\vish -> mkAdjective vish
(vish+"č˙")
(vish+"č˙ň")
(vish+"ŕ")
(vish+"ŕňŕ")
(vish+"ĺ")
(vish+"ĺňî")
(vish+"č")
(vish+"čňĺ")
** {lock_A = <>} ;
mkA78 : Str -> A =
\bylgarski ->
let bylgarsk = init bylgarski
in mkAdjective bylgarski
(bylgarsk+"č˙")
(bylgarsk+"č˙ň")
(bylgarsk+"ŕ")
(bylgarsk+"ŕňŕ")
(bylgarsk+"î")
(bylgarsk+"îňî")
(bylgarsk+"č")
(bylgarsk+"čňĺ")
** {lock_A = <>} ;
mkA79 : Str -> A =
\silen -> let siln : Str = case silen of { sil+"ĺí" => sil+"í" }
in mkAdjective silen
(siln+"č˙")
(siln+"č˙ň")
(siln+"ŕ")
(siln+"ŕňŕ")
(siln+"î")
(siln+"îňî")
(siln+"č")
(siln+"čňĺ")
** {lock_A = <>} ;
mkA80 : Str -> A =
\dobyr -> let dobr : Str = case dobyr of { dob+"ú"+r@("ř"|"đ"|"ë"|"ę"|"ă"|"â") => dob+r }
in mkAdjective dobyr
(dobr+"č˙")
(dobr+"č˙ň")
(dobr+"ŕ")
(dobr+"ŕňŕ")
(dobr+"î")
(dobr+"îňî")
(dobr+"č")
(dobr+"čňĺ")
** {lock_A = <>} ;
mkA81 : Str -> A =
\bial -> let bel : Str = ia2e bial
in mkAdjective bial
(bel+"č˙")
(bel+"č˙ň")
(bial+"ŕ")
(bial+"ŕňŕ")
(bial+"î")
(bial+"îňî")
(bel+"č")
(bel+"čňĺ")
** {lock_A = <>} ;
mkA82 : Str -> A =
\ostrowryh -> let ostrowyrh : Str = case ostrowryh of { ostrow+"đú"+h@("ç"|"ő"|"á") => ostrow+"úđ"+h }
in mkAdjective ostrowryh
(ostrowyrh+"č˙")
(ostrowyrh+"č˙ň")
(ostrowyrh+"ŕ")
(ostrowyrh+"ŕňŕ")
(ostrowyrh+"î")
(ostrowyrh+"îňî")
(ostrowyrh+"č")
(ostrowyrh+"čňĺ")
** {lock_A = <>} ;
mkA82ŕ : Str -> A =
\dyrzyk -> let dryzk : Str = case dyrzyk of { d+"úđçúę" => d+"đúçę" }
in mkAdjective dyrzyk
(dryzk+"č˙")
(dryzk+"č˙ň")
(dryzk+"ŕ")
(dryzk+"ŕňŕ")
(dryzk+"î")
(dryzk+"îňî")
(dryzk+"č")
(dryzk+"čňĺ")
** {lock_A = <>} ;
mkA83 : Str -> A =
\riadyk ->let riadk : Str = case riadyk of { riad+"úę" => riad+"ę"}
in mkAdjective riadyk
(ia2e riadk+"č˙")
(ia2e riadk+"č˙ň")
(riadk+"ŕ")
(riadk+"ŕňŕ")
(riadk+"î")
(riadk+"îňî")
(ia2e riadk+"č")
(ia2e riadk+"čňĺ")
** {lock_A = <>} ;
mkA84 : Str -> A =
\veren -> let viarn : Str = case veren of { v + "ĺ" + r@("ä"|"ç"|"í"|"đ"|"ń"|"ň")+"ĺí" => v+"˙"+r+"í" }
in mkAdjective veren
(ia2e viarn+"č˙")
(ia2e viarn+"č˙ň")
(viarn+"ŕ")
(viarn+"ŕňŕ")
(viarn+"î")
(viarn+"îňî")
(ia2e viarn+"č")
(ia2e viarn+"čňĺ")
** {lock_A = <>} ;
mkA84ŕ : Str -> A =
\svesten ->
let sviastn : Str = case svesten of { sv + "ĺńňĺí" => sv+"˙ńňí" }
in mkAdjective svesten
(ia2e sviastn+"č˙")
(ia2e sviastn+"č˙ň")
(sviastn+"ŕ")
(sviastn+"ŕňŕ")
(sviastn+"î")
(sviastn+"îňî")
(ia2e sviastn+"č")
(ia2e sviastn+"čňĺ")
** {lock_A = <>} ;
mkA85 : Str -> A =
\stroen ->
let stroin : Str = case stroen of { stro + "ĺí" => stro+"éí" }
in mkAdjective stroen
(stroin+"č˙")
(stroin+"č˙ň")
(stroin+"ŕ")
(stroin+"ŕňŕ")
(stroin+"î")
(stroin+"îňî")
(stroin+"č")
(stroin+"čňĺ")
** {lock_A = <>} ;
mkA86 : Str -> A =
\sin -> mkAdjective sin
(sin+"č˙")
(sin+"č˙ň")
(sin+"˙")
(sin+"˙ňŕ")
(sin+"üî")
(sin+"üîňî")
(sin+"č")
(sin+"čňĺ")
** {lock_A = <>} ;
mkA87 : Str -> A =
\ovchi -> let ovch : Str = case ovchi of { ovch+"č" => ovch }
in mkAdjective ovchi
(ovch+"č˙")
(ovch+"č˙ň")
(ovch+"ŕ")
(ovch+"ŕňŕ")
(ovch+"ĺ")
(ovch+"ĺňî")
(ovch+"č")
(ovch+"čňĺ")
** {lock_A = <>} ;
mkA88 : Str -> A =
\kozi -> let koz : Str = case kozi of { koz+"č" => koz }
in mkAdjective kozi
(koz+"č˙")
(koz+"č˙ň")
(koz+"˙")
(koz+"˙ňŕ")
(koz+"ĺ")
(koz+"ĺňî")
(koz+"č")
(koz+"čňĺ")
** {lock_A = <>} ;
}

View File

@@ -0,0 +1,6 @@
--# -path=.:../abstract:../common:prelude
concrete Bulgarian of BulgarianAbs =
LangBul,
ExtraBul
** {} ;

View File

@@ -0,0 +1,6 @@
--# -path=.:../abstract:../common:prelude
abstract BulgarianAbs =
Lang,
ExtraBulAbs
** {} ;

View File

@@ -0,0 +1,56 @@
concrete CatBul of Cat = CommonX ** open ResBul, Prelude in {
flags optimize=all_subs ;
lincat
-- Tensed/Untensed
S = {s : Str} ;
QS = {s : QForm => Str} ;
-- Sentence
Cl = {s : ResBul.Tense => Anteriority => Polarity => Order => Str} ;
Imp = {s : Polarity => ImpForm => Str} ;
-- Question
QCl = {s : ResBul.Tense => Anteriority => Polarity => QForm => Str} ;
IP = {s : Str ; gn : GenNum} ;
IComp = {s : Str} ;
IDet = {s : Gender => Str ; n : Number; det : Dt} ;
-- Verb
VP = {
s : ResBul.Tense => Anteriority => Polarity => Agr => Str ;
imp : Polarity => Number => Str ;
s2 : Agr => Str
} ;
Comp = {s : Agr => Str} ;
-- Noun
CN = {s : Number => Case => Dt => Str; g : Gender} ;
NP, Pron = {s : Case => Str ; a : Agr} ;
Det = {s : Gender => Str ; n : Number; det : Dt} ;
Num = {s : Str; n : Number } ;
Quant = {s : AForm => Str; det : Dt} ;
-- Structural
Subj = {s : Str} ;
Prep = {s : Str} ;
-- Open lexical classes, e.g. Lexicon
V, VS, VQ, VA = Verb ;
V2, V2A = Verb ** {c2 : Str} ;
V3 = Verb ** {c2, c3 : Str} ;
A = {s : AForm => Str} ;
N = {s : AForm => Str; g : Gender} ;
}

View File

@@ -0,0 +1,6 @@
concrete ExtraBul of ExtraBulAbs = CatBul **
open ResBul, Coordination, Prelude in {
lin
GenNP np = {s = \\aform => np.s ! Gen aform} ;
}

View File

@@ -0,0 +1,2 @@
abstract ExtraBulAbs = Extra ** {
}

View File

@@ -0,0 +1,15 @@
--# -path=.:../abstract:../common:prelude
concrete GrammarBul of Grammar =
NounBul,
VerbBul,
SentenceBul,
QuestionBul,
PhraseBul,
TextX,
StructuralBul
** {
flags startcat = Phr ; unlexer = text ; lexer = text ;
} ;

View File

@@ -0,0 +1,10 @@
--# -path=.:../abstract:../common:prelude
concrete LangBul of Lang =
GrammarBul,
LexiconBul
** {
flags startcat = Phr ; unlexer = text ; lexer = text ;
} ;

View File

@@ -0,0 +1,157 @@
--# -path=.:prelude
concrete LexiconBul of Lexicon = CatBul **
open ParadigmsBul, Prelude in {
flags
optimize=values ;
lin
bad_A = mkA76 "ëîř" ;
beautiful_A = mkA76 "ęđŕńčâ" ;
big_A = mkA81 "ăîë˙ě" ;
black_A = mkA79 "÷ĺđĺí" ;
blue_A = mkA86 "ńčí" ;
break_V2 = dirV2 (mkV173 "÷óď˙") ;
brown_A = mkA76 "ęŕô˙â" ;
buy_V2 = dirV2 (mkV173 "ęóď˙") ;
clean_A = mkA76 "÷čńň" ;
clever_A = mkA79 "óěĺí" ;
close_V2 = dirV2 (mkV173 "çŕňâîđ˙") ;
cold_A = mkA76 "ńňóäĺí" ;
come_V = mkV146a "äîéäŕ" ;
die_V = mkV150a "óěđŕ" ;
dirty_A = mkA79 "ěđúńĺí" ;
drink_V2 = dirV2 (mkV163 "ďč˙") ;
eat_V2 = dirV2 (mkV169 "˙ě") ;
empty_A = mkA79 "ďđŕçĺí" ;
find_V2 = dirV2 (mkV173 "íŕěĺđ˙") ;
forget_V2 = dirV2 (mkV173 "çŕáđŕâ˙") ;
good_A = mkA80 "äîáúđ" ;
go_V = mkV186 "îňčâŕě" ;
green_A = mkA76 "çĺëĺí" ;
hate_V2 = dirV2 (mkV173 "ěđŕç˙") ;
have_V2 = dirV2 (mkV186 "čěŕě") ;
hear_V2 = dirV2 (mkV186 "÷óâŕě") ;
hot_A = mkA76 "ăîđĺů" ;
important_A = mkA79 "âŕćĺí" ;
know_V2 = dirV2 (mkV162 "çíŕ˙") ;
learn_V2 = dirV2 (mkV176 "ó÷ŕ") ;
leave_V2 = dirV2 (mkV173 "îńňŕâ˙") ;
like_V2 = dirV2 (mkV186 "őŕđĺńâŕě") ;
listen_V2 = dirV2 (mkV186 "ńëóřŕě") ;
live_V = mkV160 "ćčâĺ˙" ;
long_A = mkA80 "äúëúă" ;
lose_V2 = dirV2 (mkV173 "ăóá˙") ;
love_V2 = dirV2 (mkV186 "îáč÷ŕě") ;
-- married_A2 = mkA2 (mkA76 "ćĺíĺí") toP ;
narrow_A = mkA84 "ňĺńĺí" ;
new_A = mkA76 "íîâ" ;
old_A = mkA76 "ńňŕđ" ;
open_V2 = dirV2 (mkV187 "îňâŕđ˙ě") ;
play_V2 = dirV2 (mkV161 "čăđŕ˙") ;
read_V2 = dirV2 (mkV145 "÷ĺňŕ") ;
red_A = mkA76 "÷ĺđâĺí" ;
run_V = (mkV186 "á˙ăŕě") ;
seek_V2 = dirV2 (mkV173 "ňúđń˙") ;
see_V2 = dirV2 (mkV186 "âčćäŕě") ;
sell_V3 = dirV3 (mkV186 "ďđîäŕâŕě") naP ;
send_V3 = dirV3 (mkV186 "ďđŕůŕě") doP ;
short_A = mkA76 "ęúń" ;
sleep_V = mkV182 "ńď˙" ;
small_A = mkA80 "ěŕëúę" ;
speak_V2 = dirV2 (mkV173 "ăîâîđ˙") ;
stupid_A = mkA76 "ăëóďŕâ" ;
switch8off_V2 = dirV2 (mkV186 "čçęëţ÷âŕě") ;
switch8on_V2 = dirV2 (mkV186 "âęëţ÷âŕě") ;
teach_V2 = dirV2 (mkV186 "ďđĺďîäŕâŕě") ;
thick_A = mkA76 "äĺáĺë" ;
thin_A = mkA80 "ňúíúę" ;
travel_V = mkV186 "ďúňóâŕě" ;
ugly_A = mkA76 "ăëóďŕâ" ;
understand_V2 = dirV2 (mkV186 "đŕçáčđŕě") ;
wait_V2 = prepV2 (mkV186 "÷ŕęŕě") zaP ;
walk_V = mkV173 "őîä˙" ;
warm_A = mkA80 "ňîďúë" ;
watch_V2 = dirV2 (mkV186 "ăëĺäŕě") ;
white_A = mkA81 "á˙ë" ;
win_V2 = dirV2 (mkV174 "ďîáĺä˙") ;
write_V2 = dirV2 (mkV159 "ďčřŕ") ;
yellow_A = mkA76 "ćúëň" ;
young_A = mkA76 "ěëŕä" ;
-- do_V2 = dirV2 (mk5V "do" "does" "did" "done" "doing") ;
now_Adv = mkAdv "ńĺăŕ" ;
already_Adv = mkAdv "âĺ÷ĺ" ;
-- put_V2 = prepV2 (irregDuplV "put" "put" "put") noPrep ;
stop_V = mkV150 "ńďđŕ" ;
jump_V = mkV176 "ńęî÷ŕ" ;
far_Adv = mkAdv "äŕëĺ÷ĺ" ;
correct_A = mkA79 "ďđŕâčëĺí" ;
dry_A = mkA76 "ńóő" ;
-- dull_A = regA "dull" ;
full_A = mkA79 "ďúëĺí" ;
heavy_A = mkA80 "ňĺćúę" ;
near_A = mkA80 "áëčçúę" ;
-- rotten_A = (regA "rotten") ;
round_A = mkA80 "ęđúăúë" ;
sharp_A = mkA80 "îńňúđ" ;
-- smooth_A = regA "smooth" ;
-- straight_A = regA "straight" ;
wet_A = mkA80 "ěîęúđ" ; ----
wide_A = mkA76 "řčđîę" ;
-- blow_V = IrregEng.blow_V ;
-- breathe_V = dirV2 (regV "breathe") ;
burn_V = mkV187 "čçăŕđ˙ě" ;
-- dig_V = IrregEng.dig_V ;
-- fall_V = IrregEng.fall_V ;
float_V = mkV186 "ďëŕâŕě" ;
flow_V = mkV148 "ňĺęŕ" ;
fly_V = mkV177 "ëĺň˙" ;
freeze_V = mkV186 "çŕěđúçâŕě" ;
laugh_V = mkV160 "ńěĺ˙" ;
lie_V = mkV178 "ëĺćŕ" ;
play_V = mkV161 "čăđŕ˙" ;
-- sew_V = IrregEng.sew_V ;
sing_V = mkV164 "ďĺ˙" ;
-- sit_V = IrregEng.sit_V ;
smell_V = mkV159 "ěčđčřŕ" ;
spit_V = mkV163 "ďëţ˙" ;
-- stand_V = IrregEng.stand_V ;
-- swell_V = IrregEng.swell_V ;
swim_V = mkV186 "ďëóâŕě" ;
think_V = mkV173 "ěčńë˙" ;
turn_V = mkV186 "îáđúůŕě" ;
-- vomit_V = regV "vomit" ;
-- bite_V2 = dirV2 IrregEng.bite_V ;
count_V2 = dirV2 (mkV175 "áđî˙") ;
cut_V2 = dirV2 (mkV157 "đĺćŕ") ;
fear_V2 = dirV2 (mkV186 "ńňđŕőóâŕě") ;
fight_V2 = dirV2 (mkV173 "áîđ˙") ;
-- hit_V2 = dirV2 hit_V ;
-- hold_V2 = dirV2 hold_V ;
hunt_V2 = dirV2 (mkV174 "ëîâ˙") ;
kill_V2 = dirV2 (mkV163 "óáč˙") ;
-- pull_V2 = dirV2 (regV "pull") ;
-- push_V2 = dirV2 (regV "push") ;
-- rub_V2 = dirV2 (regDuplV "rub") ;
-- scratch_V2 = dirV2 (regV "scratch") ;
split_V2 = dirV2 (mkV174 "đŕçäĺë˙") ;
-- squeeze_V2 = dirV2 (regV "squeeze") ;
-- stab_V2 = dirV2 (regDuplV "stab") ;
-- suck_V2 = dirV2 (regV "suck") ;
throw_V2 = dirV2 (mkV173 "őâúđë˙") ;
-- tie_V2 = dirV2 (regV "tie") ;
wash_V2 = dirV2 (mkV163 "ěč˙") ;
-- wipe_V2 = dirV2 (regV "wipe") ;
ready_A = mkA76 "ăîňîâ" ;
today_Adv = mkAdv "äíĺń" ;
uncertain_A = mkA79 "íĺ˙ńĺí" ;
oper
zaP = mkPrep "çŕ" ;
naP = mkPrep "íŕ" ;
doP = mkPrep "äî" ;
} ;

View File

@@ -0,0 +1,34 @@
--# -path=.:../../prelude
--1 A Simple English Resource Morphology
--
-- Aarne Ranta 2002 -- 2005
--
-- This resource morphology contains definitions needed in the resource
-- syntax. To build a lexicon, it is better to use $ParadigmsEng$, which
-- gives a higher-level access to this module.
resource MorphoBul = ResBul ** open Prelude, (Predef=Predef) in {
flags optimize=all ;
oper
--2 Determiners
mkDeterminerSg : Str -> Str -> Str -> {s : Gender => Str; n : Number; det : Dt} = \vseki,vsiaka,vsiako ->
{s = table Gender [vseki;vsiaka;vsiako]; n = Sg; det = NDet} ;
mkDeterminerPl : Str -> {s : Gender => Str ; n : Number; det : Dt} = \vsicki ->
{s = \\_ => vsicki; n = Sg; det = NDet} ;
mkQuant : Str -> Str -> Str -> Str -> {s : AForm => Str; det : Dt} = \tozi,tazi,towa,tezi -> {
s = \\gn => case gn of {
ASg Masc _ => tozi ;
ASg Fem _ => tazi ;
ASg Neut _ => towa ;
APl _ => tezi ;
AFullDet => tozi
};
det = NDet
} ;
}

View File

@@ -0,0 +1,52 @@
concrete NounBul of Noun = CatBul ** open ResBul, Prelude in {
flags optimize=all_subs ;
lin
DetCN det cn =
{ s = \\c => det.s ! cn.g ++ cn.s ! det.n ! c ! det.det ;
a = agrP3 (gennum cn.g det.n)
} ;
UsePron p = p ;
DetSg quant ord = {
s = \\g => quant.s ! ASg g NDet ++ ord.s ;
n = Sg ;
det=quant.det
} ;
DetPl quant num ord = {
s = \\g => quant.s ! aformGenNum (gennum g num.n) ++ num.s ++ ord.s ;
n = num.n ;
det=quant.det
} ;
PossPron p = {s = \\aform => p.s ! Gen aform; det = NDet} ;
NoNum = {s = []; n = Pl } ;
NoOrd = {s = []} ;
DefArt = {
s = \\_ => [] ;
det = ResBul.Det
} ;
IndefArt = {
s = \\_ => [] ;
det = ResBul.NDet
} ;
MassDet = {s = \\_ => [] ; n = Sg ; det = NDet} ;
UseN noun = {
s = \\n,c,dt => let aform = case n of {
Sg => case <noun.g,c,dt> of {
<Masc,Nom,Det> => AFullDet ;
_ => ASg noun.g dt
} ;
Pl => APl dt
}
in noun.s ! aform ;
g = noun.g
} ;
}

View File

@@ -0,0 +1,87 @@
--# -path=.:../abstract:../../prelude:../common
--1 Bulgarian Lexical Paradigms
--
-- Krasimir Angelov 2008
--
-- This is an API for the user of the resource grammar
-- for adding lexical items. It gives functions for forming
-- expressions of open categories: nouns, adjectives, verbs.
--
-- Closed categories (determiners, pronouns, conjunctions) are
-- accessed through the resource syntax API, $Structural.gf$.
--
-- The main difference with $MorphoBul.gf$ is that the types
-- referred to are compiled resource grammar types. We have moreover
-- had the design principle of always having existing forms, rather
-- than stems, as string arguments of the paradigms.
--
-- The structure of functions for each word class $C$ is the following:
-- first we give a handful of patterns that aim to cover all
-- regular cases. Then we give a worst-case function $mkC$, which serves as an
-- escape to construct the most irregular words of type $C$.
resource ParadigmsBul = VerbParadigmsBul, AdjParadigmsBul ** open
(Predef=Predef),
Prelude,
MorphoBul,
CatBul
in {
oper
--2 Adverbs
-- Adverbs are not inflected. Most lexical ones have position
-- after the verb. Some can be preverbal (e.g. "always").
mkAdv : Str -> Adv ;
mkAdV : Str -> AdV ;
-- Adverbs modifying adjectives and sentences can also be formed.
mkAdA : Str -> AdA ;
--2 Prepositions
--
-- A preposition as used for rection in the lexicon, as well as to
-- build $PP$s in the resource API, just requires a string.
mkPrep : Str -> Prep ;
noPrep : Prep ;
--2 Verbs
--
--3 Two-place verbs
--
-- Two-place verbs need a preposition, except the special case with direct object.
-- (transitive verbs). Notice that a particle comes from the $V$.
mkAdv x = ss x ** {lock_Adv = <>} ;
mkAdV x = ss x ** {lock_AdV = <>} ;
mkAdA x = ss x ** {lock_AdA = <>} ;
prepV2 : V -> Prep -> V2 ;
dirV2 : V -> V2 ;
--3 Three-place verbs
--
-- Three-place (ditransitive) verbs need two prepositions, of which
-- the first one or both can be absent.
mkV3 : V -> Prep -> Prep -> V3 ; -- speak, with, about
dirV3 : V -> Prep -> V3 ; -- give,_,to
dirdirV3 : V -> V3 ; -- give,_,_
mkAdv x = ss x ** {lock_Adv = <>} ;
mkPrep p = ss p ** {lock_Prep = <>} ;
noPrep = mkPrep [] ;
prepV2 v p = v ** {s = v.s ; c2 = p.s ; lock_V2 = <>} ;
dirV2 v = prepV2 v noPrep;
mkV3 v p q = v ** {s = v.s ; s1 = v.s1 ; c2 = p.s ; c3 = q.s ; lock_V3 = <>} ;
dirV3 v p = mkV3 v noPrep p ;
dirdirV3 v = dirV3 v noPrep ;
}

View File

@@ -0,0 +1,9 @@
concrete PhraseBul of Phrase = CatBul ** open Prelude, ResBul in {
lin
UttS s = s ;
UttQS qs = {s = qs.s ! QDir} ;
UttImpSg pol imp = {s = pol.s ++ imp.s ! pol.p ! ImpF Sg False} ;
UttImpPl pol imp = {s = pol.s ++ imp.s ! pol.p ! ImpF Pl False} ;
UttImpPol pol imp = {s = pol.s ++ imp.s ! pol.p ! ImpF Sg True } ;
}

View File

@@ -0,0 +1,39 @@
concrete QuestionBul of Question = CatBul ** open ResBul, Prelude in {
flags optimize=all_subs ;
lin
QuestCl cl = {
s = \\t,a,p =>
let cls = cl.s ! t ! a ! p
in table {
QDir => cls ! OQuest ;
QIndir => "àêî" ++ cls ! ODir
} ---- "whether" in ExtEng
} ;
QuestVP ip vp =
let cl = mkClause ip.s {gn = ip.gn ; p = P3} vp
in {s = \\t,a,b,_ => cl.s ! t ! a ! b ! ODir} ;
QuestIAdv iadv cl = mkQuestion iadv cl ;
QuestIComp icomp np =
mkQuestion icomp (mkClause (np.s ! Nom) np.a (predV auxBe)) ;
PrepIP p ip = {s = p.s ++ ip.s} ;
AdvIP ip adv = {
s = ip.s ++ adv.s ;
gn = ip.gn
} ;
-- IDetCN idet num ord cn = {
-- s = \\c => idet.s ++ num.s ++ ord.s ++ cn.s ! idet.n ! c ;
-- gn = idet.gn
-- } ;
CompIAdv a = a ;
}

View File

@@ -0,0 +1,328 @@
--# -path=.:../abstract:../common:../../prelude
--1 Bulgarian auxiliary operations.
-- This module contains operations that are needed to make the
-- resource syntax work. To define everything that is needed to
-- implement $Test$, it moreover contains regular lexical
-- patterns needed for $Lex$.
resource ResBul = ParamX ** open Prelude in {
flags optimize=all ;
-- Some parameters, such as $Number$, are inherited from $ParamX$.
--2 For $Noun$
-- This is the worst-case $Case$ needed for pronouns.
param
Case = Nom | Acc | Gen AForm;
GenNum = GSg Gender | GPl ;
-- Agreement of $NP$ is a record. We'll add $Gender$ later.
oper
Agr = {gn : GenNum ; p : Person} ;
param
Gender = Masc | Fem | Neut ;
Dt = NDet | Det ;
-- The plural never makes a gender distinction.
--2 For $Verb$
VForm =
VPres Number Person
| VAorist Number Person
| VImperfect Number Person
| VPerfect AForm
| VPluPerfect AForm
| VPassive AForm
| VPresPart AForm
| VImperative Number
| VGerund
;
-- The order of sentence is needed already in $VP$.
Order = ODir | OQuest ;
--2 For $Adjective$
AForm =
ASg Gender Dt
| APl Dt
| AFullDet
;
--2 Transformations between parameter types
oper
agrP3 : GenNum -> Agr = \gn ->
{gn = gn ; p = P3} ;
gennum : Gender -> Number -> GenNum = \g,n ->
case n of {
Sg => GSg g ;
Pl => GPl
} ;
numGenNum : GenNum -> Number = \gn ->
case gn of {
GSg _ => Sg ;
GPl => Pl
} ;
aformGenNum : GenNum -> AForm = \gn ->
case gn of {
GSg g => ASg g NDet ;
GPl => APl NDet
} ;
oper
-- For $Verb$.
Verb : Type = {
s : VForm => Str ;
} ;
VP : Type = {
s : Tense => Anteriority => Polarity => Agr => Str ;
imp : Polarity => Number => Str ;
s2 : Agr => Str
} ;
predV : Verb -> VP =
\verb ->
let pol : Polarity -> Str -> Str = \p,vf -> case p of { Pos => vf ; Neg => "íå" ++ vf }
in { s = \\t,a,p,agr => let present = verb.s ! (VPres (numGenNum agr.gn) agr.p) ;
aorist = verb.s ! (VAorist (numGenNum agr.gn) agr.p) ;
perfect = verb.s ! (VPerfect (aformGenNum agr.gn)) ;
vf = case <t,a> of {
<Pres,Simul> => present ;
<Pres,Anter> => auxBe.s ! (VPres (numGenNum agr.gn) agr.p) ++ perfect ;
<Past,Simul> => aorist ;
<Past,Anter> => auxBe.s ! (VAorist (numGenNum agr.gn) agr.p) ++ perfect ;
<Fut, Simul> => "ùå" ++ present ;
<Fut, Anter> => "ùå" ++ auxBe.s ! (VPres (numGenNum agr.gn) agr.p) ++ perfect ;
<Cond,Simul> => auxWould.s ! (VAorist (numGenNum agr.gn) agr.p) ++ perfect ;
<Cond,Anter> => auxWould.s ! (VAorist (numGenNum agr.gn) agr.p) ++ auxBe.s ! (VPerfect (aformGenNum agr.gn)) ++ perfect
} ;
in pol p vf ;
imp = \\p,n => pol p (verb.s ! VImperative n) ;
s2 = \\_ => []
} ;
insertObj : (Agr => Str) -> VP -> VP = \obj,vp -> {
s = vp.s ;
imp = vp.imp ;
s2 = \\a => vp.s2 ! a ++ obj ! a
} ;
auxBe : Verb = {
s = table {
VPres Sg P1 => "ñúì" ;
VPres Sg P2 => "ñè" ;
VPres Sg P3 => "å" ;
VPres Pl P1 => "ñìå" ;
VPres Pl P2 => "ñòå" ;
VPres Pl P3 => "ñà" ;
VAorist Sg P1 => "áÿõ" ;
VAorist Sg _ => "áåøå" ;
VAorist Pl P1 => "áÿõìå" ;
VAorist Pl P2 => "áÿõòå" ;
VAorist Pl P3 => "áÿõà" ;
VImperfect Sg P1 => "áÿõ" ;
VImperfect Sg _ => "áåøå" ;
VImperfect Pl P1 => "áÿõìå" ;
VImperfect Pl P2 => "áÿõòå" ;
VImperfect Pl P3 => "áÿõà" ;
VPerfect aform => (regAdjective "áèë").s ! aform ;
VPluPerfect aform => (regAdjective "áèë").s ! aform ;
VPassive aform => (regAdjective "áúäåí").s ! aform ;
VPresPart aform => (regAdjective "áúäåù").s ! aform ;
VImperative Sg => "áúäè" ;
VImperative Pl => "áúäåòå" ;
VGerund => "áèäåéêè"
}
} ;
auxWould : Verb = {
s = table {
VPres Sg P1 => "áúäà" ;
VPres Sg P2 => "áúäåø" ;
VPres Sg P3 => "áúäå" ;
VPres Pl P1 => "áúäåì" ;
VPres Pl P2 => "áúäåòå" ;
VPres Pl P3 => "áúäàò" ;
VAorist Sg P1 => "áèõ" ;
VAorist Sg _ => "áè" ;
VAorist Pl P1 => "áèõìå" ;
VAorist Pl P2 => "áèõòå" ;
VAorist Pl P3 => "áèõà" ;
VImperfect Sg P1 => "áúäåõ" ;
VImperfect Sg _ => "áúäåøå" ;
VImperfect Pl P1 => "áúäåõìå" ;
VImperfect Pl P2 => "áúäåõòå" ;
VImperfect Pl P3 => "áúäåõà" ;
VPerfect aform => (regAdjective "áèë").s ! aform ;
VPluPerfect aform => (regAdjective "áúäåë").s ! aform ;
VPassive aform => (regAdjective "áúäåí").s ! aform ;
VPresPart aform => (regAdjective "áúäåù").s ! aform ;
VImperative Sg => "áúäè" ;
VImperative Pl => "áúäåòå" ;
VGerund => "áúäåéêè"
}
} ;
ia2e : Str -> Str = -- to be used when the next syllable has vowel different from "à","ú","î" or "ó"
\s -> case s of {
x@(_*+_) + "ÿ" + y@(("á"|"â"|"ã"|"ä"|"æ"|"ç"|"ê"|"ë"|"ì"|"í"|"ï"|"ð"|"ñ"|"ò"|"ô"|"õ"|"ö"|"÷"|"ø"|"ù")*)
=> x+"e"+y;
_ => s
};
mkAdjective : (_,_,_,_,_,_,_,_,_ : Str) -> {s : AForm => Str} =
\dobyr,dobria,dobriat,dobra,dobrata,dobro,dobroto,dobri,dobrite -> {
s = table {
ASg Masc NDet => dobyr ;
ASg Masc Det => dobria ;
AFullDet => dobriat ;
ASg Fem NDet => dobra ;
ASg Fem Det => dobrata ;
ASg Neut NDet => dobro ;
ASg Neut Det => dobroto ;
APl NDet => dobri ;
APl Det => dobrite
}
} ;
regAdjective : Str -> {s : AForm => Str} =
\base -> mkAdjective base
(base+"èÿ")
(base+"èÿò")
(base+"a")
(base+"àòà")
(base+"î")
(base+"îòî")
(ia2e base+"è")
(ia2e base+"èòå") ;
mkVerb : (_,_,_,_,_,_,_,_,_:Str) -> Verb =
\cheta,chete,chetoh,chetqh,chel,chetql,cheten,chetqst,cheti -> {
s = table {
VPres Sg P1 => cheta;
VPres Sg P2 => chete + "ø";
VPres Sg P3 => chete;
VPres Pl P1 => case chete of {
_ + ("à"|"ÿ") => chete + "ìå";
_ => chete + "ì"
};
VPres Pl P2 => chete + "òå";
VPres Pl P3 => case cheta of {
vika + "ì" => case chete of {
dad + "å" => dad + "àò";
vika => vika + "ò"
};
_ => cheta + "ò"
};
VAorist Sg P1 => chetoh;
VAorist Sg _ => case chetoh of {
chet+"îõ" => chete;
zova+ "õ" => zova
};
VAorist Pl P1 => chetoh + "ìå";
VAorist Pl P2 => chetoh + "òå";
VAorist Pl P3 => chetoh + "à";
VImperfect Sg P1 => chetqh;
VImperfect Sg _ => case chete of {
rabot + "è" => rabot + "eøå";
_ => chete + "øå"
};
VImperfect Pl P1 => chetqh + "ìå";
VImperfect Pl P2 => chetqh + "òå";
VImperfect Pl P3 => chetqh + "à";
VPerfect aform =>let chel1 : Str =
case chel of {
pas+"úë" => pas+"ë";
_ => chel
}
in (mkAdjective chel
(chel+"èÿ")
(chel+"èÿò")
(chel1+"a")
(chel1+"àòà")
(chel1+"î")
(chel1+"îòî")
(ia2e chel1+"è")
(ia2e chel1+"èòå")).s ! aform ;
VPluPerfect aform => (regAdjective chetql ).s ! aform ;
VPassive aform => (regAdjective cheten ).s ! aform ;
VPresPart aform => (regAdjective chetqst).s ! aform ;
VImperative Sg => cheti;
VImperative Pl => case cheti of {
chet + "è" => chet + "åòå";
ela => ela + "òå"
};
VGerund => case chete of {
rabot + "è" => rabot + "åéêè";
_ => chete + "éêè"
}
} ;
} ;
-- For $Sentence$.
Clause : Type = {
s : Tense => Anteriority => Polarity => Order => Str
} ;
mkClause : Str -> Agr -> VP -> Clause =
\subj,agr,vp -> {
s = \\t,a,b,o =>
let
verb = vp.s ! t ! a ! b ! agr ;
compl = vp.s2 ! agr
in case o of {
ODir => subj ++ verb ++ compl ;
OQuest => subj ++ verb ++ "ëè" ++ compl
}
} ;
mkIP : Str -> GenNum -> {s : Str ; gn : GenNum} =
\s,gn -> {
s = s ;
gn = gn
} ;
mkNP : (az,men,moj,moia,moiat,moia_,moiata,moe,moeto,moi,moite : Str) -> GenNum -> Person -> {s : Case => Str ; a : Agr} =
\az,men,moj,moia,moiat,moia_,moiata,moe,moeto,moi,moite,gn,p -> {
s = table {
Nom => az ;
Acc => men ;
Gen aform => (mkAdjective moj moia moiat moia_ moiata moe moeto moi moite).s ! aform
} ;
a = {
gn = gn ;
p = p
}
} ;
mkQuestion :
{s : Str} -> Clause ->
{s : Tense => Anteriority => Polarity => QForm => Str} = \wh,cl ->
{
s = \\t,a,p =>
let cls = cl.s ! t ! a ! p ;
why = wh.s
in table {
QDir => why ++ cls ! OQuest ;
QIndir => why ++ cls ! ODir
}
} ;
}

View File

@@ -0,0 +1,29 @@
concrete SentenceBul of Sentence = CatBul ** open Prelude, ResBul in {
flags optimize=all_subs ;
lin
PredVP np vp = mkClause (np.s ! Nom) np.a vp ;
ImpVP vp = {
s = \\p,i =>
let gn : GenNum =
case i of {
ImpF _ True => GPl ;
ImpF Sg _ => GSg (variants {Masc; Fem; Neut}) ;
ImpF Pl _ => GPl
} ;
agr = {gn = gn ; p = P2} ;
verb = vp.imp ! p ! numImp i ;
compl = vp.s2 ! agr
in
verb ++ compl
} ;
UseCl t a p cl = {
s = t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! ODir
} ;
UseQCl t a p cl = {
s = \\q => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! q
} ;
}

View File

@@ -0,0 +1,161 @@
concrete StructuralBul of Structural = CatBul **
open MorphoBul, (P = ParadigmsBul), Prelude in {
flags optimize=all ;
lin
above_Prep = ss "íàä" ;
after_Prep = ss "ñëåä" ;
{- all_Predet = ss "all" ;
almost_AdA, almost_AdN = ss "almost" ;
although_Subj = ss "although" ;
always_AdV = ss "always" ;
and_Conj = ss "and" ** {n = Pl} ;
-}
because_Subj = ss "çàùîòî" ;
before_Prep = ss "ïðåäè" ;
behind_Prep = ss "çàä" ;
between_Prep = ss "ìåæäó" ;
{-
both7and_DConj = sd2 "both" "and" ** {n = Pl} ;
but_PConj = ss "but" ;
-}
by8agent_Prep = ss "÷ðåç" ;
by8means_Prep = ss "÷ðåç" ;
{-
can8know_VV, can_VV = {
s = table {
VVF VInf => ["be able to"] ;
VVF VPres => "can" ;
VVF VPPart => ["been able to"] ;
VVF VPresPart => ["being able to"] ;
VVF VPast => "could" ; --# notpresent
VVPastNeg => "couldn't" ; --# notpresent
VVPresNeg => "can't"
} ;
isAux = True
} ;
-}
during_Prep = ss ["ïî âðåìå íà"] ;
{-
either7or_DConj = sd2 "either" "or" ** {n = Sg} ;
everybody_NP = regNP "everybody" Sg ;
-}
every_Det = mkDeterminerSg "âñåêè" "âñÿêà" "âñÿêî";
{-
everything_NP = regNP "everything" Sg ;
-}
everywhere_Adv = ss "íàâñÿêúäå" ;
few_Det = mkDeterminerPl "íÿêîëêî" ;
--- first_Ord = ss "first" ; DEPRECATED
for_Prep = ss "çà" ;
from_Prep = ss "îò" ;
he_Pron = mkNP "òîé" "íåãî" "ñâîé" "ñâîÿ" "ñâîÿò" "ñâîÿ" "ñâîÿòà" "ñâîå" "ñâîåòî" "ñâîè" "ñâîèòå" (GSg Masc) P3 ;
here_Adv = ss "òóê" ;
here7to_Adv = ss ["äî òóê"] ;
here7from_Adv = ss ["îò òóê"] ;
how_IAdv = ss "êàê" ;
how8many_IDet = mkDeterminerPl ["êîëêî ìíîãî"] ;
if_Subj = ss "àêî" ;
in8front_Prep = ss "ïðåä" ;
i_Pron = mkNP "àç" "ìåí" "ìîé" "ìîÿ" "ìîÿò" "ìîÿ" "ìîÿòà" "ìîå" "ìîåòî" "ìîè" "ìîèòå" (GSg (variants {Masc;Fem})) P1 ;
in_Prep = ss (pre { "â" ;
"âúâ" / strs {"â" ; "ô" ; "Â" ; "Ô"}
}) ;
it_Pron = mkNP "òî" "íåãî" "íåãîâ" "íåãîâèÿ" "íåãîâèÿò" "íåãîâà" "íåãîâàòà" "íåãîâî" "íåãîâîòî" "íåãîâè" "íåãîâèòå" (GSg Neut) P3 ;
less_CAdv = ss "ïîìàëêî" ;
many_Det = mkDeterminerPl "ìíîãî" ;
more_CAdv = ss "ïîâå÷å" ;
{-
most_Predet = ss "most" ;
-}
much_Det = mkDeterminerSg "ìíîãî" "ìíîãî" "ìíîãî";
{-
must_VV = {
s = table {
VVF VInf => ["have to"] ;
VVF VPres => "must" ;
VVF VPPart => ["had to"] ;
VVF VPresPart => ["having to"] ;
VVF VPast => ["had to"] ; --# notpresent
VVPastNeg => ["hadn't to"] ; --# notpresent
VVPresNeg => "mustn't"
} ;
isAux = True
} ;
-}
no_Phr = ss "íå" ;
on_Prep = ss "íà" ;
{-
---- one_Quant = mkDeterminer Sg "one" ; -- DEPRECATED
only_Predet = ss "only" ;
or_Conj = ss "or" ** {n = Sg} ;
otherwise_PConj = ss "otherwise" ;
-}
part_Prep = ss "îò" ;
{-
please_Voc = ss "please" ;
-}
possess_Prep = ss "íà" ;
quite_Adv = ss "äîñòà" ;
she_Pron = mkNP "òÿ" "íåÿ" "íåèí" "íåéíèÿ" "íåéíèÿò" "íåéíà" "íåéíàòà" "íåéíî" "íåéíîòî" "íåéíè" "íåéíèòå" (GSg Fem) P3 ;
{-
so_AdA = ss "so" ;
somebody_NP = regNP "somebody" Sg ;
someSg_Det = mkDeterminerSg "íÿêîé" "íÿêîå" "íÿêîÿ" ;
somePl_Det = mkDeterminerPl "íÿêîè" ;
something_NP = regNP "something" Sg ;
-}
somewhere_Adv = ss "íÿêúäå" ;
that_Quant = mkQuant "îíçè" "îíàçè" "îíîâà" "îíåçè" ;
{-
that_NP = regNP "that" Sg ;
-}
there_Adv = ss "òàì" ;
there7to_Adv = ss ["äî òàì"] ;
there7from_Adv = ss ["îò òàì"] ;
{-
therefore_PConj = ss "therefore" ;
these_NP = regNP "these" Pl ;
-}
they_Pron = mkNP "òå" "òÿõ" "òåõåí" "òåõíèÿ" "òåõíèÿò" "òÿõíà" "òÿõíàòà" "òÿõíî" "òÿõíîòî" "òåõíè" "òåõíèòå" GPl P3 ;
this_Quant = mkQuant "òîçè" "òaçè" "òîâà" "òåçè" ;
{-
this_NP = regNP "this" Sg ;
those_NP = regNP "those" Pl ;
-}
through_Prep = ss "ïðåç" ;
{-
too_AdA = ss "too" ;
-}
to_Prep = ss "äî" ;
under_Prep = ss "ïîä" ;
{-
very_AdA = ss "very" ;
want_VV = P.mkVV (P.regV "want") ;
-}
we_Pron = mkNP "íèå" "íàñ" "íàø" "íàøèÿ" "íàøèÿò" "íàøà" "íàøàòà" "íàøå" "íàøåòî" "íàøè" "íàøèòå" GPl P1 ;
whatPl_IP = mkIP "êàêâè" GPl ;
whatSg_IP = variants { mkIP "êàêúâ" (GSg Masc); mkIP "êàêâà" (GSg Fem); mkIP "êàêâî" (GSg Neut) } ;
when_IAdv = ss "êîãà" ;
{-
when_Subj = ss "when" ;
-}
where_IAdv = ss "êúäå" ;
{-
whichPl_IDet = mkDeterminer Pl ["which"] ;
whichSg_IDet = mkDeterminer Sg ["which"] ;
-}
whoSg_IP = variants { mkIP "êîé" (GSg Masc); mkIP "êîÿ" (GSg Fem); mkIP "êîå" (GSg Neut) } ;
whoPl_IP = mkIP "êîè" GPl ;
why_IAdv = ss "çàùî" ;
without_Prep = ss "áåç" ;
with_Prep = ss (pre { "ñ" ;
"ñúñ" / strs {"ñ" ; "ç" ; "Ñ" ; "Ç"}
}) ;
yes_Phr = ss "äà" ;
youSg_Pron = mkNP "òè" "òåá" "òâîé" "òâîÿ" "òâîÿò" "òâîÿ" "òâîÿòà" "òâîå" "òâîåòî" "òâîè" "òâîèòå" (GSg (variants {Masc;Fem})) P2 ;
youPl_Pron = mkNP "âèå" "âàñ" "âàø" "âàøèÿ" "âàøèÿò" "âàøà" "âàøàòà" "âàøå" "âàøåòî" "âàøè" "âàøèòå" GPl P2 ;
youPol_Pron = mkNP "âèå" "âàñ" "âàø" "âàøèÿ" "âàøèÿò" "âàøà" "âàøàòà" "âàøå" "âàøåòî" "âàøè" "âàøèòå" (GSg (variants {Masc;Fem})) P2 ;
}

View File

@@ -0,0 +1,21 @@
concrete VerbBul of Verb = CatBul ** open ResBul in {
flags optimize=all_subs ;
lin
UseV = predV ;
ComplV2 v np = insertObj (\\_ => v.c2 ++ np.s ! Acc) (predV v) ;
ComplV3 v np np2 =
insertObj (\\_ => v.c2 ++ np.s ! Acc ++ v.c3 ++ np2.s ! Acc) (predV v) ;
UseComp comp = insertObj comp.s (predV auxBe) ;
AdvVP vp adv = insertObj (\\_ => adv.s) vp ;
ReflV2 v = insertObj (\\_ => v.c2 ++ ["ñåáå ñè"]) (predV v) ;
PassV2 v = insertObj (\\a => v.s ! VPassive (aformGenNum a.gn)) (predV auxBe) ;
CompNP np = {s = \\_ => np.s ! Acc} ;
CompAdv a = {s = \\_ => a.s} ;
}

View File

@@ -0,0 +1,644 @@
resource VerbParadigmsBul = open
(Predef=Predef),
Prelude,
MorphoBul,
CatBul
in {
oper
mkV142 : Str -> V ;
mkV142 base = let stem = (init (init (init base)))
in mkVerb (stem+"ńúě")
(stem+"ĺ")
(stem+"á˙ő")
(stem+"á˙ő")
(stem+"áčë")
(stem+"áčë")
(stem+"-")
(stem+"-")
(stem+"áúäč")
** {s1 = [] ; lock_V = <>} ;
mkV143 : Str -> V ;
mkV143 base = let stem = (init (init (init base)))
in mkVerb (stem+"úäŕ")
(stem+"úäĺ")
(stem+"čő, čäîő")
(stem+"úäĺő, ˙ő")
(stem+"čë")
(stem+"úäĺë")
(stem+"-")
(stem+"úäĺů")
(stem+"úäč")
** {s1 = [] ; lock_V = <>} ;
mkV144 : Str -> V ;
mkV144 base = let stem = (init base)
in mkVerb (stem+"ŕ")
(stem+"ĺ")
(stem+"˙ő")
(stem+"˙ő")
(stem+"˙ë")
(stem+"˙ë")
(stem+"-")
(stem+"-")
(stem+"-")
** {s1 = [] ; lock_V = <>} ;
mkV145 : Str -> V ;
mkV145 base = let stem = (init base)
in mkVerb (stem+"ŕ")
(stem+"ĺ")
(stem+"îő")
(stem+"˙ő")
(init stem+"ë")
(stem+"˙ë")
(stem+"ĺí")
(stem+"˙ů")
(stem+"č")
** {s1 = [] ; lock_V = <>} ;
mkV145a : Str -> V ;
mkV145a base = let stem = (init (init base))
in mkVerb (stem+"ńŕ")
(stem+"ńĺ")
(stem+"ńîő")
(stem+"ń˙ő")
(stem+"ńúë")
(stem+"ń˙ë")
(stem+"ńĺí")
(stem+"ń˙ů")
(stem+"ńč")
** {s1 = [] ; lock_V = <>} ;
mkV145b : Str -> V ;
mkV145b base = let stem = (init (init base))
in mkVerb (stem+"ňŕ")
(stem+"ňĺ")
(stem+"ňîő")
(stem+"ň˙ő")
(stem+"úë")
(stem+"ň˙ë")
(stem+"-")
(stem+"ň˙ů")
(stem+"ňč")
** {s1 = [] ; lock_V = <>} ;
mkV146 : Str -> V ;
mkV146 base = let stem = (init (init base))
in mkVerb (stem+"äŕ")
(stem+"äĺ")
(stem+"äîő")
(stem+"äĺő")
(stem+"řúë")
(stem+"äĺë")
(stem+"-")
(stem+"-")
(stem+"äč")
** {s1 = [] ; lock_V = <>} ;
mkV146a : Str -> V ;
mkV146a base = let stem = (init (init (init base)))
in mkVerb (stem+"éäŕ")
(stem+"éäĺ")
(stem+"éäîő")
(stem+"éäĺő")
(stem+"řúë")
(stem+"éäĺë")
(stem+"-")
(stem+"-")
(stem+"éäč")
** {s1 = [] ; lock_V = <>} ;
mkV147 : Str -> V ;
mkV147 base = let stem = (init (init (init base)))
in mkVerb (stem+"˙çŕ")
(stem+"ĺçĺ")
(stem+"˙çîő")
(stem+"ĺçĺő")
(stem+"˙çúë")
(stem+"ĺçĺë")
(stem+"-")
(stem+"-")
(stem+"ĺç")
** {s1 = [] ; lock_V = <>} ;
mkV148 : Str -> V ;
mkV148 base = let stem = (init (init base))
in mkVerb (stem+"ęŕ")
(stem+"÷ĺ")
(stem+"ęîő")
(stem+"÷ĺő")
(stem+"ęúë")
(stem+"÷ĺë")
(stem+"÷ĺí")
(stem+"÷ŕů")
(stem+"÷č")
** {s1 = [] ; lock_V = <>} ;
mkV149 : Str -> V ;
mkV149 base = let stem = (init (init (init base)))
in mkVerb (stem+"ĺęŕ")
(stem+"ĺ÷ĺ")
(stem+"˙ęîő")
(stem+"ĺ÷ĺő")
(stem+"˙ęúë")
(stem+"ĺ÷ĺë")
(stem+"ĺ÷ĺí")
(stem+"-")
(stem+"ĺ÷č")
** {s1 = [] ; lock_V = <>} ;
mkV150 : Str -> V ;
mkV150 base = let stem = (init base)
in mkVerb (stem+"ŕ")
(stem+"ĺ")
(stem+"˙ő")
(stem+"˙ő")
(stem+"˙ë")
(stem+"˙ë")
(stem+"˙í")
(stem+"-")
(stem+"č")
** {s1 = [] ; lock_V = <>} ;
mkV150a : Str -> V ;
mkV150a base = let stem = (init base)
in mkVerb (stem+"ŕ")
(stem+"ĺ")
(stem+"˙ő")
(stem+"˙ő")
(stem+"˙ë")
(stem+"˙ë")
(stem+"-")
(stem+"-")
(stem+"č")
** {s1 = [] ; lock_V = <>} ;
mkV151 : Str -> V ;
mkV151 base = let stem = (init base)
in mkVerb (stem+"ŕ")
(stem+"ĺ")
(stem+"ŕő")
(stem+"˙ő")
(stem+"ŕë")
(stem+"˙ë")
(stem+"˙ů")
(stem+"ŕí")
(stem+"č")
** {s1 = [] ; lock_V = <>} ;
mkV152 : Str -> V ;
mkV152 base = let stem = (init base)
in mkVerb (stem+"ŕ")
(stem+"ĺ")
(stem+"ŕő")
(stem+"ĺő")
(stem+"ŕë")
(stem+"ĺë")
(stem+"ŕň")
(stem+"-")
(stem+"č")
** {s1 = [] ; lock_V = <>} ;
mkV152a : Str -> V ;
mkV152a base = let stem = (init (init (init (init base))))
in mkVerb (stem+"˙ăíŕ")
(stem+"ĺăíĺ")
(stem+"˙ăíŕő")
(stem+"˙ăíĺő")
(stem+"˙ăíŕë")
(stem+"˙ăíĺë")
(stem+"˙ăíŕň")
(stem+"-")
(stem+"ĺăíč")
** {s1 = [] ; lock_V = <>} ;
mkV153 : Str -> V ;
mkV153 base = let stem = (init (init (init base)))
in mkVerb (stem+"˙íŕ")
(stem+"ĺíĺ")
(stem+"˙íŕő")
(stem+"ĺíĺő")
(stem+"˙íŕë")
(stem+"ĺíĺë")
(stem+"˙íŕň")
(stem+"-")
(stem+"ĺíč")
** {s1 = [] ; lock_V = <>} ;
mkV154 : Str -> V ;
mkV154 base = let stem = (init base)
in mkVerb (stem+"˙")
(stem+"ĺ")
(stem+"ŕő")
(stem+"ĺő")
(stem+"ŕë")
(stem+"ĺë")
(stem+"ŕí")
(stem+"ĺů")
(stem+"č")
** {s1 = [] ; lock_V = <>} ;
mkV155 : Str -> V ;
mkV155 base = let stem = (init (init base))
in mkVerb (stem+"÷ŕ")
(stem+"÷ĺ")
(stem+"ęŕő")
(stem+"÷ĺő")
(stem+"ęŕë")
(stem+"÷ĺë")
(stem+"-")
(stem+"÷ĺů")
(stem+"÷č")
** {s1 = [] ; lock_V = <>} ;
mkV156 : Str -> V ;
mkV156 base = let stem = (init (init base))
in mkVerb (stem+"ćŕ")
(stem+"ćĺ")
(stem+"çŕő")
(stem+"ćĺő")
(stem+"çŕë")
(stem+"ćĺë")
(stem+"çŕí")
(stem+"-")
(stem+"ćč")
** {s1 = [] ; lock_V = <>} ;
mkV157 : Str -> V ;
mkV157 base = let stem = (init (init (init base)))
in mkVerb (stem+"ĺćŕ")
(stem+"ĺćĺ")
(stem+"˙çŕő")
(stem+"ĺćĺő")
(stem+"˙çŕë")
(stem+"ĺćĺë")
(stem+"˙çŕí")
(stem+"ĺćĺů")
(stem+"ĺćč")
** {s1 = [] ; lock_V = <>} ;
mkV158 : Str -> V ;
mkV158 base = let stem = (init (init base))
in mkVerb (stem+"ćŕ")
(stem+"ćĺ")
(stem+"ăŕő")
(stem+"ćĺő")
(stem+"ăŕë")
(stem+"ćĺë")
(stem+"ăŕí")
(stem+"ćĺů")
(stem+"ćč")
** {s1 = [] ; lock_V = <>} ;
mkV159 : Str -> V ;
mkV159 base = let stem = (init (init base))
in mkVerb (stem+"řŕ")
(stem+"řĺ")
(stem+"ńŕő")
(stem+"řĺő")
(stem+"ńŕë")
(stem+"řĺë")
(stem+"ńŕí")
(stem+"řĺů")
(stem+"řč")
** {s1 = [] ; lock_V = <>} ;
mkV160 : Str -> V ;
mkV160 base = let stem = (init (init base))
in mkVerb (stem+"ĺ˙")
(stem+"ĺĺ")
(stem+"˙ő")
(stem+"ĺĺő")
(stem+"˙ë")
(stem+"ĺĺë")
(stem+"˙í")
(stem+"ĺĺů")
(stem+"ĺé")
** {s1 = [] ; lock_V = <>} ;
mkV160a : Str -> V ;
mkV160a base = let stem = (init (init base))
in mkVerb (stem+"ĺ˙")
(stem+"ĺĺ")
(stem+"ŕő")
(stem+"ĺĺő")
(stem+"ŕë")
(stem+"ĺĺë")
(stem+"ŕí")
(stem+"ĺĺů")
(stem+"ĺé")
** {s1 = [] ; lock_V = <>} ;
mkV161 : Str -> V ;
mkV161 base = let stem = (init base)
in mkVerb (stem+"˙")
(stem+"ĺ")
(stem+"ő")
(stem+"ĺő")
(stem+"ë")
(stem+"ĺë")
(stem+"í")
(stem+"ĺů")
(stem+"é")
** {s1 = [] ; lock_V = <>} ;
mkV161a : Str -> V ;
mkV161a base = let stem = (init base)
in mkVerb (stem+"˙")
(stem+"ĺ")
(stem+"ő")
(stem+"ĺő")
(stem+"ë")
(stem+"ĺë")
(stem+"ň")
(stem+"ĺů")
(stem+"é")
** {s1 = [] ; lock_V = <>} ;
mkV162 : Str -> V ;
mkV162 base = let stem = (init base)
in mkVerb (stem+"˙")
(stem+"ĺ")
(stem+"˙ő")
(stem+"ĺő")
(stem+"˙ë")
(stem+"ĺë")
(stem+"-")
(stem+"ĺů")
(stem+"é")
** {s1 = [] ; lock_V = <>} ;
mkV163 : Str -> V ;
mkV163 base = let stem = (init base)
in mkVerb (stem+"˙")
(stem+"ĺ")
(stem+"ő")
(stem+"ĺő")
(stem+"ë")
(stem+"ĺë")
(stem+"ň")
(stem+"ĺů")
(stem+"é")
** {s1 = [] ; lock_V = <>} ;
mkV164 : Str -> V ;
mkV164 base = let stem = (init (init base))
in mkVerb (stem+"ĺ˙")
(stem+"ĺĺ")
(stem+"˙ő")
(stem+"ĺĺő")
(stem+"˙ë")
(stem+"ĺĺë")
(stem+"˙ň")
(stem+"ĺĺů")
(stem+"ĺé")
** {s1 = [] ; lock_V = <>} ;
mkV165 : Str -> V ;
mkV165 base = let stem = (init base)
in mkVerb (stem+"ŕ")
(stem+"ĺ")
(stem+"ĺő")
(stem+"ĺő")
(stem+"ĺë")
(stem+"ĺë")
(stem+"ĺë")
(stem+"ĺů")
(stem+"č")
** {s1 = [] ; lock_V = <>} ;
mkV166 : Str -> V ;
mkV166 base = let stem = (init (init base))
in mkVerb (stem+"ăŕ")
(stem+"ćĺ")
(stem+"ćŕő")
(stem+"ćĺő")
(stem+"ăúë")
(stem+"ćĺë")
(stem+"-")
(stem+"ćĺů")
(stem+"-")
** {s1 = [] ; lock_V = <>} ;
mkV167 : Str -> V ;
mkV167 base = let stem = (init (init base))
in mkVerb (stem+"ęŕ")
(stem+"÷ĺ")
(stem+"ęŕő")
(stem+"÷ĺő")
(stem+"ęŕë")
(stem+"÷ĺë")
(stem+"ęŕí")
(stem+"÷ĺů")
(stem+"÷č")
** {s1 = [] ; lock_V = <>} ;
mkV168 : Str -> V ;
mkV168 base = let stem = (init base)
in mkVerb (stem+"ě")
(stem+"äĺ")
(stem+"äîő")
(stem+"ä˙ő")
(stem+"ë")
(stem+"ä˙ë")
(stem+"äĺí")
(stem+"-")
(stem+"é")
** {s1 = [] ; lock_V = <>} ;
mkV169 : Str -> V ;
mkV169 base = let stem = (init base)
in mkVerb (stem+"ě")
(stem+"äĺ")
(stem+"äîő")
(stem+"ä˙ő")
(stem+"ë")
(stem+"ä˙ë")
(stem+"äĺí")
(stem+"äĺů")
(stem+"ć")
** {s1 = [] ; lock_V = <>} ;
mkV170 : Str -> V ;
mkV170 base = let stem = (init (init (init base)))
in mkVerb (stem+"ĺđŕ")
(stem+"ĺđĺ")
(stem+"đŕő")
(stem+"ĺđ˙ő")
(stem+"đŕë")
(stem+"ĺđ˙ë")
(stem+"đŕí")
(stem+"ĺđ˙ů")
(stem+"ĺđč")
** {s1 = [] ; lock_V = <>} ;
mkV171 : Str -> V ;
mkV171 base = let stem = (init (init base))
in mkVerb (stem+"ěŕ")
(stem+"ěĺ")
(stem+"ő")
(stem+"ěĺő")
(stem+"ë")
(stem+"ěĺë")
(stem+"ň")
(stem+"-")
(stem+"ěč")
** {s1 = [] ; lock_V = <>} ;
mkV172 : Str -> V ;
mkV172 base = let stem = (init (init (init (init base))))
in mkVerb (stem+"úëíŕ")
(stem+"úëíĺ")
(stem+"ëĺő")
(stem+"úëíĺő")
(stem+"ëĺë")
(stem+"úëíĺë")
(stem+"úëíŕň")
(stem+"úëíĺů")
(stem+"úëíč")
** {s1 = [] ; lock_V = <>} ;
mkV173 : Str -> V ;
mkV173 base = let stem = (init base)
in mkVerb (stem+"˙")
(stem+"č")
(stem+"čő")
(stem+"ĺő")
(stem+"čë")
(stem+"ĺë")
(stem+"ĺí")
(stem+"ĺů")
(stem+"č")
** {s1 = [] ; lock_V = <>} ;
mkV174 : Str -> V ;
mkV174 base = let stem = (init base)
in mkVerb (stem+"˙")
(stem+"č")
(stem+"čő")
(stem+"˙ő")
(stem+"čë")
(stem+"˙ë")
(stem+"ĺí")
(stem+"˙ů")
(stem+"č")
** {s1 = [] ; lock_V = <>} ;
mkV175 : Str -> V ;
mkV175 base = let stem = (init base)
in mkVerb (stem+"˙")
(stem+"č")
(stem+"čő")
(stem+"˙ő")
(stem+"čë")
(stem+"˙ë")
(stem+"ĺí")
(stem+"˙ů")
(stem+"é")
** {s1 = [] ; lock_V = <>} ;
mkV176 : Str -> V ;
mkV176 base = let stem = (init base)
in mkVerb (stem+"ŕ")
(stem+"č")
(stem+"čő")
(stem+"ĺő")
(stem+"čë")
(stem+"ĺë")
(stem+"ĺí")
(stem+"ĺů")
(stem+"č")
** {s1 = [] ; lock_V = <>} ;
mkV177 : Str -> V ;
mkV177 base = let stem = (init base)
in mkVerb (stem+"˙")
(stem+"č")
(stem+"˙ő")
(stem+"˙ő")
(stem+"˙ë")
(stem+"˙ë")
(stem+"˙í")
(stem+"˙ů")
(stem+"č")
** {s1 = [] ; lock_V = <>} ;
mkV178 : Str -> V ;
mkV178 base = let stem = (init base)
in mkVerb (stem+"ŕ")
(stem+"č")
(stem+"ŕő")
(stem+"ĺő")
(stem+"ŕë")
(stem+"ĺë")
(stem+"-")
(stem+"ŕů")
(stem+"č")
** {s1 = [] ; lock_V = <>} ;
mkV179 : Str -> V ;
mkV179 base = let stem = (init (init (init (init base))))
in mkVerb (stem+"úđćŕ")
(stem+"úđćč")
(stem+"úđćŕő")
(stem+"úđćĺő")
(stem+"úđćŕë")
(stem+"úđćĺë")
(stem+"úđćŕí")
(stem+"úđćŕů")
(stem+"đúć")
** {s1 = [] ; lock_V = <>} ;
mkV180 : Str -> V ;
mkV180 base = let stem = (init base)
in mkVerb (stem+"˙")
(stem+"č")
(stem+"˙ő")
(stem+"˙ő")
(stem+"˙ë")
(stem+"˙ë")
(stem+"-")
(stem+"˙ů")
(stem+"é")
** {s1 = [] ; lock_V = <>} ;
mkV181 : Str -> V ;
mkV181 base = let stem = (init (init base))
in mkVerb (stem+"ä˙")
(stem+"äč")
(stem+"ä˙ő")
(stem+"äĺő")
(stem+"ä˙ë")
(stem+"äĺë")
(stem+"ä˙í")
(stem+"-")
(stem+"ć")
** {s1 = [] ; lock_V = <>} ;
mkV182 : Str -> V ;
mkV182 base = let stem = (init base)
in mkVerb (stem+"˙")
(stem+"č")
(stem+"ŕő")
(stem+"˙ő")
(stem+"ŕë")
(stem+"˙ë")
(stem+"-")
(stem+"˙ů")
(stem+"č")
** {s1 = [] ; lock_V = <>} ;
mkV183 : Str -> V ;
mkV183 base = let stem = (init (init (init base)))
in mkVerb (stem+"ĺćŕ")
(stem+"ĺćč")
(stem+"˙çŕő")
(stem+"ĺćĺő")
(stem+"˙çŕë")
(stem+"ĺćĺë")
(stem+"˙çŕí")
(stem+"ĺćĺů")
(stem+"ĺćč")
** {s1 = [] ; lock_V = <>} ;
mkV184 : Str -> V ;
mkV184 base = let stem = (init (init (init base)))
in mkVerb (stem+"ĺë˙")
(stem+"ĺëč")
(stem+"ë˙ő")
(stem+"ĺëĺő")
(stem+"ë˙ë")
(stem+"ĺëĺë")
(stem+"ë˙í, ë˙ň")
(stem+"ĺëĺů")
(stem+"ĺëč")
** {s1 = [] ; lock_V = <>} ;
mkV185 : Str -> V ;
mkV185 base = let stem = (init (init (init base)))
in mkVerb (stem+"îë˙")
(stem+"îëč")
(stem+"ëŕő")
(stem+"îëĺő")
(stem+"ëŕë")
(stem+"îëĺë")
(stem+"ëŕí")
(stem+"îëĺů")
(stem+"îëč")
** {s1 = [] ; lock_V = <>} ;
mkV186 : Str -> V ;
mkV186 base = let stem = (init (init base))
in mkVerb (stem+"ŕě")
(stem+"ŕ")
(stem+"ŕő")
(stem+"ŕő")
(stem+"ŕë")
(stem+"ŕë")
(stem+"ŕí")
(stem+"ŕů")
(stem+"ŕé")
** {s1 = [] ; lock_V = <>} ;
mkV187 : Str -> V ;
mkV187 base = let stem = (init (init base))
in mkVerb (stem+"˙ě")
(stem+"˙")
(stem+"˙ő")
(stem+"˙ő")
(stem+"˙ë")
(stem+"˙ë")
(stem+"˙í")
(stem+"˙ů")
(stem+"˙é")
** {s1 = [] ; lock_V = <>} ;
}