diff options
| author | aarne <aarne@chalmers.se> | 2009-06-22 15:39:08 +0000 |
|---|---|---|
| committer | aarne <aarne@chalmers.se> | 2009-06-22 15:39:08 +0000 |
| commit | e89fdae2fa1626348d8025824a7469252fa85e42 (patch) | |
| tree | c7d46bbd0494043b4bd6f917a25a7687517d0547 /next-lib/src/interlingua | |
| parent | 3049b59b35b25381a7c6787444165c200d66e08b (diff) | |
next-lib renamed to lib, lib to old-lib
Diffstat (limited to 'next-lib/src/interlingua')
27 files changed, 0 insertions, 2099 deletions
diff --git a/next-lib/src/interlingua/AdjectiveIna.gf b/next-lib/src/interlingua/AdjectiveIna.gf deleted file mode 100644 index 4b54a3cfe..000000000 --- a/next-lib/src/interlingua/AdjectiveIna.gf +++ /dev/null @@ -1,44 +0,0 @@ -concrete AdjectiveIna of Adjective = CatIna ** open ResIna, Prelude in { - - lin - - PositA a = { - s = \\_ => a.s ! AAdj Posit ; --- isPre = a.isPre -- TODO: support adjectives that can be optionally placed before. - isPre = False - } ; - - ComparA a np = { - s = \\_ => a.s ! AAdj Compar ++ "que" ++ np.s ! Nom ; - isPre = False - } ; - --- $SuperlA$ belongs to determiner syntax in $Noun$. - - ComplA2 a np = { - s = \\_ => a.s ! AAdj Posit ++ a.c2 ++ np.s ! Acc ; - isPre = False - } ; - - ReflA2 a = { - s = \\ag => a.s ! AAdj Posit ++ a.c2 ++ reflPron ! ag ; - isPre = False - } ; - - SentAP ap sc = { - s = \\a => ap.s ! a++ sc.s ; - isPre = False - } ; - - AdAP ada ap = { - s = \\a => ada.s ++ ap.s ! a; - isPre = ap.isPre - } ; - - UseA2 a = { - s = \\_ => a.s ! AAdj Posit ; --- isPre = a.isPre -- TODO: support adjectives that can be optionally placed before. - isPre = False - } ; - -} diff --git a/next-lib/src/interlingua/AdverbIna.gf b/next-lib/src/interlingua/AdverbIna.gf deleted file mode 100644 index 325aba408..000000000 --- a/next-lib/src/interlingua/AdverbIna.gf +++ /dev/null @@ -1,21 +0,0 @@ -concrete AdverbIna of Adverb = CatIna ** open ResIna, Prelude in { - - lin - PositAdvAdj a = {s = a.s ! AAdv} ; - PrepNP prep np = {s = prep.s ++ np.s ! Acc} ; - - ComparAdvAdj cadv a np = { - s = cadv.s ++ a.s ! AAdv ++ "que" ++ np.s ! Nom - } ; - ComparAdvAdjS cadv a s = { - s = cadv.s ++ a.s ! AAdv ++ "que" ++ s.s - } ; - - - AdAdv = cc2 ; - - SubjS = cc2 ; - - AdnCAdv cadv = {s = cadv.s ++ "que"} ; - -} diff --git a/next-lib/src/interlingua/AllIna.gf b/next-lib/src/interlingua/AllIna.gf deleted file mode 100644 index e4e8593aa..000000000 --- a/next-lib/src/interlingua/AllIna.gf +++ /dev/null @@ -1,3 +0,0 @@ ---# -path=.:../abstract:../common:prelude - -concrete AllIna of AllInaAbs = LangIna ; diff --git a/next-lib/src/interlingua/AllInaAbs.gf b/next-lib/src/interlingua/AllInaAbs.gf deleted file mode 100644 index f4752f5e6..000000000 --- a/next-lib/src/interlingua/AllInaAbs.gf +++ /dev/null @@ -1,3 +0,0 @@ ---# -path=.:../abstract:../common:prelude - -abstract AllInaAbs = Lang ; diff --git a/next-lib/src/interlingua/CatIna.gf b/next-lib/src/interlingua/CatIna.gf deleted file mode 100644 index 2a463890d..000000000 --- a/next-lib/src/interlingua/CatIna.gf +++ /dev/null @@ -1,82 +0,0 @@ -concrete CatIna of Cat = CommonX ** open ResIna, Prelude in { - - flags optimize=all_subs ; - - lincat - --- Tensed/Untensed - - S = {s : Str} ; - QS = {s : Order => Str} ; -- order is necessary to embed a "semantical" question into other propositions. - RS = {s : Agr => Str} ; - SSlash = SS ** {p2 : Str; c2 : Case} ; - --- Sentence - - Cl = ResIna.Clause; - ClSlash = ResIna.Clause ** {p2 : Str; c2 : Case} ; - Imp = {s : Polarity => Number => Str} ; - --- Question - - QCl = ResIna.Clause; - IP = {s : Case => Str; n : Number} ; - IComp = {s : Str} ; - IQuant = {s : Number => Str} ; - IDet = {s : Str ; n : Number} ; - --- Relative - - RCl = {s : Bool => ResIna.Tense => Anteriority => Polarity => Agr => Str ; c : Case} ; - RP = {s : Case => Str; a : Agr} ; -- number for "tal que / tales que"; person for reflexives - --- Verb - - VP = ResIna.VP; - VPSlash = ResIna.VP ** {p2 : Str; c2 : Case} ; - Comp = {s : Agr => Str} ; - --- Adjective - - AP = {s : Agr => Str ; isPre : Bool} ; - --- Noun - - CN = {s : Number => Str} ; - NP = ResIna.NP; - Pron = ResIna.NP ** {possForm : Str}; - Det = {s : Case => Str ; n : Number} ; - Predet, Ord = {s : Str}; - Card = {s : Str; n : Number } ; - Num = {s : Str; n : Number } ; - Quant = {s : Number => Case => Str} ; - --- Numeral - - Numeral = {s : CardOrd => Str ; n : Number} ; - Digits = {s : CardOrd => Str ; n : Number ; tail : DTail} ; - --- Structural - - Conj = {s1,s2 : Str ; n : Number} ; - Subj = {s : Str} ; - Prep = {c : Case; s : Str} ; - --- Open lexical classes, e.g. Lexicon - - V, VS, VQ, VA = Verb ; - V2, V2V, V2S, V2Q = - Verb ** {p2 : Str; c2 : Case} ; -- preposition + case of the complement. - V3, V2A = Verb ** {p2, p3 : Str; c2, c3 : Case} ; - VV = Verb; - - A = {s : AForm => Str} ; -- TODO: optional pre-adjectives - A2 = {s : AForm => Str ; c2 : Str} ; - - N = {s : Number => Str} ; - N2 = {s : Number => Str} ** {p2 : Str; c2 : Case} ; - N3 = {s : Number => Str} ** {p2,p3 : Str; c2,c3 : Case} ; - - PN = {s : Str} ; - -} diff --git a/next-lib/src/interlingua/ConjunctionIna.gf b/next-lib/src/interlingua/ConjunctionIna.gf deleted file mode 100644 index 280ed40f1..000000000 --- a/next-lib/src/interlingua/ConjunctionIna.gf +++ /dev/null @@ -1,38 +0,0 @@ -concrete ConjunctionIna of Conjunction = - CatIna ** open ResIna, Coordination, Prelude in { - - flags optimize=all_subs ; - - lin - - ConjS = conjunctDistrSS ; - - ConjAdv = conjunctDistrSS ; - - ConjNP conj ss = conjunctDistrTable Case conj ss ** { - isPronoun = False; - a = {n = conjNumber conj.n ss.a.n ; p = ss.a.p} - } ; - - ConjAP conj ss = conjunctDistrTable Agr conj ss ** { - isPre = ss.isPre - } ; - --- These fun's are generated from the list cat's. - - BaseS = twoSS ; - ConsS = consrSS comma ; - BaseAdv = twoSS ; - ConsAdv = consrSS comma ; - BaseNP x y = twoTable Case x y ** {a = conjAgr x.a y.a} ; - ConsNP xs x = consrTable Case comma xs x ** {a = conjAgr xs.a x.a} ; - BaseAP x y = twoTable Agr x y ** {isPre = andB x.isPre y.isPre} ; - ConsAP xs x = consrTable Agr comma xs x ** {isPre = andB xs.isPre x.isPre} ; - - lincat - [S] = {s1,s2 : Str} ; - [Adv] = {s1,s2 : Str} ; - [NP] = {s1,s2 : Case => Str ; a : Agr} ; - [AP] = {s1,s2 : Agr => Str ; isPre : Bool} ; - -} diff --git a/next-lib/src/interlingua/ExtraIna.gf b/next-lib/src/interlingua/ExtraIna.gf deleted file mode 100644 index c9afb0328..000000000 --- a/next-lib/src/interlingua/ExtraIna.gf +++ /dev/null @@ -1,52 +0,0 @@ -concrete ExtraIna of ExtraInaAbs = CatIna ** - open ResIna, Coordination, Prelude in { --- --- lin --- GenNP np = {s = \\_ => np.s ! Gen} ; --- ComplBareVS v s = insertObj (\\_ => s.s) (predV v) ; --- --- StrandRelSlash rp slash = { --- s = \\t,a,p,_ => rp.s ! RC Acc ++ slash.s ! t ! a ! p ! ODir ++ slash.c2 ; --- c = Acc --- } ; --- EmptyRelSlash rp slash = { --- s = \\t,a,p,_ => slash.s ! t ! a ! p ! ODir ++ slash.c2 ; --- c = Acc --- } ; --- --- StrandQuestSlash ip slash = --- {s = \\t,a,b,q => --- (mkQuestion (ss (ip.s ! Acc)) slash).s ! t ! a ! b ! q ++ slash.c2 --- }; --- --- lincat --- VPI = {s : VPIForm => Agr => Str} ; --- [VPI] = {s1,s2 : VPIForm => Agr => Str} ; --- --- lin --- BaseVPI = twoTable2 VPIForm Agr ; --- ConsVPI = consrTable2 VPIForm Agr comma ; --- --- MkVPI vp = { --- s = \\v,a => vp.ad ++ vp.inf ++ vp.s2 ! a --- } ; --- ConjVPI = conjunctTable2 VPIForm Agr ; --- ComplVPIVV vv vpi = --- insertObj (\\a => (if_then_Str vv.isAux [] "to") ++ vpi.s ! VPIInf ! a) (predVV vv) ; --- --- UncNegCl t a cl = {s = t.s ++ a.s ++ cl.s ! t.t ! a.a ! neg ! ODir} ; --- UncNegQCl t a cl = {s = \\q => t.s ++ a.s ++ cl.s ! t.t ! a.a ! neg !q} ; --- UncNegRCl t a cl = { --- s = \\r => t.s ++ a.s ++ cl.s ! t.t ! a.a ! neg ! r ; --- c = cl.c --- } ; --- UncNegImpSg imp = {s = imp.s ! neg ! ImpF Sg False} ; --- UncNegImpPl imp = {s = imp.s ! neg ! ImpF Pl False} ; --- --- CompoundCN a b = {s = \\n,c => a.s ! Sg ! Nom ++ b.s ! n ! c} ; --- --- --- oper --- neg = CNeg False ; --- -} diff --git a/next-lib/src/interlingua/GrammarIna.gf b/next-lib/src/interlingua/GrammarIna.gf deleted file mode 100644 index b873d0004..000000000 --- a/next-lib/src/interlingua/GrammarIna.gf +++ /dev/null @@ -1,21 +0,0 @@ ---# -path=.:../abstract:../common:prelude - -concrete GrammarIna of Grammar = - NounIna, - VerbIna, - AdjectiveIna, - AdverbIna, - NumeralIna, - SentenceIna, - QuestionIna, - RelativeIna, - ConjunctionIna, - PhraseIna, - TextX, - StructuralIna, - IdiomIna - ** { - -flags startcat = Phr ; unlexer = text ; lexer = text ; - -} ; diff --git a/next-lib/src/interlingua/IdiomIna.gf b/next-lib/src/interlingua/IdiomIna.gf deleted file mode 100644 index 62b9d4152..000000000 --- a/next-lib/src/interlingua/IdiomIna.gf +++ /dev/null @@ -1,34 +0,0 @@ -concrete IdiomIna of Idiom = CatIna ** open Prelude, ResIna in { - - flags optimize=all_subs ; - - lin - ImpersCl vp = mkClause "il" Sp3 vp ; - GenericCl vp = mkClause "on" Sp3 vp ; - - CleftNP np rs = mkClause "lo" Sp3 - (insertObj [] Acc (mkInvarNP (rs.s ! Sp3)) - (insertObj [] Acc np - (predV_ esserV))); - -- ??? number/case agreement - - CleftAdv ad s = mkClause "lo" Sp3 - (insertObj [] Acc (mkInvarNP ("que" ++ s.s)) - (insertObj [] Acc (mkInvarNP (ad.s)) (predV_ esserV))) ; - - - ExistNP np = - mkClause "il" Sp3 ((insertObj "" Acc np) (predV_ haberV)) ; - -- Il ha colonias que non pote reclamar mesmo un tal origine. (sample text 3) - - ExistIP ip = mkQuestion {s=ip.s ! Acc} (mkClause "il" Sp3 (predV_ haberV)) ; - -- Never seen the above, but we can deduce it exists, since it's - -- merely an interrogative form of ExistNP. - - ProgrVP vp = vp; -- progressive tense is the same as present in Interlingua. - -- (parag. 80+ of Grammatica de Interlingua) - - ImpPl1 vp = {s = "que" ++ (mkClause "nos" {n = Pl ; p = P1} vp).s ! variants {True;False} ! Pres ! Simul ! Pos ! ODir}; - -} - diff --git a/next-lib/src/interlingua/IrregIna.gf b/next-lib/src/interlingua/IrregIna.gf deleted file mode 100644 index 3e4a21d0e..000000000 --- a/next-lib/src/interlingua/IrregIna.gf +++ /dev/null @@ -1,7 +0,0 @@ ---# -path=.:prelude:../abstract:../common - -concrete IrregIna of IrregInaAbs = CatIna ** open ParadigmsIna in { - -flags optimize=values ; - -} diff --git a/next-lib/src/interlingua/IrregInaAbs.gf b/next-lib/src/interlingua/IrregInaAbs.gf deleted file mode 100644 index d4f91f7f2..000000000 --- a/next-lib/src/interlingua/IrregInaAbs.gf +++ /dev/null @@ -1,2 +0,0 @@ -abstract IrregInaAbs = Cat ** { -} diff --git a/next-lib/src/interlingua/LangIna.gf b/next-lib/src/interlingua/LangIna.gf deleted file mode 100644 index 58fe6e92c..000000000 --- a/next-lib/src/interlingua/LangIna.gf +++ /dev/null @@ -1,11 +0,0 @@ ---# -path=.:../abstract:../common:../prelude - -concrete LangIna of Lang = - GrammarIna, - LexiconIna - ** { - -flags startcat = Phr ; unlexer = text ; lexer = text ; - -} - diff --git a/next-lib/src/interlingua/LexiconIna.gf b/next-lib/src/interlingua/LexiconIna.gf deleted file mode 100644 index 7876b69da..000000000 --- a/next-lib/src/interlingua/LexiconIna.gf +++ /dev/null @@ -1,370 +0,0 @@ ---# -path=.:prelude - -concrete LexiconIna of Lexicon = CatIna ** - open (R=ResIna), ParadigmsIna, IrregIna, Prelude in { - - flags - optimize=values ; - - lin - airplane_N = regN "avion"; - answer_V2S = prepV2 aP (regV "responder"); - apartment_N = regN "appartamento"; - apple_N = regN "pomo"; - art_N = regN "arte" ; - ask_V2Q = mkV2Q aP (regV "demandar") ; - baby_N = regN "bebe" ; - bad_A = regA "mal"; - bank_N = regN "banca" ; - beautiful_A = regA "belle" ; - become_VA = mkVA (regV "devenir") ; - beer_N = regN "bira" ; - beg_V2V = mkV2V noPrep aP (regV "rogar") ; - big_A = regA "magne" ; - bike_N = regN "bicycletta" ; - bird_N = regN "ave" ; - black_A = regA "nigre" ; - blue_A = regA "blau" ; - boat_N = regN "barca" ; - book_N = regN "libro" ; - boot_N = regN "botta"; - boss_N = regN "chef" ; - boy_N = regN "puero" ; - bread_N = regN "pan" ; - break_V2 = dirV2 (regV "rumper") ; - broad_A = regA "large" ; - brother_N2 = regN2 "fratre"; - brown_A = regA "brun" ; - butter_N = regN "butyro" ; - buy_V2 = dirV2 (regV "compra"); - camera_N = compN (regN "apparato" ) ["photographic"] ; - cap_N = regN "bonetto" ; - car_N = regN "automobile" ; - carpet_N = regN "tapete" ; - cat_N = regN "catto" ; - ceiling_N = regN "tecto" ; -- of room ??? - chair_N = regN "sede"; - cheese_N = regN "caseo"; - child_N = regN "infante" ; - church_N = regN "ecclesia" ; - city_N = regN "urbe" ; -- ??? citate - clean_A = regA "munde" ; - clever_A = regA "intelligente" ; - close_V2 = dirV2 (regV "clauder") ; - coat_N = regN "mantello" ; - cold_A = regA "frigide" ; - come_V = regV "venir" ; - computer_N = regN "computator" ; - country_N = regN "pais" ; - cousin_N = regN "cosino" ; ---- cosina - cow_N = regN "vacca" ; - die_V = regV "morir" ; - dirty_A = regA "immunde" ; - distance_N3 = prepN3 aP (prepN2 deP (regN "distantia")) ; --- ??? wtf - doctor_N = regN "medico"; - dog_N = regN "can"; - door_N = regN "porta"; - drink_V2 = dirV2 (regV "biber"); - easy_A2V = mkA2V (regA "facile") aP ; - eat_V2 = dirV2 (regV "eder"); - empty_A = regA "vacue" ; - enemy_N = regN "inimico" ; - factory_N = regN "fabrica" ; - father_N2 = regN2 "patre" ; - fear_VS = mkVS (regV "timer") ; - find_V2 = dirV2 (regV "trovar") ; - fish_N = regN "pisce" ; - floor_N = regN "pavimento" ; - forget_V2 = dirV2 (regV "oblidar"); - fridge_N = regN "refrigerator"; - friend_N = regN "amico" ; - fruit_N = regN "fructo" ; - fun_AV = mkAV (regA "famusante") ; - garden_N = regN "horto" ; - girl_N = regN "puera" ; - glove_N = regN "guanto" ; - go_V = regV "ir"; - gold_N = regN "auro" ; - good_A = R.mkAdjective "bon" "melior" "optime"; - green_A = regA "verde" ; - harbour_N = regN "porto" ; - hate_V2 = dirV2 (regV "detestar0") ; - hat_N = regN "cappello" ; - hear_V2 = dirV2 (regV "audir"); - hill_N = regN "monticulo" ; - hope_VS = mkVS (regV "sperar") ; - horse_N = regN "cavallo" ; - hot_A = regA "calide" ; - house_N = regN "domo" ; - important_A = regA "importante" ; - industry_N = regN "industria" ; - iron_N = regN "ferro" ; - king_N = regN "rege" ; - know_V2 = dirV2 (regV "cognoscer") ; -- ??? - lake_N = regN "laco" ; - lamp_N = regN "lampa" ; - learn_V2 = dirV2 (regV "apprender") ; - leather_N = regN "corio" ; - leave_V2 = prepV2 deP (regV "partir"); - like_V2 = dirV2 (regV "amar") ; - listen_V2 = dirV2 (regV "ascoltar") ; - live_V = (regV "vive") ; - long_A = regA "longe" ; - lose_V2 = dirV2 (regV "perder"); - love_N = regN "amor" ; - love_V2 = dirV2 (regV "adorar") ; - man_N = regN "viro"; - married_A2 = mkA2 (regA "sponsate") aP ; - meat_N = regN "carne" ; - milk_N = regN "lacte" ; - moon_N = regN "luna" ; - mother_N2 = regN2 "matre" ; - mountain_N = regN "montania" ; - music_N = regN "musica" ; - narrow_A = regA "stricte" ; - new_A = regA "nove" ; - newspaper_N = regN "jornal" ; - oil_N = regN "oleo" ; - old_A = regA "vetule" ; - open_V2 = dirV2 (regV "operir") ; - paint_V2A = mkV2A noPrep inP (regV "pinger") ; -- ??? preposition might be wrong. (did not find a sample usage) - paper_N = regN "papiro" ; - paris_PN = regPN "Paris" ; - peace_N = regN "pace" ; - pen_N = regN "penna" ; - planet_N = regN "planeta" ; - plastic_N = regN "plastico" ; - play_V2 = dirV2 (regV "sonar") ; -- ??? eg. play the piano - policeman_N = regN "policero" ; - priest_N = regN "prestre" ; - probable_AS = mkAS (regA "probabile") ; - queen_N = regN "regina" ; - radio_N = regN "radio" ; - rain_V0 = mkV0 (regV "pluvar") ; - read_V2 = dirV2 (regV "leger"); - red_A = regA "rubie" ; - religion_N = regN "religion" ; - restaurant_N = regN "restaurant" ; - river_N = regN "riviera" ; - rock_N = regN "rocca" ; - roof_N = regN "tecto" ; - rubber_N = regN "cauchu" ; - run_V = regV "currer"; - say_VS = mkVS (regV "dicer"); - school_N = regN "schola" ; - science_N = regN "scientia"; - sea_N = regN "mar" ; - seek_V2 = dirV2 (regV "cercar"); - see_V2 = dirV2 (regV "vider"); - sell_V3 = prepV3 aP (dirV2 (regV "vender")); - send_V3 = prepV3 aP (dirV2 (regV "inviar")); - sheep_N = regN "ove"; - ship_N = regN "nave" ; - shirt_N = regN "camisa" ; - shoe_N = regN "scapra" ; - shop_N = regN "boteca" ; - short_A = regA "curte" ; - silver_N = regN "argento" ; - sister_N = regN "soror" ; - sleep_V = regV "dormir"; - small_A = regA "parve" ; -- !!! This one should be preferably a prefix adjective - snake_N = regN "serpente" ; - sock_N = regN "calcetta" ; - speak_V2 = dirV2 (regV "parlar") ;-- ??? - star_N = regN "stella" ; - steel_N = regN "aciero" ; - stone_N = regN "petra" ; - stove_N = regN "estufa" ; - student_N = regN "studente" ; - stupid_A = regA "nescie" ; - sun_N = regN "sol" ; - switch8off_V2 = dirV2 (regV "extinguer"); - switch8on_V2 = dirV2 (regV "accender") ; - table_N = regN "tablula" ; - talk_V3 = (prepV3 deP (prepV2 aP (regV "parlar"))) ; - teacher_N = regN "professor" ; - teach_V2 = dirV2 (regV "inseniar"); -- ??? aP (preposition is what?) - television_N = regN "television" ; - thick_A = regA "spisse" ; - thin_A = regA "magre" ; - train_N = regN "convoyo" ; -- ??? - travel_V = regV "viagiar" ; - tree_N = regN "tarbore" ; - ---- trousers_N = regN "pantalon" ; --- ??? funky plural in the Abstract lexicon... - ugly_A = regA "ugly" ; - understand_V2 = dirV2 (regV "comprender"); - university_N = regN "universitate" ; - village_N = regN "village" ; - wait_V2 = dirV2 (regV "wait") ; - walk_V = (regV "ambular") ; - warm_A = regA "calde" ; - war_N = regN "guerra" ; - watch_V2 = dirV2 (regV "spectar") ; - water_N = regN "aqua" ; - white_A = regA "albe" ; - window_N = regN "fenestra" ; - wine_N = regN "vino" ; - win_V2 = dirV2 (regV "ganiar"); - woman_N = regN "femina"; - wonder_VQ = mkVQ (reflV (regV "demandar")) ; - wood_N = regN "ligno"; -- or silva ... - write_V2 = dirV2 (regV "scriber"); - yellow_A = regA "jalne" ; - young_A = regA "juvene" ; - -lin - do_V2 = dirV2 (regV "facer"); - add_V3 = prepV3 aP (dirV2 (regV "additionar")); - already_Adv = mkAdv "jam" ; - animal_N = regN "animal" ; - ashes_N = regN "cinere" ; -- plural only??? - back_N = regN "dorso" ; - bark_N = regN "cortice" ; - belly_N = regN "ventre" ; - bite_V2 = dirV2 (regV "morder"); - blood_N = regN "sanguine" ; - blow_V = regV "sufflar"; - bone_N = regN "osso" ; - breast_N = regN "pectore" ; - breathe_V = dirV2 (regV "respirar") ; - burn_V = regV "arder"; - cloud_N = regN "nube" ; - correct_A = (regA "correcte") ; - count_V2 = dirV2 (regV "numerar") ; - cut_V2 = dirV2 (regV "secar"); - day_N = regN "die" ; - dig_V = regV "fossar"; - dry_A = regA "sic" ; - dull_A = regA "enoiose" ; - dust_N = regN "pulvere" ; - ear_N = regN "aure" ; - earth_N = regN "terra" ; - egg_N = regN "ovo" ; - eye_N = regN "oculo" ; - fall_V = regV "cader" ; - far_Adv = mkAdv "lontano" ; - fat_N = regN "grasse" ; - fear_V2 = dirV2 (regV "timer") ; - feather_N = regN "pluma" ; - fight_V2 = dirV2 (regV "combattar"); - fingernail_N = regN "ungual"; - fire_N = regN "foco" ; - float_V = regV "flottar" ; - flow_V = regV "flucto" ; - flower_N = regN "flore" ; - fly_V = regV "volar" ; - fog_N = regN "bruma" ; - foot_N = regN "pede"; - forest_N = regN "silva" ; - freeze_V = regV "gelar"; - full_A = regA "plen" ; - give_V3 = prepV3 aP (dirV2 (regV "dar")) ; - grammar_N = regN "grammatica" ; - grass_N = regN "herba" ; - guts_N = regN "tripas" ; -- !!!: no singular - hair_N = regN "pilo" ; - hand_N = regN "mano" ; - head_N = regN "capite" ; - heart_N = regN "corde" ; - heavy_A = regA "pesante" ; - hit_V2 = dirV2 (regV "frappar") ; - hold_V2 = dirV2 (regV "retener") ; - horn_N = regN "corno" ; - hunt_V2 = dirV2 (regV "chassar") ; - husband_N = regN "sposo"; - ice_N = regN "glacie" ; - john_PN = regPN "John" ; - jump_V = regV "saltar" ; - kill_V2 = dirV2 (regV "occider") ; - knee_N = regN "genu" ; - language_N = regN "linguage" ; - laugh_V = regV "rider" ; - leaf_N = regN "folio" ; - left_Ord = ss "leve" ; - leg_N = regN "gamba" ; - lie_V = regV "mentir"; - liver_N = regN "hepate" ; - louse_N = regN "pediculo"; - mouth_N = regN "bucca" ; - name_N = regN "nomine" ; - near_A = regA "proxime" ; - neck_N = regN "collo" ; - night_N = regN "nocte" ; - nose_N = regN "naso" ; - now_Adv = mkAdv "nunc" ; - number_N = regN "numero" ; - person_N = regN "homine" ; - play_V = regV "jocar" ; - pull_V2 = dirV2 (regV "traher") ; - push_V2 = dirV2 (regV "pulsar") ; - put_V2 = dirV2 (regV "placar"); - question_N = regN "question" ; - rain_N = regN "pluvia" ; - ready_A = regA "preste" ; - reason_N = regN "ration" ; - right_Ord = ss "dextra" ; - road_N = regN "via" ; - root_N = regN "radice" ; - rope_N = regN "corda" ; - rotten_A = (regA "corrupte") ; - round_A = regA "ronde" ; - rub_V2 = dirV2 (regV "fircar") ; - rule_N = regN "regula" ; - salt_N = regN "sal" ; - sand_N = regN "sablo" ; - scratch_V2 = dirV2 (regV "grattar") ; - seed_N = regN "semine" ; - sew_V = regV "suer"; - sharp_A = regA "trenchante" ; - sing_V = regV "cantar"; - sit_V = regV "seder"; - skin_N = regN "pelle" ; - sky_N = regN "celo" ; - smell_V = regV "oler" ; - smoke_N = regN "fumar" ; - smooth_A = regA "lisie" ; - snow_N = regN "niva" ; - song_N = regN "canto" ; - spit_V = regV "sputar"; - split_V2 = dirV2 (regV "finder"); - squeeze_V2 = dirV2 (regV "comprimer") ; - stab_V2 = dirV2 (regV "dagar") ; - stand_V = regV "star"; - stick_N = regN "baston" ; - stop_V = regV "stoppar" ; - straight_A = regA "directe" ; - suck_V2 = dirV2 (regV "suger") ; - swell_V = (regV "turger"); - swim_V = (regV "natada"); - tail_N = regN "cauda" ; - think_V = regV "pensar"; - throw_V2 = dirV2 (regV "jectar") ; - tie_V2 = dirV2 (regV "ligar") ; - today_Adv = mkAdv "hodie" ; - tongue_N = regN "lingua" ; - tooth_N = regN "dente"; - turn_V = regV "tornar" ; - uncertain_A = regA "incerte" ; - vomit_V = regV "vomir" ; - wash_V2 = dirV2 (regV "abluer") ; - wet_A = regA "humid" ; ---- - wide_A = regA "large" ; - wife_N = regN "sposa"; - wind_N = regN "vento" ; - wing_N = regN "ala" ; - wipe_V2 = dirV2 (regV "essugar") ; - worm_N = regN "verme" ; - year_N = regN "anno" ; --- other_A = regA "altere" ; ----- added 4/6/2007 --- - oper --- aboutP = mkPrep "about" ; --- atP = mkPrep "at" ; --- forP = mkPrep "for" ; --- fromP = mkPrep "from" ; - inP = mkPrep "in" accusative; --- onP = mkPrep "on" ; - aP = mkPrep "" dative; -- can generate clitics, fuses with the def. det. "le" - deP = mkPrep "" ablative; -- can not generate clitics, fuses with the def. det. "le", pronoun form: "de mi". -} ; diff --git a/next-lib/src/interlingua/MorphoIna.gf b/next-lib/src/interlingua/MorphoIna.gf deleted file mode 100644 index 3ad94282a..000000000 --- a/next-lib/src/interlingua/MorphoIna.gf +++ /dev/null @@ -1,64 +0,0 @@ ---# -path=.:../../prelude - ---1 A Simple Interlingua Resource Morphology --- --- Aarne Ranta 2003--2005 --- JP Bernardy 2007 --- --- This resource morphology contains definitions needed in the resource --- syntax. To build a lexicon, it is better to use $ParadigmsIna$, which --- gives a higher-level access to this module. - -resource MorphoIna = ResIna ** open Prelude, (Predef=Predef) in { - - flags optimize=all ; - ---2 Nouns --- --- For conciseness and abstraction, we define a worst-case macro for --- noun inflection. It is used for defining special case that --- only need one string as argument. - -oper - CommonNoun : Type = {s : Number => Str}; -- nouns are inflected in number - - nounGen : Str -> Str -> CommonNoun = \mec,mecs -> - {s = table {Sg => mec; - Pl => mecs - }; - }; - - nounReg : Str -> CommonNoun = \cas -> - let s = case last cas of { - "a" | "e" | "i" | "o" | "u" => "s" ; - "c" => "hes"; - _ => "es" - } - in nounGen cas (cas + s) ; - ---2 Determiners - - mkDeterminer : Number -> Str -> {s : Case => Str ; n : Number} = \n,s -> - {s = \\c=>casePrep "" c ++ s ; n = n} ; - - mkIDeterminer : Number -> Str -> {s : Str ; n : Number} = \n,s -> - {s = s ; n = n} ; - ---2 Adjectives --- --- To form the adjectival and the adverbial forms, 3 strings are needed --- in the worst case. (bon, melior, optime) - - Adjective = {s : AForm => Str} ; - --- However, most adjectives can be inflected using the final character. - - regAdjective : Str -> Adjective = \clar -> - mkAdjective clar ("plus" ++ clar) ("le" ++ "plus" ++ clar) ; - ---3 Verbs - - -- defined in resina - -} ; - diff --git a/next-lib/src/interlingua/NounIna.gf b/next-lib/src/interlingua/NounIna.gf deleted file mode 100644 index a61bca010..000000000 --- a/next-lib/src/interlingua/NounIna.gf +++ /dev/null @@ -1,120 +0,0 @@ -concrete NounIna of Noun = CatIna ** open ResIna, Prelude in { - - flags optimize=all_subs ; - - lin - DetCN det cn = { - s = \\c => det.s!c ++ cn.s ! det.n ; - a = agrP3 det.n ; - isPronoun = False - }; -- iste pizza - - UsePN pn = { - s = \\_ => pn.s; - a = agrP3 Sg; - isPronoun = False - }; - - UsePron p = p; -- io, tu, ille, etc. - - PredetNP pred np = { - s = \\c => pred.s ++ np.s ! c ; - isPronoun = False; - a = np.a - } ; - - PPartNP np v2 = { - s = \\c => np.s ! c ++ v2.s ! VPPart ; - isPronoun = False; - a = np.a - } ; - - AdvNP np adv = { - isPronoun = False; - s = \\c => np.s ! c ++ adv.s ; - a = Sp3; - } ; - --- version 1.4 changes by AR 16/6/2008 - - DetNP det = { - s = \\c => det.s ! c ; - a = agrP3 det.n ; - isPronoun = False - }; -- iste pizza - - DetQuantOrd quant num ord = { - s = \\c=>(quant.s ! num.n !c) ++ num.s ++ ord.s ; - n = num.n - } ; - - DetQuant quant num = { - s = \\c=>(quant.s ! num.n !c) ++ num.s ; - n = num.n - } ; - - PossPron p = {s = \\_,c => casePrep [] c ++ p.possForm} ; - - NumPl = {s = []; n = Pl } ; - NumSg = {s = []; n = Sg } ; - - NumCard c = c ; - - NumDigits n = {s = n.s ! NCard ; n = n.n} ; - - OrdDigits n = {s = n.s ! NOrd} ; - - NumNumeral numeral = {s = numeral.s ! NCard; n = numeral.n } ; - OrdNumeral numeral = {s = numeral.s ! NOrd} ; - - AdNum adn num = {s = adn.s ++ num.s; n = num.n } ; - - OrdSuperl a = {s = a.s ! AAdj Superl} ; - - DefArt = {s = \\_ => table { - Dat => "al"; - Gen | Abl => "del"; - _ => "le"}} ; - - IndefArt = {s = - \\n,c => casePrep [] c ++ case n of { - Sg => "un" ; - Pl => [] - } - } ; - - MassNP cn = { - s = \\_ => cn.s ! Sg ; - a = agrP3 Sg; - isPronoun = False - }; - - UseN n = n ; - UseN2 n = n ; --- UseN3 n = n ; - Use2N3 f = {s = \\n => f.s ! n ; c2 = f.c2; p2 = f.p2} ; - Use3N3 f = {s = \\n => f.s ! n ; c2 = f.c3; p2 = f.p3} ; - - ComplN2 f x = {s = \\n => f.s ! n ++ f.p2 ++ x.s ! f.c2} ; - ComplN3 f x = {s = \\n => f.s ! n ++ f.p2 ++ x.s ! f.c2 ; c2 = f.c3; p2 = f.p3} ; - - AdjCN ap cn = { - s = \\n => preOrPost ap.isPre (ap.s ! agrP3 n) (cn.s ! n) - } ; - - RelCN cn rs = {s = \\n => cn.s ! n ++ rs.s ! agrP3 n} ; - AdvCN cn ad = {s = \\n => cn.s ! n ++ ad.s} ; - - SentCN cn sc = {s = \\n => cn.s ! n ++ sc.s} ; - - ApposCN cn np = {s = \\n => cn.s ! n ++ np.s ! Nom} ; - --- ??? The use of the Nom case is somewhat strange here. The - --- abstract rule is dubious anyway, so ... - - RelNP np rs = {s = - \\c => np.s ! c ++ "," ++ rs.s ! np.a ; - a = np.a ; - isPronoun = np.isPronoun ---- ?? AR - } ; - -} diff --git a/next-lib/src/interlingua/NumeralIna.gf b/next-lib/src/interlingua/NumeralIna.gf deleted file mode 100644 index e41167d4c..000000000 --- a/next-lib/src/interlingua/NumeralIna.gf +++ /dev/null @@ -1,94 +0,0 @@ -concrete NumeralIna of Numeral = CatIna ** open ResIna in { - - lincat - Digit = {s : DForm => CardOrd => Str} ; - Sub10 = {s : DForm => CardOrd => Str ; n : Number} ; - Sub100 = {s : CardOrd => Str ; n : Number} ; - Sub1000 = {s : CardOrd => Str ; n : Number} ; - Sub1000000 = {s : CardOrd => Str ; n : Number} ; - - lin num x = x ; - - lin n2 = mkNum "duo" "secunde" "vinti" "vintesime"; - lin n3 = mkNum "tres" "tertie" "trenta" "trentesime"; - lin n4 = mkNum "quatro" "quarte" "quaranta" "quarantesime"; - lin n5 = regNum "cinque" "quinte" ; - lin n6 = regNum "sex" "sexte" ; - lin n7 = regNum "septe" "septime" ; - lin n8 = regNum "octo" "octave" ; - lin n9 = regNum "novem" "none" ; - - lin pot01 = mkNum "un" "prime" "dece" "decime" ** {n = Sg} ; - lin pot0 d = d ** {n = Pl} ; - lin pot110 = regCardOrd "dece" ** {n = Pl} ; - lin pot111 = regCardOrd ["dece-un"] ** {n = Pl} ; - lin pot1to19 d = {s = \\c => "dece" ++ "-" ++ d.s ! unit ! c} ** {n = Pl} ; - lin pot0as1 n = {s = n.s ! unit} ** {n = n.n} ; - lin pot1 d = {s = d.s ! ten} ** {n = Pl} ; - lin pot1plus d e = { - s = \\c => d.s ! ten ! NCard ++ "-" ++ e.s ! unit ! c ; n = Pl} ; - lin pot1as2 n = n ; - lin pot2 d = {s = \\c => d.s ! unit ! NCard ++ mkCard c "cento"} ** {n = Pl} ; - lin pot2plus d e = { - s = \\c => d.s ! unit ! NCard ++ "cento" ++ e.s ! c ; n = Pl} ; - lin pot2as3 n = n ; - lin pot3 n = { - s = \\c => n.s ! NCard ++ mkCard c "mille" ; n = Pl} ; - lin pot3plus n m = { - s = \\c => n.s ! NCard ++ "mille" ++ m.s ! c ; n = Pl} ; - --- numerals as sequences of digits - - lincat - Dig = TDigit ; - - lin - IDig d = d ** {tail = T1} ; - - IIDig d i = { - s = \\o => d.s ! NCard ++ commaIf i.tail ++ i.s ! o ; - n = Pl ; - tail = inc i.tail - } ; - - -- I don't know the convention (and could not find it in the - -- grammar) so I just affix "e" to all numbers to indicate the - -- ordinal - - D_0 = mkDig "0" ; - D_1 = mkDig "1" ; - D_2 = mkDig "2" ; - D_3 = mkDig "3" ; - D_4 = mkDig "4" ; - D_5 = mkDig "5" ; - D_6 = mkDig "6" ; - D_7 = mkDig "7" ; - D_8 = mkDig "8" ; - D_9 = mkDig "9" ; - - oper - commaIf : DTail -> Str = \t -> case t of { - T3 => "," ; - _ => [] - } ; - - 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 + "e") ; - - mk3Dig : Str -> Str -> Number -> TDigit = \c,o,n -> { - s = table {NCard => c ; NOrd => o} ; - n = n - } ; - - TDigit = { - n : Number ; - s : CardOrd => Str - } ; - -} diff --git a/next-lib/src/interlingua/OverloadIna.gf b/next-lib/src/interlingua/OverloadIna.gf deleted file mode 100644 index 379dd33aa..000000000 --- a/next-lib/src/interlingua/OverloadIna.gf +++ /dev/null @@ -1 +0,0 @@ -resource OverloadIna = Overload with (Grammar = GrammarIna) ; diff --git a/next-lib/src/interlingua/ParadigmsIna.gf b/next-lib/src/interlingua/ParadigmsIna.gf deleted file mode 100644 index 62d963825..000000000 --- a/next-lib/src/interlingua/ParadigmsIna.gf +++ /dev/null @@ -1,314 +0,0 @@ ---# -path=.:../abstract:../../prelude:../common - ---1 Interlingua Lexical Paradigms --- --- Aarne Ranta 2003--2005 --- JP Bernardy 2007 --- --- 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 $MorphoIna.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$. --- However, this function should only seldom be needed: we have a --- separate module [``IrregIna`` ../../english/IrregIna.gf], --- which covers irregular verbss. - -resource ParadigmsIna = open - (Predef=Predef), - Prelude, - MorphoIna, - CatIna - in { ---2 Parameters --- --- To abstract over gender names, we define the following identifiers. - -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. - - nominative : Case ; - accusative : Case ; - genitive : Case ; - dative : Case ; - ablative : Case ; - - --- Prepositions are used in many-argument functions for rection. --- The resource category $Prep$ is used. - - - ---2 Nouns --- - --- All nouns are regular, so one should use $regN$ to construct them. - ---3 Relational nouns --- --- Relational nouns ("daughter of x") need a preposition. - --- The most common preposition is "of", and the following is a --- shortcut for regular relational nouns with "of". - - regN2 : Str -> N2 ; - ---2 Adjectives - --- All adjectives are regular, so on should use $regA$ to construct them. - ---3 Two-place adjectives - --- Two-place adjectives need a preposition for their second argument. - - mkA2 : A -> Prep -> A2 ; - - ---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 and an expected case. - - mkPrep : Str -> Case -> Prep ; - noPrep : Prep ; - ---2 Verbs --- --- Regular verbs should be constructed with $regV$. The 3 irregular verbs --- esser, haber and vader are available separately. - - ----- Reflexive verbs. ----- By default, verbs are not reflexive; this function makes them that. --- - reflV : V -> V ; - reflV v = {s = v.s ; part = v.part ; lock_V = v.lock_V ; isRefl = True} ; - - ---3 2 and many-place verbs - - --- I decided to provide the following combinators for forming verbs with --- complex grammar rules: - - prepV2 : Prep -> V -> V2 ; - prepV3 : Prep -> V2 -> V3 ; - dirV2 : V -> V2 ; - - - mkV0 : V -> V0 ; - mkVS : V -> VS ; --- mkV2S : V -> Prep -> V2S ; --- mkVV : V -> VV ; - mkV2V : Prep -> Prep -> V -> V2V ; - mkVA : V -> VA ; - mkV2A : Prep -> Prep -> V -> V2A ; - mkVQ : V -> VQ ; - mkV2Q : Prep -> V -> V2Q ; - - mkAS : A -> AS ; --- mkA2S : A -> Prep -> A2S ; - mkAV : A -> AV ; - mkA2V : A -> Prep -> A2V ; --- ----- Notice: categories $V2S, V2V, V2Q$ are in v 1.0 treated ----- just as synonyms of $V2$, and the second argument is given ----- as an adverb. Likewise $AS, A2S, AV, A2V$ are just $A$. ----- $V0$ is just $V$. --- - V0, V2S, V2V, V2Q : Type ; - AS, A2S, AV, A2V : Type ; --- -----. -----2 Definitions of paradigms ----- ----- The definitions should not bother the user of the API. So they are ----- hidden from the document. - nominative = Nom ; - accusative = Acc ; - genitive = Gen ; - dative = Dat ; - ablative = Abl ; - - regN s = nounReg s ** {lock_N = <>}; - - compN : N -> Str -> N; - compN n s = {s = \\x => n.s ! x ++ s; lock_N = <>} ; - - - prepN2 : Prep -> N -> N2; - prepN3 : Prep -> N2 -> N3; - prepN2 = \p,n -> n ** {lock_N2 = <> ; p2 = p.s; c2 = p.c} ; - prepN3 = \p,n -> n ** {lock_N3 = <> ; p3 = p.s; c3 = p.c} ; - regN2 n = prepN2 (mkPrep [] genitive) (regN n) ** {lock_N2 = <>}; - -----3 Relational common noun phrases ----- ----- In some cases, you may want to make a complex $CN$ into a ----- relational noun (e.g. "the old town hall of"). --- --- cnN2 : CN -> Prep -> N2 ; --- cnN3 : CN -> Prep -> Prep -> N3 ; --- ----- This is obsolete. --- cnN2 = \n,p -> n ** {lock_N2 = <> ; c2 = p.s} ; --- cnN3 = \n,p,q -> n ** {lock_N3 = <> ; c2 = p.s ; c3 = q.s} ; --- - regPN n = regGenPN n; - regGenPN n = {s = n; lock_PN = <>} ; --- nounPN n = {s = n.s ! singular ; g = n.g ; lock_PN = <>} ; --- --- mk2A a b = mkAdjective a a a b ** {lock_A = <>} ; - regA a = regAdjective a ** {lock_A = <>} ; - - mkA2 a p = a ** {c2 = casePrep p.s p.c ; lock_A2 = <>} ; - - - - mkAdv x = ss x ** {lock_Adv = <>} ; - mkAdV x = ss x ** {lock_AdV = <>} ; - mkAdA x = ss x ** {lock_AdA = <>} ; - - mkPrep p c = ss p ** {c = c; lock_Prep = <>} ; - noPrep = mkPrep [] accusative ; - - - -- Verb-formation combinators. - regV : Str -> V; - regV s = mkVerb s ** {lock_V = <>}; - - prepV2 p v = v ** {c2 = p.c; p2 = p.s ; lock_V2 = <>} ; - prepV3 p v = v ** {c3 = p.c; p3 = p.s ; lock_V3 = <>} ; - dirV2 = prepV2 noPrep ; - - mkVS v = v ** {lock_VS = <>} ; --- mkVV v = { --- s = table {VVF vf => v.s ! vf ; _ => variants {}} ; --- isAux = False ; lock_VV = <> --- } ; - mkVQ v = v ** {lock_VQ = <>} ; - - V0 : Type = V ; - V2S, V2V, V2Q : Type = V2 ; - AS, A2S, AV : Type = A ; - A2V : Type = A2 ; --- - mkV0 v = v ** {lock_V = <>} ; --- mkV2S v p = prepV2 v p ** {lock_V2 = <>} ; - mkV2V p t v = prepV2 p v ** {s4 = t ; lock_V2 = <>} ; - mkVA v = v ** {lock_VA = <>} ; - mkV2A p2 p3 v = (prepV3 p3 (prepV2 p2 v)) ** {lock_V2A = <>} ; - mkV2Q p v = prepV2 p v ** {lock_V2 = <>} ; - mkAS v = v ** {lock_A = <>} ; --- mkA2S v p = mkA2 v p ** {lock_A = <>} ; - mkAV v = v ** {lock_A = <>} ; - mkA2V v p = mkA2 v p ** {lock_A2 = <>} ; - - --- pre-overload API and overload definitions - regN : 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 --- ----- 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 ; - - - -} ; diff --git a/next-lib/src/interlingua/PhraseIna.gf b/next-lib/src/interlingua/PhraseIna.gf deleted file mode 100644 index f5fa8d77a..000000000 --- a/next-lib/src/interlingua/PhraseIna.gf +++ /dev/null @@ -1,24 +0,0 @@ -concrete PhraseIna of Phrase = CatIna ** open Prelude, ResIna in { - - lin - PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ; - - UttS s = s ; - UttQS qs = {s = qs.s ! OQuest}; - UttImpSg pol imp = {s = pol.s ++ imp.s ! pol.p ! Sg} ; - UttImpPl pol imp = {s = pol.s ++ imp.s ! pol.p ! Pl} ; - UttImpPol pol imp = {s = pol.s ++ imp.s ! pol.p ! Pl} ; - - UttIP ip = {s = ip.s ! Nom} ; -- ??? Dat, Abl also... - UttIAdv iadv = iadv ; - UttNP np = {s = np.s ! Nom} ; - UttVP vp = {s = infVP vp} ; - UttAdv adv = adv ; - - NoPConj = {s = []} ; - PConjConj conj = ss conj.s2 ; - - NoVoc = {s = []} ; - VocNP np = {s = "," ++ np.s ! Nom} ; - -} diff --git a/next-lib/src/interlingua/QuestionIna.gf b/next-lib/src/interlingua/QuestionIna.gf deleted file mode 100644 index 59d578ee3..000000000 --- a/next-lib/src/interlingua/QuestionIna.gf +++ /dev/null @@ -1,54 +0,0 @@ -concrete QuestionIna of Question = CatIna ** open ResIna, Prelude in { - - flags optimize=all_subs ; - - lin - QuestCl cl = { - s = \\use_irreg,t,a,p => - let cls = cl.s ! use_irreg ! t ! a ! p - in table { - OQuest => cls ! OQuest ; - ODir => "an" ++ cls ! ODir - } - } ; - - QuestVP qp vp = - let cl = mkClause (qp.s ! Nom) Sp3 vp - in {s = \\use_irreg,t,a,b,_ => cl.s ! use_irreg ! t ! a ! b ! ODir} ; - - QuestSlash ip slash = - mkQuestion (ss (slash.p2 ++ ip.s ! slash.c2)) slash ; - - QuestIAdv iadv cl = mkQuestion iadv cl ; - - QuestIComp icomp np = - mkQuestion icomp (mkClause (np.s ! Nom) np.a (predV_ esserV)) ; - - - PrepIP p ip = {s = p.s ++ ip.s ! Nom} ; - - AdvIP ip adv = { - s = \\c => ip.s ! c ++ adv.s ; - n = ip.n - } ; - - IdetCN idet cn = { - s = \\c => casePrep [] c ++ idet.s ++ cn.s ! idet.n; - n = idet.n - } ; - - IdetIP idet = { - s = \\c => casePrep [] c ++ idet.s ; - n = idet.n - } ; - - IdetQuant iquant num = { - s = iquant.s ! num.n ++ num.s ; - n = num.n - } ; - - CompIAdv a = a ; - - CompIP ip = ss (ip.s ! Nom) ; - -} diff --git a/next-lib/src/interlingua/RelativeIna.gf b/next-lib/src/interlingua/RelativeIna.gf deleted file mode 100644 index be3be3150..000000000 --- a/next-lib/src/interlingua/RelativeIna.gf +++ /dev/null @@ -1,53 +0,0 @@ -concrete RelativeIna of Relative = CatIna ** open ResIna in { - - flags optimize=all_subs ; - - lin - - RelCl cl = { - s = \\use_irreg,t,a,p,agr => - (case agr.n of {Sg => "tal"; Pl => "tales"}) ++ - "que" ++ cl.s ! use_irreg ! t ! a ! p ! ODir ; - c = Nom - } ; - - RelVP rp vp = { - s = \\use_irreg,t,a,p,agr => (mkClause (rp.s!Nom) agr vp).s ! use_irreg ! t ! a ! p ! ODir; - c = Nom - } ; - -- !!! person agreement is probably bad here; see below. - ----- Pied piping: "a que tu invia flores" - - RelSlash rp slash = { - s = \\use_irreg,t,a,p,agr => slash.p2 ++ rp.s ! slash.c2 ++ slash.s ! use_irreg ! t ! a ! p ! ODir ; - c = slash.c2; - } ; - -- !!! In the above The agreement feature of the RP does not match - -- the the (parametric!) agreement of the resulting clause. - -- Is it a bug? I believe there is the same behaviour in the english grammar. - - FunRP p np rp = { - s = \\c => np.s ! Acc ++ p.s ++ rp.s ! p.c ; - a = np.a - } ; - - - IdRP = { - -- TODO: variant: "le qual" - a = {p = P3; n = variants {Sg; Pl}}; - s = table { - Nom => quique; -- Le ultime traino que pote portar me ibi a tempore parti in cinque minutas - Gen => "cuje"; -- Le documentos cuje importantia esseva dubitose incriminava le spia - Acc => "que"; -- Le documentos que le spia portava con se esseva multo importante - Dat => "a" ++ quique; - Abl => "de" ++ quique - }} ; - - oper - quique = variants {"qui"; -- !!! Only for humans, only after a preposition. - -- This is extremely strange, because it does not match any Romance language I know. - -- For now just be lax and make it a variant of "que" - "que"}; - -} diff --git a/next-lib/src/interlingua/ResIna.gf b/next-lib/src/interlingua/ResIna.gf deleted file mode 100644 index e464db6b4..000000000 --- a/next-lib/src/interlingua/ResIna.gf +++ /dev/null @@ -1,355 +0,0 @@ ---# -path=.:../abstract:../common:../prelude - ---1 Interlingua 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 ResIna = 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 | Dat | Abl ; - -- Why do we need so many cases? - -- Interlingua has (optional) contractions: - -- "a le" -> "al" - -- "de le" -> "del" - -- so, we can't get away with mere prepositions "a" and "de" - -- but use Dative and Ablative to represent those. - -- Pronouns have different forms in Nominative and Accusative. - -- Genitive is used for possesives (which can also be pronominalized) - - oper - casePrep : Str -> Case -> Str = \prep,cas -> case cas of { - Dat => "a"; - Gen | Abl => "de"; - _ => prep - }; - - - --2 For $Verb$ - - -- These 7 forms are more than we need. (esser is irregular - -- only in pres, past, fut, cond so we could do with 5, but it makes - -- easy to reason about what happens.) - - param - VForm - = VInf - | VPres - | VPPart - | VPresPart - | VPast --# notpresent - | VFut --# notpresent - | VCond --# notpresent - ; - - param - VVariant - = VMono -- "creava" - | VSplit -- "ha create" -- !!! This is not implemented. One reason is that the split forms overlap with aux verb + participle as ajective. (Anterior form) - ; - - -- The order of sentence is needed already in $VP$. - Order = ODir | OQuest ; - - --2 For $Adjective$ - - AForm = AAdj Degree | AAdv ; - - --2 For $Relative$ - - -- RAgr = RNoAg | RAg {n : Number ; p : Person} ; - -- RCase = RPrep | RC Case ; - - --2 For $Numeral$ - - CardOrd = NCard | NOrd ; - DForm = unit | ten ; - - --2 Transformations between parameter types - - oper - Agr = {n : Number ; p : Person} ; - -- This is the agreement record for verb phrases, which is needed only for reflexive verbs. - - agrP3 : Number -> Agr = \n -> - {n = n ; p = P3} ; - - conjAgr : Agr -> Agr -> Agr = \a,b -> { - n = conjNumber a.n b.n ; - p = conjPerson a.p b.p - } ; - - - -- For each lexical category, here are the worst-case constructors. - mkAdjective : (_,_,_ : Str) -> {s : AForm => Str} = - \bon,melior,optime -> - let mente = case last bon of - {"c" => "amente"; - _ => "mente" - } - in { - s = table { - AAdj Posit => bon ; - AAdj Compar => melior ; - AAdj Superl => optime ; - AAdv => bon + mente - } - } ; - - - mkVerb : Str -> Verb = \crear-> - let crea = init crear - in {isRefl = False; - s = table { - VInf => crear; - VPres => crea; - VPast => crea + "va"; --# notpresent - VFut => crear + "a"; --# notpresent - VCond => crear + "ea"; --# notpresent - VPPart => case crear of { - rid + "er" => rid + "ite"; - _ => crea + "te" - }; - VPresPart => case crear of { - aud + "ir" => aud + "iente"; - _ => crea + "nte" - }}}; - - -- + The 3 (optionally) irregular verbs. (we only need haberV in this module) - esserV : Bool => Verb = \\use_irreg => - let reg = mkVerb "esser" - in {isRefl = False; - s = case use_irreg of { - True => table { - VPres => "es"; - VFut => "sera"; --# notpresent - VCond => "serea"; --# notpresent - VPast => "era"; --# notpresent - form => reg.s!form - }; - False => reg.s - } - }; - - haberV : Bool => Verb = \\use_irreg => - let reg = mkVerb "haber" - in {isRefl = False; - s = case use_irreg of { - True => table { - VPres => "ha"; - form => reg.s!form - }; - False => reg.s - } - }; - - vaderV : Bool => Verb = \\use_irreg => - let reg = mkVerb "vader" - in {isRefl = False; - s = case use_irreg of { - True => table { - VPres => "va"; - form => reg.s!form - }; - - False => reg.s - } - }; - - - mkIP : Str -> Number -> {s : Case => Str ; n : Number} = \qui,n -> {s = \\c=>casePrep [] c ++ qui; n = n}; - - mkPron : (io,me,mi : Str) -> Agr -> NP ** {possForm : Str} = - \io,me,mi,a -> - let mie = case last mi of { - "e" => mi; - _ => mi + "e" - } in - { - a = a; - s = table { - Nom => io ; - Gen => mie ; - _ => me - } ; - possForm = mi; - isPronoun = True - } ; - - - Sp1 : Agr = {n = Sg ; p = P1}; - Sp2 : Agr = {n = Sg ; p = P2}; - Sp3 : Agr = {n = Sg ; p = P3}; - Pp1 : Agr = {n = Pl ; p = P1}; - Pp2 : Agr = {n = Pl ; p = P2}; - Pp3 : Agr = {n = Pl ; p = P3}; - - -- make an invariant NP (not inflected) - mkInvarNP : Str -> NP = \str -> {a = Sp3; isPronoun = False; s = \\_=> str}; - - regNP : Str -> NP = mkInvarNP; - - artIndef = "un"; - artDef = "le" ; - - -- For $Verb$. - Verb : Type = { - s : VForm => Str ; - isRefl : Bool - } ; - - -- Dependency on Agr is there only because of reflexive pronouns! - VP : Type = { - s : Anteriority => Tense => Bool => {fin, inf : Str} ; - rest : Agr => Str; -- comes after the infinite part - clitics : Agr => Str; -- can be placed just before the finite or right after the infinite - prp : Str ; -- present participle (unused at the moment ???) - inf : Str ; -- the infinitive form ; VerbForms would be the logical place - } ; - NP : Type = { - isPronoun : Bool; - s : Case => Str; - a : Agr; - }; - -- Noun phrase that can be declined in person and number. (for reflexive pronouns) - NP' : Type = { - isPronoun : Bool; - s : Agr => Case => Str; - }; - - predV_ : (Bool => Verb) -> VP = \verb -> { - clitics = \\_ => []; - rest = \\_ => []; - s = table - {Simul => \\t,use_irreg => {fin = (verb!use_irreg).s ! (tenseToVFrom!t); inf = []} - ; --# notpresent - Anter => \\t,use_irreg => {fin = (haberV!use_irreg).s ! (tenseToVFrom!t); inf = (verb!use_irreg).s!VPPart} --# notpresent - }; - prp = (verb!False).s ! VPresPart; - inf = (verb!False).s ! VInf; - }; - - predV : Verb -> VP = \verb -> predV_ (\\_ => verb) ; - - tenseToVFrom = table { - Pres => VPres - ;Past => VPast; --# notpresent - Fut => VFut; --# notpresent - Cond => VCond --# notpresent - }; - - insertInvarObj : Str -> VP -> VP = \obj -> insertObj "" Acc (mkInvarNP obj); - - insertObj : Str -> Case -> NP -> VP -> VP - = \prep,c,obj,vp -> insertReflObj prep c {isPronoun = obj.isPronoun; s = \\agr => obj.s} vp; - - insertReflObj : Str -> Case -> NP' -> VP -> VP = \prep,c,obj,vp -> case obj.isPronoun of - { - -- !!! if the preposition is not empty, or - -- if the case is not [Dat, Acc] - -- then the pronoun cannot be inserted as a clitic. - True => { - inf = vp.inf; - prp = vp.prp; - s = vp.s; - clitics = \\agr => obj.s!agr!c ++ vp.clitics!agr; -- clitics are inserted in reverse order. - rest = vp.rest}; - False => { - inf = vp.inf; - prp = vp.prp; - s = vp.s; - clitics = vp.clitics; - rest = \\agr => vp.rest!agr ++ prep ++ obj.s!agr!c; - } }; - - infVP : VP -> Str = \vp -> variants { - vp.clitics ! Sp3 ++ vp.inf ++ vp.rest ! Sp3 ; - vp.inf ++ vp.clitics ! Sp3 ++ vp.rest ! Sp3 ; - }; - - posneg : Polarity -> Str = \b -> case b of { - Pos => [] ; - Neg => "non" - } ; - - - reflPron : Agr => Str = table { - {n = Sg ; p = P1} => "me" ; - {n = Sg ; p = P2} => "te" ; - {n = Sg ; p = P3} => "se" ; - {n = Pl ; p = P1} => "nos" ; - {n = Pl ; p = P2} => "vos" ; - {n = Pl ; p = P3} => "se" - } ; - - ---- For $Sentence$. - -- - Clause = {s : Bool => Tense => Anteriority => Polarity => Order => Str} ; - - mkClause : Str -> Agr -> VP -> Clause = - \subj,agr,vp -> - { - s = \\use_irreg,t,anter,b => - let v = vp.s!anter!t!use_irreg - in case use_irreg of { - True => table { - ODir => subj ++ posneg b ++ v.fin ++ v.inf ++ vp.clitics!agr ++ vp.rest!agr; - OQuest => posneg b ++ v.fin ++ subj ++ v.inf ++ vp.clitics!agr ++ vp.rest!agr - } ; - False => table { - ODir => subj ++ posneg b ++ vp.clitics!agr ++ v.fin ++ v.inf ++ vp.rest!agr; - OQuest => posneg b ++ vp.clitics!agr ++ v.fin ++ subj ++ v.inf ++ vp.rest!agr - } - } - }; - - - mkQuestion : - {s : Str} -> Clause -> Clause = \qu,cl -> - {s=\\use_irreg,t,a,p,o => qu.s ++ cl.s ! use_irreg ! t ! a ! p ! o}; - - - - -- For $Numeral$. - - oper mkNum : Str -> Str -> Str -> Str -> {s : DForm => CardOrd => Str} = - \duo,vinti,secunde,vintesime-> - {s = table { unit => table { - NCard => duo ; - NOrd => secunde}; - ten => table { - NCard => vinti; - NOrd => vintesime}}} ; - - oper regNum : Str -> Str -> {s : DForm => CardOrd => Str} = - \cinque,quinte -> - let cinqu : Str = case cinque of { - nov + "em"=> nov; - cinq_ + "e" => cinq_; - cinq_ + "o" => cinq_; - sex => sex} - in mkNum cinque quinte (cinqu + "anta") (cinqu + "esime"); - - regOrd : Str -> Str = \cent -> case cent of { - mill + "e" => mill + "esime"; - _ => cent + "esime"}; - - regCardOrd : Str -> {s : CardOrd => Str} = \ten -> - {s = table {NCard => ten ; NOrd => regOrd ten}} ; - - mkCard : CardOrd -> Str -> Str = \c,ten -> - (regCardOrd ten).s ! c ; - -} diff --git a/next-lib/src/interlingua/ResIna2.gf b/next-lib/src/interlingua/ResIna2.gf deleted file mode 100644 index e0e9d42f2..000000000 --- a/next-lib/src/interlingua/ResIna2.gf +++ /dev/null @@ -1,63 +0,0 @@ ---# -path=.:../abstract:../common:../../prelude - ---1 Interlingua 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 ResIna2 = 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 - VForm - = VInf - | VPres - | VPPart - | VPresPart - | VPast --# notpresent - | VFut --# notpresent - | VCond --# notpresent - ; - - oper - - - - mkVerb : Str -> Verb = \crear-> - let crea = init crear - in {s = table { - VInf => crear; - VPres => crea; - VPast => crea + "va"; - VFut => crear + "a"; - VCondit => crear + "ea"; - VPPart => case crear of { - rid + "er" => rid + "ite"; - _ => crea + "te" - }; - VPresPart => case crear of { - aud + "ir" => aud + "iente"; - _ => crea + "nte" - }}}; - - - ---- For $Verb$. - -- - Verb : Type = { - s : VForm => Str ; - -- isRefl : Bool - } ; - - -} diff --git a/next-lib/src/interlingua/SentenceIna.gf b/next-lib/src/interlingua/SentenceIna.gf deleted file mode 100644 index cc0640811..000000000 --- a/next-lib/src/interlingua/SentenceIna.gf +++ /dev/null @@ -1,45 +0,0 @@ -concrete SentenceIna of Sentence = CatIna ** open Prelude, ResIna in { - -flags optimize=all_subs ; - -lin - - PredVP np vp = mkClause (np.s ! Nom) np.a vp ; - - PredSCVP sc vp = mkClause sc.s Sp3 vp ; - - ImpVP vp = {s = \\pol,n=> (mkClause [] {n = n; p = P2} vp).s!variants {True;False}!Pres!Simul!pol!ODir}; - - SlashVP np vp = mkClause (np.s ! Nom) np.a vp ** {c2 = vp.c2; p2 = vp.p2} ; - - SlashVS np vs slash = - mkClause (np.s ! Nom) np.a - (insertInvarObj ("que" ++ slash.s) (predV vs)) ** - {c2 = slash.c2; p2 = slash.p2} ; - - AdvSlash slash adv = { - s = \\use_irreg,t,a,b,o => slash.s ! use_irreg ! t ! a ! b ! o ++ adv.s ; - c2 = slash.c2; - p2 = slash.p2 - } ; - - SlashPrep cl prep = cl ** {c2 = prep.c; p2 = prep.s} ; - - - - EmbedS s = {s = "que" ++ s.s} ; - EmbedQS qs = {s = qs.s ! ODir} ; - EmbedVP vp = {s = infVP vp} ; - - UseCl t p cl = {s = t.s ++ p.s ++ cl.s ! variants {True;False} ! t.t ! t.a ! p.p ! ODir} ; - UseQCl t p cl = {s = \\o => t.s ++ p.s ++ cl.s ! variants {True;False} ! t.t ! t.a ! p.p ! o} ; - UseRCl t p cl = {s = \\agr => t.s ++ p.s ++ cl.s ! variants {True;False} ! t.t ! t.a ! p.p ! agr}; - UseSlash t p cl = {s = t.s ++ p.s ++ cl.s ! variants {True;False} ! t.t ! t.a ! p.p ! ODir; - c2 = cl.c2; - p2 = cl.p2} ; - - AdvS a s = {s = a.s ++ "," ++ s.s} ; - - RelS s r = {s = s.s ++ "," ++ r.s ! agrP3 Sg} ; - -} diff --git a/next-lib/src/interlingua/StructuralIna.gf b/next-lib/src/interlingua/StructuralIna.gf deleted file mode 100644 index 69acc0658..000000000 --- a/next-lib/src/interlingua/StructuralIna.gf +++ /dev/null @@ -1,117 +0,0 @@ -concrete StructuralIna of Structural = CatIna ** - open MorphoIna, (P = ParadigmsIna), Prelude in { - - flags optimize=all ; - - oper - mkPrep = P.mkPrep; - pp : Str -> Prep = \s-> mkPrep s Acc; - lin - above_Prep = pp "supra"; - after_Prep = pp "post" ; - all_Predet = ss "omne" ; - almost_AdA, almost_AdN = ss "quasi" ; - although_Subj = ss "quamquam" ; - always_AdV = ss "sempre" ; - and_Conj = {s1 = [] ; s2 = "e" ; n = Pl} ; - because_Subj = ss "proque" ; - before_Prep = pp "ante"; - behind_Prep = pp "detra" ; - between_Prep = pp "inter" ; - both7and_DConj = sd2 "e" "e" ** {n = Pl} ; - but_PConj = ss "sed" ; - by8agent_Prep = pp "per" ; - by8means_Prep = pp "per" ; - can_VV = P.regV "poter"; - can8know_VV = P.regV "saper"; - during_Prep = pp "durante" ; - either7or_DConj = sd2 "o" "o" ** {n = Sg} ; - everybody_NP = regNP "totos" ; - every_Det = mkDeterminer Sg "tote" ; - everything_NP = regNP "toto" ; - everywhere_Adv = ss "ubique" ; - few_Det = mkDeterminer Pl "qualque" ; - for_Prep = pp "por" ; - from_Prep = pp "ex" ; - he_Pron = mkPron "ille" "le" "su" Sp3; - here_Adv = ss "hic" ; - here7to_Adv = ss "hac" ; - here7from_Adv = mkPrep ["de ci"] Dat; - how_IAdv = ss "como" ; - how8many_IDet = mkIDeterminer Pl ["quante"] ; - if_Subj = ss "ii" ; - in8front_Prep = pp "avante"; - i_Pron = mkPron "io" "me" "mi" Sp1; - in_Prep = pp "in" ; - it_Pron = mkPron "illo" "lo" "su" Sp3; - less_CAdv = {s = "minus" ; p = "que"} ; - many_Det = mkDeterminer Pl "multe" ; - more_CAdv = {s = "plus" ; p = "que"} ; - most_Predet = ss ("le"++"plus"); - much_Det = mkDeterminer Sg "tanto" ; - must_VV = P.regV "deber"; - no_Utt = ss "no" ; - on_Prep = mkPrep "super" Acc; - only_Predet = ss "unic" ; - or_Conj = {s1 = [] ; s2 = "o" ; n = Sg} ; - otherwise_PConj = ss "alias" ; - part_Prep = mkPrep [] Abl; -- de ... - please_Voc = ss ("per"++"favor") ; - possess_Prep = mkPrep [] Gen; -- the possesive preposition can not generate clitics, and fuses with the definite determiner "le". Pronoun form: "mie", "sue", etc. - quite_Adv = ss "assi" ; - she_Pron = mkPron "illa" "la" "su" Sp3; - so_AdA = ss "tam" ; - somebody_NP = regNP (variants {"alicuno"; "alcuno"}) ; - someSg_Det = mkDeterminer Sg (variants {"alicun"; "alcun"}); - somePl_Det = mkDeterminer Pl (variants {"alicun"; "alcun"}); - something_NP = regNP ("alcun"++"cosa") ; -- very many variants - somewhere_Adv = ss "alicubi" ; -- variants - that_Quant = mkQuant "ille" "ille" ; --- that_NP = regNP "illo" ; -- Also exsits gender variants! - there_Adv = ss "ibi"; -- la - there7to_Adv = ss "ibi" ; - there7from_Adv = ss "ibi"; - therefore_PConj = ss "ergo" ; --- these_NP = regNP "istes" ; - they_Pron = mkPron "illos" "los" "lor" Pp3; - this_Quant = mkQuant "iste" "istes" ; --- this_NP = regNP "isto" ; --- those_NP = regNP "illos" ; -- Also exsits gender variants! - through_Prep = mkPrep "per" Acc; - too_AdA = ss "alsi" ; - to_Prep = mkPrep "" Dat; - under_Prep = pp "infra" ; - very_AdA = ss "multo" ; - want_VV = P.regV "want" ; - we_Pron = mkPron "nos" "nos" "nostre" Pp1; - whatPl_IP = mkIP "que" Pl ; - whatSg_IP = mkIP "que" Sg ; - when_IAdv = ss "quando" ; - when_Subj = ss "quando" ; - where_IAdv = ss "ubi" ; - which_IQuant = {s = table { - Pl => "qual" ; - Sg => "quales" - } - } ; - whoSg_IP = mkIP "qui" Sg ; - whoPl_IP = mkIP "qui" Pl ; - why_IAdv = ss "proque" ; - without_Prep = mkPrep "sin" Acc; - with_Prep = mkPrep "con" Acc ; - yes_Utt = ss "itaque" ; -- ita? - youSg_Pron = mkPron "tu" "te" "tu" Sp2; - youPl_Pron = mkPron "vos" "vos" "vostre" Pp2; - youPol_Pron = mkPron "vos" "vos" "vostre" Pp2; - - -- have_V2 = dirV2 (R.haberV ** {lock_V = <>}); - -oper - mkQuant : Str -> Str -> {s : Number => Case => Str} = \x,y -> { - s = \\n,c=> case n of { - Sg => x; - Pl => y - }} ; - -} - diff --git a/next-lib/src/interlingua/SymbolIna.gf b/next-lib/src/interlingua/SymbolIna.gf deleted file mode 100644 index 1ea8b5841..000000000 --- a/next-lib/src/interlingua/SymbolIna.gf +++ /dev/null @@ -1,41 +0,0 @@ ---# -path=.:abstract:common - -concrete SymbolIna of Symbol = CatIna ** open Prelude, ResIna in { - -{- TODO! -lin - SymbPN i = {s = addGenitiveS i.s ; g = Neutr} ; - IntPN i = {s = addGenitiveS i.s ; g = Neutr} ; - FloatPN i = {s = addGenitiveS i.s ; g = Neutr} ; - NumPN i = {s = i.s ; g = Neutr} ; - CNIntNP cn i = { - s = \\c => cn.s ! Sg ! Nom ++ (addGenitiveS i.s) ! c ; - a = agrgP3 Sg cn.g - } ; - CNSymbNP det cn xs = { - s = \\c => det.s ++ cn.s ! det.n ! Nom ++ (addGenitiveS xs.s) ! c ; - a = agrgP3 det.n cn.g - } ; - CNNumNP cn i = { - s = \\c => cn.s ! Sg ! Nom ++ i.s ! c ; - a = agrgP3 Sg cn.g - } ; - - SymbS sy = sy ; - - SymbNum sy = { s = addGenitiveS sy.s ; n = Pl ; hasCard = True } ; - SymbOrd sy = { s = \\c => sy.s ++ (regGenitiveS "th")!c} ; --} - -lincat - - Symb, [Symb] = SS ; - -lin - MkSymb s = s ; - --- BaseSymb = infixSS "and" ; - ConsSymb = infixSS "," ; - - -} diff --git a/next-lib/src/interlingua/VerbIna.gf b/next-lib/src/interlingua/VerbIna.gf deleted file mode 100644 index bfbac787f..000000000 --- a/next-lib/src/interlingua/VerbIna.gf +++ /dev/null @@ -1,66 +0,0 @@ -concrete VerbIna of Verb = CatIna ** open ResIna, Prelude in { - - flags optimize=all_subs ; - - lin - UseV = predV ; - - SlashV2a v = predV v ** {p2 = v.p2 ; c2 = v.c2} ; - - Slash2V3 v np = insertObj v.p2 v.c2 np (predV v) ** {p2 = v.p3 ; c2 = v.c3} ; - Slash3V3 v np = insertObj v.p3 v.c3 np (predV v) ** {p2 = v.p2 ; c2 = v.c2} ; - - SlashV2A v ap = - insertInvarObj (casePrep v.p3 v.c3 ++ (ap.s ! Sp3)) - (predV v) ** {p2 = v.p2 ; c2 = v.c2} ; - - -- This is not described by the interlingua grammar. - -- eg. "peint en rouge" - --- the 1.4 additions made by AR 16/6/2008 - SlashV2V v vp = - insertInvarObj (infVP vp) (predV v) ** {p2 = v.p2 ; c2 = v.c2} ; - SlashV2S v s = - insertInvarObj ("que" ++ s.s) (predV v) ** {p2 = v.p2 ; c2 = v.c2} ; - SlashV2Q v q = - insertInvarObj (q.s ! ODir) (predV v) ** {p2 = v.p2 ; c2 = v.c2} ; - - - ComplVV v vp = insertInvarObj (infVP vp) (predV v) ; - - ComplVS v s = insertInvarObj ("que" ++ s.s) (predV v) ; - ComplVQ v q = insertInvarObj (q.s ! ODir) (predV v) ; - - - ComplVA v ap = insertInvarObj (ap.s ! Sp3) (predV v) ; - -- !!! Agr should agree with the subject; however this is a quite useless sentence: - -- You are greater than yourself... etc. - - - ComplSlash vp np = insertObj vp.p2 vp.c2 np vp ; - - UseComp comp = insertInvarObj (comp.s ! Sp3) (predV_ esserV) ; - -- !!! as above - - SlashVV v vp = - insertInvarObj (infVP vp) (predV v) ** {p2 = vp.p2 ; c2 = vp.c2} ; - - SlashV2VNP v np vp = - insertObj v.p2 v.c2 np - (insertInvarObj (infVP vp) (predV v)) ** {p2 = vp.p2 ; c2 = vp.c2} ; - - AdvVP vp adv = insertInvarObj (adv.s) vp ; - - AdVVP adv vp = insertInvarObj adv.s vp ; - -- ??? The grammar is quite unclear about where the adverbs should go. - - ReflVP vp = insertReflObj vp.p2 vp.c2 - {isPronoun = True; s = \\agr,c => reflPron!agr} vp ; - - PassV2 v = insertInvarObj (v.s ! VPPart) (predV_ esserV); - - CompAP ap = ap ; - CompNP np = {s = \\_ => np.s ! Acc} ; - CompAdv a = {s = \\_ => a.s} ; - -} |
