1
0
forked from GitHub/gf-rgl

added documentaion and missing paradigm functions

This commit is contained in:
Krasimir Angelov
2024-10-20 17:11:42 +02:00
parent 650076a867
commit bb7786af7c
6 changed files with 518 additions and 463 deletions

View File

@@ -78,6 +78,8 @@ concrete CatIna of Cat = CommonX ** open ResIna, Prelude in {
N2 = {s : Number => Str} ** {p2 : Str; c2 : Case} ; N2 = {s : Number => Str} ** {p2 : Str; c2 : Case} ;
N3 = {s : Number => Str} ** {p2,p3 : Str; c2,c3 : Case} ; N3 = {s : Number => Str} ** {p2,p3 : Str; c2,c3 : Case} ;
PN = {s : Str} ; PN,LN = {s : Str} ;
GN = {s : Str ; g : Sex} ;
SN = {s : Sex => Str ; pl : Str} ;
} }

View File

@@ -0,0 +1,113 @@
--# -path=.:../abstract:../common
concrete DocumentationIna of Documentation = CatIna ** open
ResIna,
Prelude,
HTML
in {
flags coding=utf8 ;
lincat
Inflection = {t : Str; s1,s2 : Str} ;
Definition = {s : Str} ;
Document = {s : Str} ;
Tag = {s : Str} ;
{-
-} --# notpresent
lin
InflectionN, InflectionN2, InflectionN3 = \noun -> {
t = "s" ;
s1 = heading1 "Substantivo" ;
s2 = frameTable (
tr (th "Singular" ++ th "Plural") ++
tr (td (noun.s ! Sg) ++ td (noun.s ! Pl))
)
} ;
InflectionPN = \pn -> {
t = "pn" ;
s1 = heading1 ("Nombre Proprio") ;
s2 = pn.s
} ;
InflectionGN = \gn -> {
t = "pn" ;
s1 = heading1 ("Nombre de Pila" ++
case gn.g of {
Male => "(Mascule)" ;
Female => "(Femina)"
}) ;
s2 = gn.s
} ;
InflectionSN = \sn -> {
t = "sn" ;
s1 = heading1 "Apellido" ;
s2 = sn.s ! Male
} ;
InflectionLN = \ln -> {
t = "nl" ;
s1 = heading1 ("Nombre del Lugar") ;
s2 = paragraph ln.s
} ;
InflectionA, InflectionA2 = \adj -> {
t = "a" ;
s1 = heading1 "Adjectivo" ;
s2 = paragraph (adj.s ! AAdj Posit)
} ;
InflectionAdv, InflectionAdV, InflectionAdA, InflectionAdN = \adv -> {
t = "adv" ;
s1 = heading1 "Adverbio" ;
s2 = paragraph adv.s
} ;
InflectionPrep p = {
t = "prep" ;
s1 = heading1 "Preposition" ;
s2 = paragraph p.s
} ;
InflectionV, InflectionV2, InflectionV3, InflectionV2V, InflectionV2S, InflectionV2Q, InflectionV2A, InflectionVV, InflectionVS, InflectionVQ, InflectionVA = \v -> {
t = "v" ;
s1 = heading1 "Verbo" ;
s2 = inflVerb v
} ;
lin
NoDefinition t = {s=t.s};
MkDefinition t d = {s="<p><b>Definición:</b>"++t.s++d.s++"</p>"};
MkDefinitionEx t d e = {s="<p><b>Definición:</b>"++t.s++d.s++"</p><p><b>Ejemplo:</b>"++e.s++"</p>"};
lin
MkDocument b i e = ss (i.s1 ++ "<p style=\"font-size:20px\">"++b.s++"</p>" ++ i.s2 ++ paragraph e.s) ; -- explanation appended in a new paragraph
MkTag i = ss i.t ;
oper
inflVerb : Verb -> Str = \verb ->
frameTable (
tr (th "infinitivo" ++
td (verb.s ! VInf)) ++
tr (th "presente" ++
td (verb.s ! VPres)) ++
tr (th "participio passato" ++
td (verb.s ! VPPart)) ++
tr (th "participio presente" ++
td (verb.s ! VPresPart)) ++
tr (th "passato" ++
td (verb.s ! VPast)) ++
tr (th "futuro" ++
td (verb.s ! VFut)) ++
tr (th "conditional" ++
td (verb.s ! VCond))
) ;
{- --# notpresent
-}
}

View File

@@ -2,7 +2,8 @@
concrete LangIna of Lang = concrete LangIna of Lang =
GrammarIna, GrammarIna,
LexiconIna LexiconIna,
DocumentationIna
** { ** {
flags startcat = Phr ; unlexer = text ; lexer = text ; flags startcat = Phr ; unlexer = text ; lexer = text ;

View File

@@ -7,355 +7,355 @@ concrete LexiconIna of Lexicon = CatIna **
optimize=values ; optimize=values ;
lin lin
airplane_N = regN "avion"; airplane_N = mkN "avion";
answer_V2S = prepV2 aP (regV "responder"); answer_V2S = mkV2 (mkV "responder") aP;
apartment_N = regN "appartamento"; apartment_N = mkN "appartamento";
apple_N = regN "pomo"; apple_N = mkN "pomo";
art_N = regN "arte" ; art_N = mkN "arte" ;
ask_V2Q = mkV2Q aP (regV "demandar") ; ask_V2Q = mkV2Q (mkV "demandar") aP ;
baby_N = regN "bebe" ; baby_N = mkN "bebe" ;
bad_A = regA "mal"; bad_A = mkA "mal";
bank_N = regN "banca" ; bank_N = mkN "banca" ;
beautiful_A = regA "belle" ; beautiful_A = mkA "belle" ;
become_VA = mkVA (regV "devenir") ; become_VA = mkVA (mkV "devenir") ;
beer_N = regN "bira" ; beer_N = mkN "bira" ;
beg_V2V = mkV2V noPrep aP (regV "rogar") ; beg_V2V = mkV2V (mkV "rogar") noPrep aP ;
big_A = regA "magne" ; big_A = mkA "magne" ;
bike_N = regN "bicycletta" ; bike_N = mkN "bicycletta" ;
bird_N = regN "ave" ; bird_N = mkN "ave" ;
black_A = regA "nigre" ; black_A = mkA "nigre" ;
blue_A = regA "blau" ; blue_A = mkA "blau" ;
boat_N = regN "barca" ; boat_N = mkN "barca" ;
book_N = regN "libro" ; book_N = mkN "libro" ;
boot_N = regN "botta"; boot_N = mkN "botta";
boss_N = regN "chef" ; boss_N = mkN "chef" ;
boy_N = regN "puero" ; boy_N = mkN "puero" ;
bread_N = regN "pan" ; bread_N = mkN "pan" ;
break_V2 = dirV2 (regV "rumper") ; break_V2 = mkV2 (mkV "rumper") ;
broad_A = regA "large" ; broad_A = mkA "large" ;
brother_N2 = regN2 "fratre"; brother_N2 = regN2 "fratre";
brown_A = regA "brun" ; brown_A = mkA "brun" ;
butter_N = regN "butyro" ; butter_N = mkN "butyro" ;
buy_V2 = dirV2 (regV "compra"); buy_V2 = mkV2 (mkV "compra");
camera_N = compN (regN "apparato" ) ["photographic"] ; camera_N = compN (mkN "apparato" ) ["photographic"] ;
cap_N = regN "bonetto" ; cap_N = mkN "bonetto" ;
car_N = regN "automobile" ; car_N = mkN "automobile" ;
carpet_N = regN "tapete" ; carpet_N = mkN "tapete" ;
cat_N = regN "catto" ; cat_N = mkN "catto" ;
ceiling_N = regN "tecto" ; -- of room ??? ceiling_N = mkN "tecto" ; -- of room ???
chair_N = regN "sede"; chair_N = mkN "sede";
cheese_N = regN "caseo"; cheese_N = mkN "caseo";
child_N = regN "infante" ; child_N = mkN "infante" ;
church_N = regN "ecclesia" ; church_N = mkN "ecclesia" ;
city_N = regN "urbe" ; -- ??? citate city_N = mkN "urbe" ; -- ??? citate
clean_A = regA "munde" ; clean_A = mkA "munde" ;
clever_A = regA "intelligente" ; clever_A = mkA "intelligente" ;
close_V2 = dirV2 (regV "clauder") ; close_V2 = mkV2 (mkV "clauder") ;
coat_N = regN "mantello" ; coat_N = mkN "mantello" ;
cold_A = regA "frigide" ; cold_A = mkA "frigide" ;
come_V = regV "venir" ; come_V = mkV "venir" ;
computer_N = regN "computator" ; computer_N = mkN "computator" ;
country_N = regN "pais" ; country_N = mkN "pais" ;
cousin_N = regN "cosino" ; ---- cosina cousin_N = mkN "cosino" ; ---- cosina
cow_N = regN "vacca" ; cow_N = mkN "vacca" ;
die_V = regV "morir" ; die_V = mkV "morir" ;
dirty_A = regA "immunde" ; dirty_A = mkA "immunde" ;
distance_N3 = prepN3 aP (prepN2 deP (regN "distantia")) ; --- ??? wtf distance_N3 = prepN3 aP (prepN2 deP (mkN "distantia")) ; --- ??? wtf
doctor_N = regN "medico"; doctor_N = mkN "medico";
dog_N = regN "can"; dog_N = mkN "can";
door_N = regN "porta"; door_N = mkN "porta";
drink_V2 = dirV2 (regV "biber"); drink_V2 = mkV2 (mkV "biber");
easy_A2V = mkA2V (regA "facile") aP ; easy_A2V = mkA2V (mkA "facile") aP ;
eat_V2 = dirV2 (regV "eder"); eat_V2 = mkV2 (mkV "eder");
empty_A = regA "vacue" ; empty_A = mkA "vacue" ;
enemy_N = regN "inimico" ; enemy_N = mkN "inimico" ;
factory_N = regN "fabrica" ; factory_N = mkN "fabrica" ;
father_N2 = regN2 "patre" ; father_N2 = regN2 "patre" ;
fear_VS = mkVS (regV "timer") ; fear_VS = mkVS (mkV "timer") ;
find_V2 = dirV2 (regV "trovar") ; find_V2 = mkV2 (mkV "trovar") ;
fish_N = regN "pisce" ; fish_N = mkN "pisce" ;
floor_N = regN "pavimento" ; floor_N = mkN "pavimento" ;
forget_V2 = dirV2 (regV "oblidar"); forget_V2 = mkV2 (mkV "oblidar");
fridge_N = regN "refrigerator"; fridge_N = mkN "refrigerator";
friend_N = regN "amico" ; friend_N = mkN "amico" ;
fruit_N = regN "fructo" ; fruit_N = mkN "fructo" ;
fun_AV = mkAV (regA "famusante") ; fun_AV = mkAV (mkA "famusante") ;
garden_N = regN "horto" ; garden_N = mkN "horto" ;
girl_N = regN "puera" ; girl_N = mkN "puera" ;
glove_N = regN "guanto" ; glove_N = mkN "guanto" ;
go_V = regV "ir"; go_V = mkV "ir";
gold_N = regN "auro" ; gold_N = mkN "auro" ;
good_A = R.mkAdjective "bon" "melior" "optime"; good_A = R.mkAdjective "bon" "melior" "optime";
green_A = regA "verde" ; green_A = mkA "verde" ;
harbour_N = regN "porto" ; harbour_N = mkN "porto" ;
hate_V2 = dirV2 (regV "detestar0") ; hate_V2 = mkV2 (mkV "detestar0") ;
hat_N = regN "cappello" ; hat_N = mkN "cappello" ;
hear_V2 = dirV2 (regV "audir"); hear_V2 = mkV2 (mkV "audir");
hill_N = regN "monticulo" ; hill_N = mkN "monticulo" ;
hope_VS = mkVS (regV "sperar") ; hope_VS = mkVS (mkV "sperar") ;
horse_N = regN "cavallo" ; horse_N = mkN "cavallo" ;
hot_A = regA "calide" ; hot_A = mkA "calide" ;
house_N = regN "domo" ; house_N = mkN "domo" ;
important_A = regA "importante" ; important_A = mkA "importante" ;
industry_N = regN "industria" ; industry_N = mkN "industria" ;
iron_N = regN "ferro" ; iron_N = mkN "ferro" ;
king_N = regN "rege" ; king_N = mkN "rege" ;
know_V2 = dirV2 (regV "cognoscer") ; -- ??? know_V2 = mkV2 (mkV "cognoscer") ; -- ???
lake_N = regN "laco" ; lake_N = mkN "laco" ;
lamp_N = regN "lampa" ; lamp_N = mkN "lampa" ;
learn_V2 = dirV2 (regV "apprender") ; learn_V2 = mkV2 (mkV "apprender") ;
leather_N = regN "corio" ; leather_N = mkN "corio" ;
leave_V2 = prepV2 deP (regV "partir"); leave_V2 = mkV2 (mkV "partir") deP;
like_V2 = dirV2 (regV "amar") ; like_V2 = mkV2 (mkV "amar") ;
listen_V2 = dirV2 (regV "ascoltar") ; listen_V2 = mkV2 (mkV "ascoltar") ;
live_V = (regV "vive") ; live_V = mkV "vive" ;
long_A = regA "longe" ; long_A = mkA "longe" ;
lose_V2 = dirV2 (regV "perder"); lose_V2 = mkV2 (mkV "perder");
love_N = regN "amor" ; love_N = mkN "amor" ;
love_V2 = dirV2 (regV "adorar") ; love_V2 = mkV2 (mkV "adorar") ;
man_N = regN "viro"; man_N = mkN "viro";
married_A2 = mkA2 (regA "sponsate") aP ; married_A2 = mkA2 (mkA "sponsate") aP ;
meat_N = regN "carne" ; meat_N = mkN "carne" ;
milk_N = regN "lacte" ; milk_N = mkN "lacte" ;
moon_N = regN "luna" ; moon_N = mkN "luna" ;
mother_N2 = regN2 "matre" ; mother_N2 = regN2 "matre" ;
mountain_N = regN "montania" ; mountain_N = mkN "montania" ;
music_N = regN "musica" ; music_N = mkN "musica" ;
narrow_A = regA "stricte" ; narrow_A = mkA "stricte" ;
new_A = regA "nove" ; new_A = mkA "nove" ;
newspaper_N = regN "jornal" ; newspaper_N = mkN "jornal" ;
oil_N = regN "oleo" ; oil_N = mkN "oleo" ;
old_A = regA "vetule" ; old_A = mkA "vetule" ;
open_V2 = dirV2 (regV "operir") ; open_V2 = mkV2 (mkV "operir") ;
paint_V2A = mkV2A noPrep inP (regV "pinger") ; -- ??? preposition might be wrong. (did not find a sample usage) paint_V2A = mkV2A (mkV "pinger") noPrep inP ; -- ??? preposition might be wrong. (did not find a sample usage)
paper_N = regN "papiro" ; paper_N = mkN "papiro" ;
paris_PN = regPN "Paris" ; paris_PN = mkPN "Paris" ;
peace_N = regN "pace" ; peace_N = mkN "pace" ;
pen_N = regN "penna" ; pen_N = mkN "penna" ;
planet_N = regN "planeta" ; planet_N = mkN "planeta" ;
plastic_N = regN "plastico" ; plastic_N = mkN "plastico" ;
play_V2 = dirV2 (regV "sonar") ; -- ??? eg. play the piano play_V2 = mkV2 (mkV "sonar") ; -- ??? eg. play the piano
policeman_N = regN "policero" ; policeman_N = mkN "policero" ;
priest_N = regN "prestre" ; priest_N = mkN "prestre" ;
probable_AS = mkAS (regA "probabile") ; probable_AS = mkAS (mkA "probabile") ;
queen_N = regN "regina" ; queen_N = mkN "regina" ;
radio_N = regN "radio" ; radio_N = mkN "radio" ;
rain_V0 = mkV0 (regV "pluvar") ; rain_V0 = mkV0 (mkV "pluvar") ;
read_V2 = dirV2 (regV "leger"); read_V2 = mkV2 (mkV "leger");
red_A = regA "rubie" ; red_A = mkA "rubie" ;
religion_N = regN "religion" ; religion_N = mkN "religion" ;
restaurant_N = regN "restaurant" ; restaurant_N = mkN "restaurant" ;
river_N = regN "riviera" ; river_N = mkN "riviera" ;
rock_N = regN "rocca" ; rock_N = mkN "rocca" ;
roof_N = regN "tecto" ; roof_N = mkN "tecto" ;
rubber_N = regN "cauchu" ; rubber_N = mkN "cauchu" ;
run_V = regV "currer"; run_V = mkV "currer";
say_VS = mkVS (regV "dicer"); say_VS = mkVS (mkV "dicer");
school_N = regN "schola" ; school_N = mkN "schola" ;
science_N = regN "scientia"; science_N = mkN "scientia";
sea_N = regN "mar" ; sea_N = mkN "mar" ;
seek_V2 = dirV2 (regV "cercar"); seek_V2 = mkV2 (mkV "cercar");
see_V2 = dirV2 (regV "vider"); see_V2 = mkV2 (mkV "vider");
sell_V3 = prepV3 aP (dirV2 (regV "vender")); sell_V3 = mkV3 (mkV "vender") noPrep aP;
send_V3 = prepV3 aP (dirV2 (regV "inviar")); send_V3 = mkV3 (mkV "inviar") noPrep aP;
sheep_N = regN "ove"; sheep_N = mkN "ove";
ship_N = regN "nave" ; ship_N = mkN "nave" ;
shirt_N = regN "camisa" ; shirt_N = mkN "camisa" ;
shoe_N = regN "scapra" ; shoe_N = mkN "scapra" ;
shop_N = regN "boteca" ; shop_N = mkN "boteca" ;
short_A = regA "curte" ; short_A = mkA "curte" ;
silver_N = regN "argento" ; silver_N = mkN "argento" ;
sister_N = regN "soror" ; sister_N = mkN "soror" ;
sleep_V = regV "dormir"; sleep_V = mkV "dormir";
small_A = regA "parve" ; -- !!! This one should be preferably a prefix adjective small_A = mkA "parve" ; -- !!! This one should be preferably a prefix adjective
snake_N = regN "serpente" ; snake_N = mkN "serpente" ;
sock_N = regN "calcetta" ; sock_N = mkN "calcetta" ;
speak_V2 = dirV2 (regV "parlar") ;-- ??? speak_V2 = mkV2 (mkV "parlar") ;-- ???
star_N = regN "stella" ; star_N = mkN "stella" ;
steel_N = regN "aciero" ; steel_N = mkN "aciero" ;
stone_N = regN "petra" ; stone_N = mkN "petra" ;
stove_N = regN "estufa" ; stove_N = mkN "estufa" ;
student_N = regN "studente" ; student_N = mkN "studente" ;
stupid_A = regA "nescie" ; stupid_A = mkA "nescie" ;
sun_N = regN "sol" ; sun_N = mkN "sol" ;
switch8off_V2 = dirV2 (regV "extinguer"); switch8off_V2 = mkV2 (mkV "extinguer");
switch8on_V2 = dirV2 (regV "accender") ; switch8on_V2 = mkV2 (mkV "accender") ;
table_N = regN "tablula" ; table_N = mkN "tablula" ;
talk_V3 = (prepV3 deP (prepV2 aP (regV "parlar"))) ; talk_V3 = mkV3 (mkV "parlar") deP aP ;
teacher_N = regN "professor" ; teacher_N = mkN "professor" ;
teach_V2 = dirV2 (regV "inseniar"); -- ??? aP (preposition is what?) teach_V2 = mkV2 (mkV "inseniar"); -- ??? aP (preposition is what?)
television_N = regN "television" ; television_N = mkN "television" ;
thick_A = regA "spisse" ; thick_A = mkA "spisse" ;
thin_A = regA "magre" ; thin_A = mkA "magre" ;
train_N = regN "convoyo" ; -- ??? train_N = mkN "convoyo" ; -- ???
travel_V = regV "viagiar" ; travel_V = mkV "viagiar" ;
tree_N = regN "tarbore" ; tree_N = mkN "tarbore" ;
---- trousers_N = regN "pantalon" ; --- ??? funky plural in the Abstract lexicon... ---- trousers_N = mkN "pantalon" ; --- ??? funky plural in the Abstract lexicon...
ugly_A = regA "ugly" ; ugly_A = mkA "ugly" ;
understand_V2 = dirV2 (regV "comprender"); understand_V2 = mkV2 (mkV "comprender");
university_N = regN "universitate" ; university_N = mkN "universitate" ;
village_N = regN "village" ; village_N = mkN "village" ;
wait_V2 = dirV2 (regV "wait") ; wait_V2 = mkV2 (mkV "wait") ;
walk_V = (regV "ambular") ; walk_V = (mkV "ambular") ;
warm_A = regA "calde" ; warm_A = mkA "calde" ;
war_N = regN "guerra" ; war_N = mkN "guerra" ;
watch_V2 = dirV2 (regV "spectar") ; watch_V2 = mkV2 (mkV "spectar") ;
water_N = regN "aqua" ; water_N = mkN "aqua" ;
white_A = regA "albe" ; white_A = mkA "albe" ;
window_N = regN "fenestra" ; window_N = mkN "fenestra" ;
wine_N = regN "vino" ; wine_N = mkN "vino" ;
win_V2 = dirV2 (regV "ganiar"); win_V2 = mkV2 (mkV "ganiar");
woman_N = regN "femina"; woman_N = mkN "femina";
wonder_VQ = mkVQ (reflV (regV "demandar")) ; wonder_VQ = mkVQ (reflV (mkV "demandar")) ;
wood_N = regN "ligno"; -- or silva ... wood_N = mkN "ligno"; -- or silva ...
write_V2 = dirV2 (regV "scriber"); write_V2 = mkV2 (mkV "scriber");
yellow_A = regA "jalne" ; yellow_A = mkA "jalne" ;
young_A = regA "juvene" ; young_A = mkA "juvene" ;
lin lin
do_V2 = dirV2 (regV "facer"); do_V2 = mkV2 (mkV "facer");
add_V3 = prepV3 aP (dirV2 (regV "additionar")); add_V3 = mkV3 (mkV "additionar") noPrep aP;
already_Adv = mkAdv "jam" ; already_Adv = mkAdv "jam" ;
animal_N = regN "animal" ; animal_N = mkN "animal" ;
ashes_N = regN "cinere" ; -- plural only??? ashes_N = mkN "cinere" ; -- plural only???
back_N = regN "dorso" ; back_N = mkN "dorso" ;
bark_N = regN "cortice" ; bark_N = mkN "cortice" ;
belly_N = regN "ventre" ; belly_N = mkN "ventre" ;
bite_V2 = dirV2 (regV "morder"); bite_V2 = mkV2 (mkV "morder");
blood_N = regN "sanguine" ; blood_N = mkN "sanguine" ;
blow_V = regV "sufflar"; blow_V = mkV "sufflar";
bone_N = regN "osso" ; bone_N = mkN "osso" ;
breast_N = regN "pectore" ; breast_N = mkN "pectore" ;
breathe_V = dirV2 (regV "respirar") ; breathe_V = mkV "respirar" ;
burn_V = regV "arder"; burn_V = mkV "arder";
cloud_N = regN "nube" ; cloud_N = mkN "nube" ;
correct_A = (regA "correcte") ; correct_A = (mkA "correcte") ;
count_V2 = dirV2 (regV "numerar") ; count_V2 = mkV2 (mkV "numerar") ;
cut_V2 = dirV2 (regV "secar"); cut_V2 = mkV2 (mkV "secar");
day_N = regN "die" ; day_N = mkN "die" ;
dig_V = regV "fossar"; dig_V = mkV "fossar";
dry_A = regA "sic" ; dry_A = mkA "sic" ;
dull_A = regA "enoiose" ; dull_A = mkA "enoiose" ;
dust_N = regN "pulvere" ; dust_N = mkN "pulvere" ;
ear_N = regN "aure" ; ear_N = mkN "aure" ;
earth_N = regN "terra" ; earth_N = mkN "terra" ;
egg_N = regN "ovo" ; egg_N = mkN "ovo" ;
eye_N = regN "oculo" ; eye_N = mkN "oculo" ;
fall_V = regV "cader" ; fall_V = mkV "cader" ;
far_Adv = mkAdv "lontano" ; far_Adv = mkAdv "lontano" ;
fat_N = regN "grasse" ; fat_N = mkN "grasse" ;
fear_V2 = dirV2 (regV "timer") ; fear_V2 = mkV2 (mkV "timer") ;
feather_N = regN "pluma" ; feather_N = mkN "pluma" ;
fight_V2 = dirV2 (regV "combattar"); fight_V2 = mkV2 (mkV "combattar");
fingernail_N = regN "ungual"; fingernail_N = mkN "ungual";
fire_N = regN "foco" ; fire_N = mkN "foco" ;
float_V = regV "flottar" ; float_V = mkV "flottar" ;
flow_V = regV "flucto" ; flow_V = mkV "flucto" ;
flower_N = regN "flore" ; flower_N = mkN "flore" ;
fly_V = regV "volar" ; fly_V = mkV "volar" ;
fog_N = regN "bruma" ; fog_N = mkN "bruma" ;
foot_N = regN "pede"; foot_N = mkN "pede";
forest_N = regN "silva" ; forest_N = mkN "silva" ;
freeze_V = regV "gelar"; freeze_V = mkV "gelar";
full_A = regA "plen" ; full_A = mkA "plen" ;
give_V3 = prepV3 aP (dirV2 (regV "dar")) ; give_V3 = mkV3 (mkV "dar") noPrep aP ;
grammar_N = regN "grammatica" ; grammar_N = mkN "grammatica" ;
grass_N = regN "herba" ; grass_N = mkN "herba" ;
guts_N = regN "tripas" ; -- !!!: no singular guts_N = mkN "tripas" ; -- !!!: no singular
hair_N = regN "pilo" ; hair_N = mkN "pilo" ;
hand_N = regN "mano" ; hand_N = mkN "mano" ;
head_N = regN "capite" ; head_N = mkN "capite" ;
heart_N = regN "corde" ; heart_N = mkN "corde" ;
heavy_A = regA "pesante" ; heavy_A = mkA "pesante" ;
hit_V2 = dirV2 (regV "frappar") ; hit_V2 = mkV2 (mkV "frappar") ;
hold_V2 = dirV2 (regV "retener") ; hold_V2 = mkV2 (mkV "retener") ;
horn_N = regN "corno" ; horn_N = mkN "corno" ;
hunt_V2 = dirV2 (regV "chassar") ; hunt_V2 = mkV2 (mkV "chassar") ;
husband_N = regN "sposo"; husband_N = mkN "sposo";
ice_N = regN "glacie" ; ice_N = mkN "glacie" ;
john_PN = regPN "John" ; john_PN = mkPN "John" ;
jump_V = regV "saltar" ; jump_V = mkV "saltar" ;
kill_V2 = dirV2 (regV "occider") ; kill_V2 = mkV2 (mkV "occider") ;
knee_N = regN "genu" ; knee_N = mkN "genu" ;
language_N = regN "linguage" ; language_N = mkN "linguage" ;
laugh_V = regV "rider" ; laugh_V = mkV "rider" ;
leaf_N = regN "folio" ; leaf_N = mkN "folio" ;
left_Ord = ss "leve" ; left_Ord = ss "leve" ;
leg_N = regN "gamba" ; leg_N = mkN "gamba" ;
lie_V = regV "mentir"; lie_V = mkV "mentir";
liver_N = regN "hepate" ; liver_N = mkN "hepate" ;
louse_N = regN "pediculo"; louse_N = mkN "pediculo";
mouth_N = regN "bucca" ; mouth_N = mkN "bucca" ;
name_N = regN "nomine" ; name_N = mkN "nomine" ;
near_A = regA "proxime" ; near_A = mkA "proxime" ;
neck_N = regN "collo" ; neck_N = mkN "collo" ;
night_N = regN "nocte" ; night_N = mkN "nocte" ;
nose_N = regN "naso" ; nose_N = mkN "naso" ;
now_Adv = mkAdv "nunc" ; now_Adv = mkAdv "nunc" ;
number_N = regN "numero" ; number_N = mkN "numero" ;
person_N = regN "homine" ; person_N = mkN "homine" ;
play_V = regV "jocar" ; play_V = mkV "jocar" ;
pull_V2 = dirV2 (regV "traher") ; pull_V2 = mkV2 (mkV "traher") ;
push_V2 = dirV2 (regV "pulsar") ; push_V2 = mkV2 (mkV "pulsar") ;
put_V2 = dirV2 (regV "placar"); put_V2 = mkV2 (mkV "placar");
question_N = regN "question" ; question_N = mkN "question" ;
rain_N = regN "pluvia" ; rain_N = mkN "pluvia" ;
ready_A = regA "preste" ; ready_A = mkA "preste" ;
reason_N = regN "ration" ; reason_N = mkN "ration" ;
right_Ord = ss "dextra" ; right_Ord = ss "dextra" ;
road_N = regN "via" ; road_N = mkN "via" ;
root_N = regN "radice" ; root_N = mkN "radice" ;
rope_N = regN "corda" ; rope_N = mkN "corda" ;
rotten_A = (regA "corrupte") ; rotten_A = (mkA "corrupte") ;
round_A = regA "ronde" ; round_A = mkA "ronde" ;
rub_V2 = dirV2 (regV "fircar") ; rub_V2 = mkV2 (mkV "fircar") ;
rule_N = regN "regula" ; rule_N = mkN "regula" ;
salt_N = regN "sal" ; salt_N = mkN "sal" ;
sand_N = regN "sablo" ; sand_N = mkN "sablo" ;
scratch_V2 = dirV2 (regV "grattar") ; scratch_V2 = mkV2 (mkV "grattar") ;
seed_N = regN "semine" ; seed_N = mkN "semine" ;
sew_V = regV "suer"; sew_V = mkV "suer";
sharp_A = regA "trenchante" ; sharp_A = mkA "trenchante" ;
sing_V = regV "cantar"; sing_V = mkV "cantar";
sit_V = regV "seder"; sit_V = mkV "seder";
skin_N = regN "pelle" ; skin_N = mkN "pelle" ;
sky_N = regN "celo" ; sky_N = mkN "celo" ;
smell_V = regV "oler" ; smell_V = mkV "oler" ;
smoke_N = regN "fumar" ; smoke_N = mkN "fumar" ;
smooth_A = regA "lisie" ; smooth_A = mkA "lisie" ;
snow_N = regN "niva" ; snow_N = mkN "niva" ;
song_N = regN "canto" ; song_N = mkN "canto" ;
spit_V = regV "sputar"; spit_V = mkV "sputar";
split_V2 = dirV2 (regV "finder"); split_V2 = mkV2 (mkV "finder");
squeeze_V2 = dirV2 (regV "comprimer") ; squeeze_V2 = mkV2 (mkV "comprimer") ;
stab_V2 = dirV2 (regV "dagar") ; stab_V2 = mkV2 (mkV "dagar") ;
stand_V = regV "star"; stand_V = mkV "star";
stick_N = regN "baston" ; stick_N = mkN "baston" ;
stop_V = regV "stoppar" ; stop_V = mkV "stoppar" ;
straight_A = regA "directe" ; straight_A = mkA "directe" ;
suck_V2 = dirV2 (regV "suger") ; suck_V2 = mkV2 (mkV "suger") ;
swell_V = (regV "turger"); swell_V = (mkV "turger");
swim_V = (regV "natada"); swim_V = (mkV "natada");
tail_N = regN "cauda" ; tail_N = mkN "cauda" ;
think_V = regV "pensar"; think_V = mkV "pensar";
throw_V2 = dirV2 (regV "jectar") ; throw_V2 = mkV2 (mkV "jectar") ;
tie_V2 = dirV2 (regV "ligar") ; tie_V2 = mkV2 (mkV "ligar") ;
today_Adv = mkAdv "hodie" ; today_Adv = mkAdv "hodie" ;
tongue_N = regN "lingua" ; tongue_N = mkN "lingua" ;
tooth_N = regN "dente"; tooth_N = mkN "dente";
turn_V = regV "tornar" ; turn_V = mkV "tornar" ;
uncertain_A = regA "incerte" ; uncertain_A = mkA "incerte" ;
vomit_V = regV "vomir" ; vomit_V = mkV "vomir" ;
wash_V2 = dirV2 (regV "abluer") ; wash_V2 = mkV2 (mkV "abluer") ;
wet_A = regA "humid" ; ---- wet_A = mkA "humid" ; ----
wide_A = regA "large" ; wide_A = mkA "large" ;
wife_N = regN "sposa"; wife_N = mkN "sposa";
wind_N = regN "vento" ; wind_N = mkN "vento" ;
wing_N = regN "ala" ; wing_N = mkN "ala" ;
wipe_V2 = dirV2 (regV "essugar") ; wipe_V2 = mkV2 (mkV "essugar") ;
worm_N = regN "verme" ; worm_N = mkN "verme" ;
year_N = regN "anno" ; year_N = mkN "anno" ;
-- other_A = regA "altere" ; -- other_A = mkA "altere" ;
---- added 4/6/2007 ---- added 4/6/2007
-- --
oper oper

View File

@@ -29,23 +29,17 @@ resource ParadigmsIna = open
(Predef=Predef), (Predef=Predef),
Prelude, Prelude,
MorphoIna, MorphoIna,
CatIna CatIna,
CommonX
in { in {
--2 Parameters --2 Parameters
-- --
-- To abstract over gender names, we define the following identifiers. -- To abstract over gender names, we define the following identifiers.
oper
male : Sex = Male ;
female : Sex = Female ;
oper oper
-- Gender : Type ;
-- There is no grammatical gender in interlingua.
---- To abstract over number names, we define the following.
--
-- Number : Type ;
--
-- singular : Number ;
-- plural : Number ;
-- To abstract over case names, we define the following. -- To abstract over case names, we define the following.
nominative : Case ; nominative : Case ;
@@ -63,7 +57,7 @@ oper
--2 Nouns --2 Nouns
-- --
-- All nouns are regular, so one should use $regN$ to construct them. -- All nouns are regular, so one should use $mkN$ to construct them.
--3 Relational nouns --3 Relational nouns
-- --
@@ -96,6 +90,7 @@ oper
-- Adverbs modifying adjectives and sentences can also be formed. -- Adverbs modifying adjectives and sentences can also be formed.
mkAdA : Str -> AdA ; mkAdA : Str -> AdA ;
mkAdN : Str -> AdA ;
--2 Prepositions --2 Prepositions
-- --
@@ -124,20 +119,22 @@ oper
-- I decided to provide the following combinators for forming verbs with -- I decided to provide the following combinators for forming verbs with
-- complex grammar rules: -- complex grammar rules:
prepV2 : Prep -> V -> V2 ; mkV2 = overload {
prepV3 : Prep -> V2 -> V3 ; mkV2 : V -> Prep -> V2 = prepV2 ;
dirV2 : V -> V2 ; mkV2 : V -> V2 = dirV2 ;
} ;
mkV3 : V -> Prep -> Prep -> V3 ;
mkV0 : V -> V0 ; mkV0 : V -> V0 ;
mkVS : V -> VS ; mkVS : V -> VS ;
-- mkV2S : V -> Prep -> V2S ; mkV2S : V -> Prep -> V2S ;
-- mkVV : V -> VV ; mkVV : V -> VV ;
mkV2V : Prep -> Prep -> V -> V2V ; mkV2V : V -> Prep -> Prep -> V2V ;
mkVA : V -> VA ; mkVA : V -> VA ;
mkV2A : Prep -> Prep -> V -> V2A ; mkV2A : V -> Prep -> Prep -> V2A ;
mkVQ : V -> VQ ; mkVQ : V -> VQ ;
mkV2Q : Prep -> V -> V2Q ; mkV2Q : V -> Prep -> V2Q ;
mkAS : A -> AS ; mkAS : A -> AS ;
-- mkA2S : A -> Prep -> A2S ; -- mkA2S : A -> Prep -> A2S ;
@@ -163,7 +160,7 @@ oper
dative = Dat ; dative = Dat ;
ablative = Abl ; ablative = Abl ;
regN s = nounReg s ** {lock_N = <>}; mkN s = nounReg s ** {lock_N = <>};
compN : N -> Str -> N; compN : N -> Str -> N;
compN n s = {s = \\x => n.s ! x ++ s; lock_N = <>} ; compN n s = {s = \\x => n.s ! x ++ s; lock_N = <>} ;
@@ -173,7 +170,7 @@ oper
prepN3 : Prep -> N2 -> N3; prepN3 : Prep -> N2 -> N3;
prepN2 = \p,n -> n ** {lock_N2 = <> ; p2 = p.s; c2 = p.c} ; prepN2 = \p,n -> n ** {lock_N2 = <> ; p2 = p.s; c2 = p.c} ;
prepN3 = \p,n -> n ** {lock_N3 = <> ; p3 = p.s; c3 = p.c} ; prepN3 = \p,n -> n ** {lock_N3 = <> ; p3 = p.s; c3 = p.c} ;
regN2 n = prepN2 (mkPrep [] genitive) (regN n) ** {lock_N2 = <>}; regN2 n = prepN2 (mkPrep [] genitive) (mkN n) ** {lock_N2 = <>};
----3 Relational common noun phrases ----3 Relational common noun phrases
---- ----
@@ -187,12 +184,20 @@ oper
-- cnN2 = \n,p -> n ** {lock_N2 = <> ; c2 = p.s} ; -- cnN2 = \n,p -> n ** {lock_N2 = <> ; c2 = p.s} ;
-- cnN3 = \n,p,q -> n ** {lock_N3 = <> ; c2 = p.s ; c3 = q.s} ; -- cnN3 = \n,p,q -> n ** {lock_N3 = <> ; c2 = p.s ; c3 = q.s} ;
-- --
regPN n = regGenPN n; mkPN : Str -> PN = regGenPN;
regGenPN n = {s = n; lock_PN = <>} ;
-- nounPN n = {s = n.s ! singular ; g = n.g ; lock_PN = <>} ; mkLN : Str -> LN = \s -> lin LN {s=s};
-- mkGN : Str -> Sex -> GN = \s,g -> lin GN {s=s; g=g};
-- mk2A a b = mkAdjective a a a b ** {lock_A = <>} ; mkSN = overload {
regA a = regAdjective a ** {lock_A = <>} ; mkSN : Str -> SN = \s -> lin SN {s=\\_ => s; pl=s};
mkSN : Str -> Str -> Str -> SN = \m,f,pl -> lin SN {s=table {Male=>m; Female=>f}; pl=pl};
} ;
regGenPN : Str -> PN ;
regGenPN s = {s = s; lock_PN = <>} ;
mkA : Str -> A ;
mkA a = regAdjective a ** {lock_A = <>} ;
mkA2 a p = a ** {c2 = casePrep p.s p.c ; lock_A2 = <>} ; mkA2 a p = a ** {c2 = casePrep p.s p.c ; lock_A2 = <>} ;
@@ -201,114 +206,49 @@ oper
mkAdv x = ss x ** {lock_Adv = <>} ; mkAdv x = ss x ** {lock_Adv = <>} ;
mkAdV x = ss x ** {lock_AdV = <>} ; mkAdV x = ss x ** {lock_AdV = <>} ;
mkAdA x = ss x ** {lock_AdA = <>} ; mkAdA x = ss x ** {lock_AdA = <>} ;
mkAdN x = ss x ** {lock_AdA = <>} ;
mkPrep p c = ss p ** {c = c; lock_Prep = <>} ; mkPrep p c = ss p ** {c = c; lock_Prep = <>} ;
noPrep = mkPrep [] accusative ; noPrep = mkPrep [] accusative ;
-- Verb-formation combinators. -- Verb-formation combinators.
regV : Str -> V; mkV : Str -> V;
regV s = mkVerb s ** {lock_V = <>}; mkV s = mkVerb s ** {lock_V = <>};
prepV2 p v = v ** {c2 = p.c; p2 = p.s ; lock_V2 = <>} ; prepV2 : V -> Prep -> V2 ;
prepV3 p v = v ** {c3 = p.c; p3 = p.s ; lock_V3 = <>} ; prepV2 v p = v ** {c2 = p.c; p2 = p.s ; lock_V2 = <>} ;
dirV2 = prepV2 noPrep ;
mkVS v = v ** {lock_VS = <>} ; dirV2 : V -> V2 ;
-- mkVV v = { dirV2 v = prepV2 v noPrep ;
-- s = table {VVF vf => v.s ! vf ; _ => variants {}} ;
-- isAux = False ; lock_VV = <> mkV3 v p1 p2 = v ** {c2 = p1.c; p2 = p1.s ; c3 = p2.c; p3 = p2.s ; lock_V3 = <>} ;
-- } ;
mkVQ v = v ** {lock_VQ = <>} ; mkVS v = v ** {lock_VS = <>} ;
mkVV v = v ** {lock_VV = <>} ;
mkVQ v = v ** {lock_VQ = <>} ;
V0 : Type = V ; V0 : Type = V ;
--- V2S, V2V, V2Q : Type = V2 ; --- V2S, V2V, V2Q : Type = V2 ;
AS, A2S, AV : Type = A ; AS, A2S, AV : Type = A ;
A2V : Type = A2 ; A2V : Type = A2 ;
-- --
mkV0 v = v ** {lock_V = <>} ; mkV0 v = v ** {lock_V = <>} ;
-- mkV2S v p = prepV2 v p ** {lock_V2 = <>} ; mkV2S v p = prepV2 v p ** {lock_V2S = <>} ;
mkV2V p t v = prepV2 p v ** {s4 = t ; lock_V2V = <>} ; mkV2V v p t = prepV2 v p ** {s4 = t ; lock_V2V = <>} ;
mkVA v = v ** {lock_VA = <>} ; mkVA v = v ** {lock_VA = <>} ;
mkV2A p2 p3 v = (prepV3 p3 (prepV2 p2 v)) ** {lock_V2A = <>} ; mkV2A v p2 p3 = mkV3 v p2 p3 ** {lock_V2A = <>} ;
mkV2Q p v = prepV2 p v ** {lock_V2Q = <>} ; mkV2Q p v = prepV2 p v ** {lock_V2Q = <>} ;
mkAS v = v ** {lock_A = <>} ; mkAS v = v ** {lock_A = <>} ;
-- mkA2S v p = mkA2 v p ** {lock_A = <>} ; mkAV v = v ** {lock_A = <>} ;
mkAV v = v ** {lock_A = <>} ; mkA2V v p = mkA2 v p ** {lock_A2 = <>} ;
mkA2V v p = mkA2 v p ** {lock_A2 = <>} ;
-- pre-overload API and overload definitions -- pre-overload API and overload definitions
regN : Str -> N ; mkN : Str -> N ;
-- mk2N : (man,men : Str) -> N ;
-- genderN : Gender -> N -> N ;
-- compN : Str -> N -> N ;
--
--
--
-- mk2A : (free,freely : Str) -> A ;
regA : Str -> A ;
--
-- mkA = overload {
-- mkA : Str -> A = regA ;
-- mkA : (fat,fatter : Str) -> A = \fat,fatter ->
-- mkAdjective fat fatter (init fatter + "st") (fat + "ly") ** {lock_A = <>} ;
-- mkA : (good,better,best,well : Str) -> A = \a,b,c,d ->
-- mkAdjective a b c d ** {lock_A = <>}
-- } ;
--
-- compoundA = compoundADeg ;
--
--
-- mk5V : (go, goes, went, gone, going : Str) -> V ;
-- regV : (cry : Str) -> V ;
-- reg2V : (stop, stopped : Str) -> V;
-- irregV : (drink, drank, drunk : Str) -> V ;
-- irreg4V : (run, ran, run, running : Str) -> V ;
--
-- -- Use reg2V instead
-- regDuplV : Str -> V ;
-- -- Use irreg4V instead
-- irregDuplV : (get, got, gotten : Str) -> V ;
--
------ obsolete mkInterj : Str -> Interj = \s -> lin Interj {s=s};
-- mkVoc : Str -> Voc = variants {} ;
---- Comparison adjectives may two more forms.
--
-- ADeg : Type ;
--
-- mkADeg : (good,better,best,well : Str) -> ADeg ;
--
---- The regular pattern recognizes two common variations:
---- "-e" ("rude" - "ruder" - "rudest") and
---- "-y" ("happy - happier - happiest - happily")
--
-- regADeg : Str -> ADeg ; -- long, longer, longest
--
---- However, the duplication of the final consonant is nor predicted,
---- but a separate pattern is used:
--
-- duplADeg : Str -> ADeg ; -- fat, fatter, fattest
--
---- If comparison is formed by "more", "most", as in general for
---- long adjective, the following pattern is used:
--
-- compoundADeg : A -> ADeg ; -- -/more/most ridiculous
--
---- From a given $ADeg$, it is possible to get back to $A$.
--
-- adegA : ADeg -> A ;
--
--
regPN : Str -> PN ;
regGenPN : Str -> PN ; -- John, John's
--
---- Sometimes you can reuse a common noun as a proper name, e.g. "Bank".
--
-- nounPN : N -> PN ;
} ; } ;

View File

@@ -4,7 +4,6 @@ concrete StructuralIna of Structural = CatIna **
flags optimize=all ; flags optimize=all ;
oper oper
--- mkPrep = P.mkPrep;
pp : Str -> Prep = \s-> P.mkPrep s Acc; pp : Str -> Prep = \s-> P.mkPrep s Acc;
lin lin
above_Prep = pp "supra"; above_Prep = pp "supra";
@@ -22,8 +21,8 @@ concrete StructuralIna of Structural = CatIna **
but_PConj = ss "sed" ; but_PConj = ss "sed" ;
by8agent_Prep = pp "per" ; by8agent_Prep = pp "per" ;
by8means_Prep = pp "per" ; by8means_Prep = pp "per" ;
can_VV = P.regV "poter"; can_VV = P.mkVV (P.mkV "poter");
can8know_VV = P.regV "saper"; can8know_VV = P.mkVV (P.mkV "saper");
during_Prep = pp "durante" ; during_Prep = pp "durante" ;
either7or_DConj = sd2 "o" "o" ** {n = Sg} ; either7or_DConj = sd2 "o" "o" ** {n = Sg} ;
everybody_NP = regNP "totos" ; everybody_NP = regNP "totos" ;
@@ -49,7 +48,7 @@ concrete StructuralIna of Structural = CatIna **
more_CAdv = {s = "plus" ; p = "que"} ; more_CAdv = {s = "plus" ; p = "que"} ;
most_Predet = ss ("le"++"plus"); most_Predet = ss ("le"++"plus");
much_Det = mkDeterminer Sg "tanto" ; much_Det = mkDeterminer Sg "tanto" ;
must_VV = P.regV "deber"; must_VV = P.mkV "deber";
no_Utt = ss "no" ; no_Utt = ss "no" ;
on_Prep = P.mkPrep "super" Acc; on_Prep = P.mkPrep "super" Acc;
only_Predet = ss "unic" ; only_Predet = ss "unic" ;
@@ -81,8 +80,8 @@ concrete StructuralIna of Structural = CatIna **
too_AdA = ss "alsi" ; too_AdA = ss "alsi" ;
to_Prep = P.mkPrep "" Dat; to_Prep = P.mkPrep "" Dat;
under_Prep = pp "infra" ; under_Prep = pp "infra" ;
very_AdA = ss "multo" ; very_AdA = P.mkAdA "multo" ;
want_VV = P.regV "want" ; want_VV = P.mkVV (P.mkV "want") ;
we_Pron = mkPron "nos" "nos" "nostre" Pp1; we_Pron = mkPron "nos" "nos" "nostre" Pp1;
whatPl_IP = mkIP "que" Pl ; whatPl_IP = mkIP "que" Pl ;
whatSg_IP = mkIP "que" Sg ; whatSg_IP = mkIP "que" Sg ;