mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-09 04:59:31 -06:00
Romainian in next-lib
This commit is contained in:
188
next-lib/src/romanian/BeschRon.gf
Normal file
188
next-lib/src/romanian/BeschRon.gf
Normal file
@@ -0,0 +1,188 @@
|
||||
resource BeschRon = open Prelude, MorphoRon,CatRon in {
|
||||
|
||||
flags optimize=noexpand ; -- faster and smaller than =all
|
||||
|
||||
oper VerbeN = {s: VForm => Str } ;
|
||||
oper mkNV : Verbe -> V = \ve -> {s = ve ; lock_V = <> } ;
|
||||
oper mkRV : Verbe -> V = \ve -> {s = ve ; lock_V = <>} ;
|
||||
|
||||
|
||||
-- for Group 1 - verbs ending in a (last sylablle) - the default behaviour is conjugation with "ez"
|
||||
-- with small mutation, depending on the second last letter (80 % verbs - especially neological)
|
||||
-- for Group 2 - verbs ending in ea - there are relatively few verbs, most of them irregular
|
||||
-- default behavior - covers almost 25 %
|
||||
-- for Group 3 - verbs ending in e - most verbs have phonetical mutations in the stem, for different
|
||||
-- tenses, difficult to find a pattern that describes this behavior
|
||||
-- default conjugation - covers almost 20%
|
||||
-- for Group 4 - verbs ending in i/î - the default behaviour is the conjugation with "sc", which
|
||||
-- characterizes almost 75 % of the verbs
|
||||
-- in general : Group 1 + Group 4 are the most frequent for verbs
|
||||
-- the smart paradigm covers (60-70% cases for a reasonably big database)
|
||||
-- (statistical tests also needed)
|
||||
|
||||
oper regV : Str -> Verbe = \s ->
|
||||
case s of
|
||||
{ x + ("chea"|"ghea") => mkV61 s ;
|
||||
x + "ea" => mkV69 s ;
|
||||
x + "ca" => mkV8 s ;
|
||||
x + "ga" => mkV9 s ;
|
||||
x + "eia" => mkV11 s;
|
||||
x + "ia" => mkV10 s;
|
||||
x + "a" => mkV6 s ;
|
||||
x + "e" => mkV79 s ;
|
||||
x + "ui" => mkV121 s ;
|
||||
x + "ii" => mkV120 s ;
|
||||
x + "i" => mkV119 s ;
|
||||
x + "î" => mkV141 s
|
||||
};
|
||||
|
||||
oper mkV : Str -> V = \s -> mkNV (regV s) ;
|
||||
|
||||
|
||||
oper conj : Str -> Verbe = mkV6 ;
|
||||
|
||||
|
||||
|
||||
oper v_besch6 : Str -> VerbeN = \s -> mkNV (mkV6 s) ;
|
||||
oper v_besch7 : Str -> VerbeN = \s -> mkNV (mkV7 s) ;
|
||||
oper v_besch8 : Str -> VerbeN = \s -> mkNV (mkV8 s) ;
|
||||
oper v_besch9 : Str -> VerbeN = \s -> mkNV (mkV9 s) ;
|
||||
oper v_besch10 : Str -> VerbeN = \s -> mkNV (mkV10 s) ;
|
||||
oper v_besch11 : Str -> VerbeN = \s -> mkNV (mkV11 s) ;
|
||||
oper v_besch12 : Str -> VerbeN = \s -> mkNV (mkV12 s) ;
|
||||
oper v_besch13 : Str -> VerbeN = \s -> mkNV (mkV13 s) ;
|
||||
oper v_besch14 : Str -> VerbeN = \s -> mkNV (mkV14 s) ;
|
||||
oper v_besch15 : Str -> VerbeN = \s -> mkNV (mkV15 s) ;
|
||||
oper v_besch16 : Str -> VerbeN = \s -> mkNV (mkV16 s) ;
|
||||
oper v_besch17 : Str -> VerbeN = \s -> mkNV (mkV17 s) ;
|
||||
oper v_besch18 : Str -> VerbeN = \s -> mkNV (mkV18 s) ;
|
||||
oper v_besch19 : Str -> VerbeN = \s -> mkNV (mkV19 s) ;
|
||||
oper v_besch20 : Str -> VerbeN = \s -> mkNV (mkV20 s) ;
|
||||
oper v_besch21 : Str -> VerbeN = \s -> mkNV (mkV21 s) ;
|
||||
oper v_besch22 : Str -> VerbeN = \s -> mkNV (mkV22 s) ;
|
||||
oper v_besch23 : Str -> VerbeN = \s -> mkNV (mkV23 s) ;
|
||||
oper v_besch24 : Str -> VerbeN = \s -> mkNV (mkV24 s) ;
|
||||
oper v_besch25 : Str -> VerbeN = \s -> mkNV (mkV25 s) ;
|
||||
oper v_besch26 : Str -> VerbeN = \s -> mkNV (mkV26 s) ;
|
||||
oper v_besch27 : Str -> VerbeN = \s -> mkNV (mkV27 s) ;
|
||||
oper v_besch28 : Str -> VerbeN = \s -> mkNV (mkV28 s) ;
|
||||
oper v_besch29 : Str -> VerbeN = \s -> mkNV (mkV29 s) ;
|
||||
oper v_besch30 : Str -> VerbeN = \s -> mkNV (mkV30 s) ;
|
||||
oper v_besch31 : Str -> VerbeN = \s -> mkNV (mkV31 s) ;
|
||||
oper v_besch32 : Str -> VerbeN = \s -> mkNV (mkV32 s) ;
|
||||
oper v_besch33 : Str -> VerbeN = \s -> mkNV (mkV33 s) ;
|
||||
oper v_besch34 : Str -> VerbeN = \s -> mkNV (mkV34 s) ;
|
||||
oper v_besch35 : Str -> VerbeN = \s -> mkNV (mkV35 s) ;
|
||||
oper v_besch36 : Str -> VerbeN = \s -> mkNV (mkV36 s) ;
|
||||
oper v_besch37 : Str -> VerbeN = \s -> mkNV (mkV37 s) ;
|
||||
oper v_besch38 : Str -> VerbeN = \s -> mkNV (mkV38 s) ;
|
||||
oper v_besch39 : Str -> VerbeN = \s -> mkNV (mkV39 s) ;
|
||||
oper v_besch40 : Str -> VerbeN = \s -> mkNV (mkV40 s) ;
|
||||
oper v_besch41 : Str -> VerbeN = \s -> mkNV (mkV41 s) ;
|
||||
oper v_besch42 : Str -> VerbeN = \s -> mkNV (mkV42 s) ;
|
||||
oper v_besch43 : Str -> VerbeN = \s -> mkNV (mkV43 s) ;
|
||||
oper v_besch44 : Str -> VerbeN = \s -> mkNV (mkV44 s) ;
|
||||
oper v_besch45 : Str -> VerbeN = \s -> mkNV (mkV45 s) ;
|
||||
oper v_besch46 : Str -> VerbeN = \s -> mkNV (mkV46 s) ;
|
||||
oper v_besch47 : Str -> VerbeN = \s -> mkNV (mkV47 s) ;
|
||||
oper v_besch48 : Str -> VerbeN = \s -> mkNV (mkV48 s) ;
|
||||
oper v_besch49 : Str -> VerbeN = \s -> mkNV (mkV49 s) ;
|
||||
oper v_besch50 : Str -> VerbeN = \s -> mkNV (mkV50 s) ;
|
||||
oper v_besch51 : Str -> VerbeN = \s -> mkNV (mkV51 s) ;
|
||||
oper v_besch52 : Str -> VerbeN = \s -> mkNV (mkV52 s) ;
|
||||
oper v_besch53 : Str -> VerbeN = \s -> mkNV (mkV53 s) ;
|
||||
oper v_besch54 : Str -> VerbeN = \s -> mkNV (mkV54 s) ;
|
||||
oper v_besch55 : Str -> VerbeN = \s -> mkNV (mkV55 s) ;
|
||||
oper v_besch56 : Str -> VerbeN = \s -> mkNV (mkV56 s) ;
|
||||
oper v_besch57 : Str -> VerbeN = \s -> mkNV (mkV57 s) ;
|
||||
oper v_besch58 : Str -> VerbeN = \s -> mkNV (mkV58 s) ;
|
||||
oper v_besch59 : Str -> VerbeN = \s -> mkNV (mkV59 s) ;
|
||||
oper v_besch60 : Str -> VerbeN = \s -> mkNV (mkV60 s) ;
|
||||
oper v_besch61 : Str -> VerbeN = \s -> mkNV (mkV61 s) ;
|
||||
oper v_besch62 : Str -> VerbeN = \s -> mkNV (mkV62 s) ;
|
||||
--oper v_besch63 : Str -> VerbeN = \s -> mkNV (mkV63 s) ;
|
||||
oper v_besch64 : Str -> VerbeN = \s -> mkNV (mkV64 s) ;
|
||||
oper v_besch65 : Str -> VerbeN = \s -> mkNV (mkV65 s) ;
|
||||
oper v_besch66 : Str -> VerbeN = \s -> mkNV (mkV66 s) ;
|
||||
oper v_besch67 : Str -> VerbeN = \s -> mkNV (mkV67 s) ;
|
||||
oper v_besch68 : Str -> VerbeN = \s -> mkNV (mkV68 s) ;
|
||||
oper v_besch69 : Str -> VerbeN = \s -> mkNV (mkV69 s) ;
|
||||
oper v_besch70 : Str -> VerbeN = \s -> mkNV (mkV70 s) ;
|
||||
oper v_besch71 : Str -> VerbeN = \s -> mkNV (mkV71 s) ;
|
||||
oper v_besch72 : Str -> VerbeN = \s -> mkNV (mkV72 s) ;
|
||||
oper v_besch73 : Str -> VerbeN = \s -> mkNV (mkV73 s) ;
|
||||
oper v_besch74 : Str -> VerbeN = \s -> mkNV (mkV74 s) ;
|
||||
--oper v_besch75 : Str -> VerbeN = \s -> mkNV (mkV75 s) ;
|
||||
oper v_besch76 : Str -> VerbeN = \s -> mkNV (mkV76 s) ;
|
||||
oper v_besch77 : Str -> VerbeN = \s -> mkNV (mkV77 s) ;
|
||||
oper v_besch78 : Str -> VerbeN = \s -> mkNV (mkV78 s) ;
|
||||
oper v_besch79 : Str -> VerbeN = \s -> mkNV (mkV79 s) ;
|
||||
oper v_besch80 : Str -> VerbeN = \s -> mkNV (mkV80 s) ;
|
||||
oper v_besch81 : Str -> VerbeN = \s -> mkNV (mkV81 s) ;
|
||||
oper v_besch82 : Str -> VerbeN = \s -> mkNV (mkV82 s) ;
|
||||
oper v_besch83 : Str -> VerbeN = \s -> mkNV (mkV83 s) ;
|
||||
oper v_besch84 : Str -> VerbeN = \s -> mkNV (mkV84 s) ;
|
||||
oper v_besch85 : Str -> VerbeN = \s -> mkNV (mkV85 s) ;
|
||||
oper v_besch86 : Str -> VerbeN = \s -> mkNV (mkV86 s) ;
|
||||
oper v_besch87 : Str -> VerbeN = \s -> mkNV (mkV87 s) ;
|
||||
oper v_besch88 : Str -> VerbeN = \s -> mkNV (mkV88 s) ;
|
||||
oper v_besch89 : Str -> VerbeN = \s -> mkNV (mkV89 s) ;
|
||||
oper v_besch90 : Str -> VerbeN = \s -> mkNV (mkV90 s) ;
|
||||
oper v_besch91 : Str -> VerbeN = \s -> mkNV (mkV91 s) ;
|
||||
oper v_besch92 : Str -> VerbeN = \s -> mkNV (mkV92 s) ;
|
||||
oper v_besch93 : Str -> VerbeN = \s -> mkNV (mkV93 s) ;
|
||||
oper v_besch94 : Str -> VerbeN = \s -> mkNV (mkV94 s) ;
|
||||
oper v_besch95 : Str -> VerbeN = \s -> mkNV (mkV95 s) ;
|
||||
oper v_besch96 : Str -> VerbeN = \s -> mkNV (mkV96 s) ;
|
||||
oper v_besch97 : Str -> VerbeN = \s -> mkNV (mkV97 s) ;
|
||||
oper v_besch98 : Str -> VerbeN = \s -> mkNV (mkV98 s) ;
|
||||
oper v_besch99 : Str -> VerbeN = \s -> mkNV (mkV99 s) ;
|
||||
oper v_besch100 : Str -> VerbeN = \s -> mkNV (mkV100 s) ;
|
||||
oper v_besch101 : Str -> VerbeN = \s -> mkNV (mkV101 s) ;
|
||||
oper v_besch102 : Str -> VerbeN = \s -> mkNV (mkV102 s) ;
|
||||
oper v_besch103 : Str -> VerbeN = \s -> mkNV (mkV103 s) ;
|
||||
oper v_besch104 : Str -> VerbeN = \s -> mkNV (mkV104 s) ;
|
||||
oper v_besch105 : Str -> VerbeN = \s -> mkNV (mkV105 s) ;
|
||||
oper v_besch106 : Str -> VerbeN = \s -> mkNV (mkV106 s) ;
|
||||
--oper v_besch107 : Str -> VerbeN = \s -> mkNV (mkV107 s) ;
|
||||
oper v_besch108 : Str -> VerbeN = \s -> mkNV (mkV108 s) ;
|
||||
oper v_besch109 : Str -> VerbeN = \s -> mkNV (mkV109 s) ;
|
||||
oper v_besch110 : Str -> VerbeN = \s -> mkNV (mkV110 s) ;
|
||||
--oper v_besch111 : Str -> VerbeN = \s -> mkNV (mkV111 s) ;
|
||||
oper v_besch112 : Str -> VerbeN = \s -> mkNV (mkV112 s) ;
|
||||
oper v_besch113 : Str -> VerbeN = \s -> mkNV (mkV113 s) ;
|
||||
--oper v_besch114 : Str -> VerbeN = \s -> mkNV (mkV114 s) ;
|
||||
oper v_besch115 : Str -> VerbeN = \s -> mkNV (mkV115 s) ;
|
||||
oper v_besch116 : Str -> VerbeN = \s -> mkNV (mkV116 s) ;
|
||||
oper v_besch117 : Str -> VerbeN = \s -> mkNV (mkV117 s) ;
|
||||
oper v_besch118 : Str -> VerbeN = \s -> mkNV (mkV118 s) ;
|
||||
oper v_besch119 : Str -> VerbeN = \s -> mkNV (mkV119 s) ;
|
||||
oper v_besch120 : Str -> VerbeN = \s -> mkNV (mkV120 s) ;
|
||||
oper v_besch121 : Str -> VerbeN = \s -> mkNV (mkV121 s) ;
|
||||
oper v_besch122 : Str -> VerbeN = \s -> mkNV (mkV122 s) ;
|
||||
oper v_besch123 : Str -> VerbeN = \s -> mkNV (mkV123 s) ;
|
||||
oper v_besch124 : Str -> VerbeN = \s -> mkNV (mkV124 s) ;
|
||||
oper v_besch125 : Str -> VerbeN = \s -> mkNV (mkV125 s) ;
|
||||
oper v_besch126 : Str -> VerbeN = \s -> mkNV (mkV126 s) ;
|
||||
oper v_besch127 : Str -> VerbeN = \s -> mkNV (mkV127 s) ;
|
||||
oper v_besch128 : Str -> VerbeN = \s -> mkNV (mkV128 s) ;
|
||||
oper v_besch129 : Str -> VerbeN = \s -> mkNV (mkV129 s) ;
|
||||
oper v_besch130 : Str -> VerbeN = \s -> mkNV (mkV130 s) ;
|
||||
oper v_besch131 : Str -> VerbeN = \s -> mkNV (mkV131 s) ;
|
||||
oper v_besch132 : Str -> VerbeN = \s -> mkNV (mkV132 s) ;
|
||||
oper v_besch133 : Str -> VerbeN = \s -> mkNV (mkV133 s) ;
|
||||
oper v_besch134 : Str -> VerbeN = \s -> mkNV (mkV134 s) ;
|
||||
oper v_besch135 : Str -> VerbeN = \s -> mkNV (mkV135 s) ;
|
||||
oper v_besch136 : Str -> VerbeN = \s -> mkNV (mkV136 s) ;
|
||||
oper v_besch137 : Str -> VerbeN = \s -> mkNV (mkV137 s) ;
|
||||
oper v_besch138 : Str -> VerbeN = \s -> mkNV (mkV138 s) ;
|
||||
oper v_besch139 : Str -> VerbeN = \s -> mkNV (mkV139 s) ;
|
||||
oper v_besch140 : Str -> VerbeN = \s -> mkNV (mkV140 s) ;
|
||||
oper v_besch141 : Str -> VerbeN = \s -> mkNV (mkV141 s) ;
|
||||
oper v_besch142 : Str -> VerbeN = \s -> mkNV (mkV142 s) ;
|
||||
oper v_besch143 : Str -> VerbeN = \s -> mkNV (mkV143 s) ;
|
||||
oper v_besch144 : Str -> VerbeN = \s -> mkNV (mkV144 s) ;
|
||||
oper v_have : VerbeN = mkNV (mkV1 "avea") ;
|
||||
|
||||
|
||||
}
|
||||
70
next-lib/src/romanian/CatRon.gf
Normal file
70
next-lib/src/romanian/CatRon.gf
Normal file
@@ -0,0 +1,70 @@
|
||||
--# -path=.:../Romance:../common:../abstract:../common:prelude
|
||||
|
||||
concrete CatRon of Cat =
|
||||
CommonX - [Temp,TTAnt,Tense,TPres,TPast,TFut,TCond]
|
||||
** open Prelude, ResRon, (R = ParamX) in {
|
||||
|
||||
flags optimize=all_subs ;
|
||||
|
||||
|
||||
|
||||
lincat
|
||||
|
||||
|
||||
-- Verb
|
||||
|
||||
-- VP = ResRon.VP ;
|
||||
-- VPSlash = ResRon.VP ** {c2 : Compl} ;
|
||||
-- Comp = {s : Agr => Str} ;
|
||||
|
||||
-- Adjective
|
||||
|
||||
AP = {s : AForm => Str ; isPre : Bool} ;
|
||||
|
||||
-- Noun
|
||||
|
||||
CN = {s : Number => Str ; g : Gender} ;
|
||||
-- Pron = Pronoun ;
|
||||
-- NP = NounPhrase ;
|
||||
-- Det = {
|
||||
-- s : Gender => Case => Str ;
|
||||
-- n : Number ;
|
||||
-- s2 : Str ; -- -ci
|
||||
-- sp : Gender => Case => Str -- substantival: mien, mienne
|
||||
-- } ;
|
||||
-- Quant = {
|
||||
-- s : Bool => Number => Gender => Case => Str ;
|
||||
-- s2 : Str ;
|
||||
-- sp : Number => Gender => Case => Str
|
||||
Ord = {s : AForm => Str ; isPre : Bool} ;
|
||||
-- Numeral
|
||||
|
||||
Numeral = {s : ACase => CardOrd => NumF => Str ; size : Size } ;
|
||||
Digits = {s : CardOrd => Str ; n : Size ; isDig : Bool} ;
|
||||
|
||||
|
||||
|
||||
-- Structural
|
||||
|
||||
Conj = {s1,s2 : Str ; n : Number} ;
|
||||
Subj = {s : Str ; m : Mood} ;
|
||||
Prep = {s : Str ; c : NCase ; isDir : Bool} ;
|
||||
|
||||
-- Open lexical classes, e.g. Lexicon
|
||||
Verb = {s : VForm => Str } ;
|
||||
V ={s : VForm => Str } ;
|
||||
VQ, VA = V ;
|
||||
V2, VV, V2S, V2Q = V ** {c2 : Compl} ;
|
||||
V3, V2A, V2V = V ** {c2,c3 : Compl} ;
|
||||
VS = V ** {m : Polarity => Mood} ;
|
||||
|
||||
A = {s : Degree => AForm => Str ; isPre : Bool} ;
|
||||
A2 = {s : Degree => AForm => Str ; c2 : Compl} ;
|
||||
|
||||
N = Noun ;
|
||||
N2 = Noun ** {c2 : Compl} ;
|
||||
N3 = Noun ** {c2,c3 : Compl} ;
|
||||
PN = {s : ACase => Str ; g : Gender ; n : Number} ;
|
||||
|
||||
|
||||
}
|
||||
9
next-lib/src/romanian/GrammarRon.gf
Normal file
9
next-lib/src/romanian/GrammarRon.gf
Normal file
@@ -0,0 +1,9 @@
|
||||
--# -path=.:../romance:../abstract:../common:prelude
|
||||
|
||||
concrete GrammarRon of Grammar =
|
||||
NumeralRon,
|
||||
** {
|
||||
|
||||
flags startcat = Phr ; unlexer = text ; lexer = text ;
|
||||
|
||||
} ;
|
||||
10
next-lib/src/romanian/LangRon.gf
Normal file
10
next-lib/src/romanian/LangRon.gf
Normal file
@@ -0,0 +1,10 @@
|
||||
--# -path=.:../romance:../abstract:../common
|
||||
|
||||
concrete LangRon of Lang =
|
||||
GrammarRon,
|
||||
LexiconRon
|
||||
** {
|
||||
|
||||
flags startcat = Phr ; unlexer = text ; lexer = text ;
|
||||
|
||||
} ;
|
||||
366
next-lib/src/romanian/LexiconRon.gf
Normal file
366
next-lib/src/romanian/LexiconRon.gf
Normal file
@@ -0,0 +1,366 @@
|
||||
--# -path=.:../romance:../common:../abstract:../../prelude
|
||||
|
||||
concrete LexiconRon of Lexicon = CatRon **
|
||||
open ParadigmsRon,BeschRon,MorphoRon in {
|
||||
|
||||
flags
|
||||
optimize=values ;
|
||||
|
||||
lin
|
||||
airplane_N = mkN "avion" ;
|
||||
answer_V2S = mkV2S (mkV "rãspunde") (noPrep Da) ;
|
||||
apartment_N = mkN "apartament";
|
||||
apple_N = mkN "mãr";
|
||||
art_N = mkN "artã" ;
|
||||
ask_V2Q = mkV2Q (v_besch29 "întreba") (noPrep Ac) ;
|
||||
baby_N = mkAnim (mkN "bebeluº" masculine) ;
|
||||
bad_A = mk4A "rãu" "rea" "rãi" "rele" ;
|
||||
bank_N = mkN "bancã" "bãnci" ;
|
||||
beautiful_A = mkRMut "frumos" ;
|
||||
become_VA = mkVA (v_besch136 "deveni") ;
|
||||
beer_N = mkN "bere" ;
|
||||
beg_V2V = mkV2V (v_besch48 "ruga") (noPrep Ac) (noPrep Da) ;
|
||||
big_A = regA "mare" ;
|
||||
bike_N = mkN "bicicletã" ;
|
||||
bird_N = mkN "pasãre" "pãsãri" ;
|
||||
black_A = mkRMut "negru" ;
|
||||
blue_A = regA "albastru" ;
|
||||
boat_N = mkN "vapor" neuter ;
|
||||
book_N = mkN "carte" "cãrþi" ;
|
||||
boot_N = mkN "cizmã" ;
|
||||
boss_N = mkAnim (mkN "ºef" masculine) ;
|
||||
boy_N = mkAnim (mkN "bãiat" "bãieþi") ;
|
||||
bread_N = mkN "pâine";
|
||||
break_V2 = dirV2 (v_besch97 "sparge") ;
|
||||
broad_A = regA "larg" ;
|
||||
brother_N2 = mkN2 (mkAnim(mkN "frate" masculine)) (noPrep Ge) ;
|
||||
brown_A = invarA "maro" ;
|
||||
butter_N = mkNR "unt";
|
||||
buy_V2 = dirV2 (v_besch35 "cumpãra");
|
||||
camera_N = compN (mkN "aparat" neuter) ["foto"] ;
|
||||
cap_N = mkN "ºapcã" "ºepci" ;
|
||||
car_N = mkN "maºinã" ;
|
||||
carpet_N = mkN "covor" neuter ;
|
||||
cat_N = mkN "pisicã" ;
|
||||
ceiling_N = mkN "plafon" ;
|
||||
chair_N = mkN "scaun" ;
|
||||
cheese_N = mkN "brânzã" "brânzeturi" "brânze" ;
|
||||
child_N = mkAnim (mkN "copil" "copii" ) ;
|
||||
church_N = mkN "bisericã" ;
|
||||
city_N = mkN "oraº" ;
|
||||
clean_A = regA "curat" ;
|
||||
clever_A = regA "deºtept" ;
|
||||
close_V2 = dirV2 (mkV "închide") ;
|
||||
coat_N = mkN "hainã" ;
|
||||
cold_A = regA "rece" ;
|
||||
come_V = v_besch136 "veni" ;
|
||||
computer_N = mkN "calculator" neuter ;
|
||||
country_N = mkN "þarã" "þãri" ;
|
||||
cousin_N = mkAnim (mkN "vãr" masculine) ;
|
||||
cow_N = mkN "vacã" "vaci" ;
|
||||
die_V = v_besch129 "muri" ;
|
||||
dirty_A = regA "murdar" ;
|
||||
distance_N3 = mkN3 (mkN "distanþã") (mkPrep "de la" Ac) (mkPrep "la" Ac) ;
|
||||
doctor_N = mkAnim (mkN "doctor") ;
|
||||
dog_N = mkN "câine" masculine ;
|
||||
door_N = mkN "uºã" "uºi" ;
|
||||
drink_V2 = dirV2 (v_besch73 "bea") ;
|
||||
easy_A2V = mkA2V (mkRMut "uºor") (noPrep Ac) (noPrep Ac) ;
|
||||
eat_V2 = dirV2 (v_besch52 "mânca") ;
|
||||
empty_A = mkSMut "gol" ;
|
||||
enemy_N = mkAnim (mkN "duºman" masculine) ;
|
||||
factory_N = mkN "fabricã" ;
|
||||
father_N2 = mkN2 (mkN "tatã" "taþi" masculine) (noPrep Ge);
|
||||
fear_VS = mkVS (v_besch100 "teme") ;
|
||||
fear_V2 = mmkV2 (mkRV (mkV100 "teme")) (mkPrep "de" Ac) ;
|
||||
find_V2 = dirV2 (mkV "gãsi") ;
|
||||
fish_N = mkN "peºte" masculine ;
|
||||
floor_N = mkN "podea" ;
|
||||
forget_V2 = dirV2 (v_besch18 "uita") ;
|
||||
fridge_N = mkN "frigider" ;
|
||||
friend_N = mkAnim (mkN "prieten") ;
|
||||
fruit_N = mkN "fruct" ;
|
||||
fun_AV = mkAV (regA "distractiv") (noPrep Ac) ;
|
||||
garden_N = mkN "gradinã" ;
|
||||
girl_N = mkAnim (mkN "fatã" "fete") ;
|
||||
glove_N = mkN "mãnuºã" "mãnuºi" ;
|
||||
gold_N = mkNR "aur" ;
|
||||
good_A = mk5A "bun" "bunã" "buni" "bune" "bine" ;
|
||||
go_V = v_besch90 "merge" ;
|
||||
green_A = regA "verde" ;
|
||||
harbour_N = mkNR "port" ;
|
||||
hate_V2 = dirV2 (mkV "urî") ;
|
||||
hat_N = mkN "pãlãrie" ;
|
||||
have_V2 = dirV2 (v_have) ;
|
||||
hear_V2 = dirV2 (v_besch127 "auzi") ;
|
||||
hill_N = mkNR "deal" ;
|
||||
hope_VS = mkVS (v_besch17 "spera") ;
|
||||
horse_N = mkN "cal" "cai" ;
|
||||
hot_A = regA "cald" ;
|
||||
house_N = mkN "casã" ;
|
||||
important_A = regA "important" ;
|
||||
industry_N = mkN "industrie" ;
|
||||
iron_N = mkN "fier" masculine ;
|
||||
king_N = mkAnim (mkN "rege" masculine) ;
|
||||
know_V2 = dirV2 (v_besch122 "ºti") ;
|
||||
know_VS = mkVS (v_besch109 "cunoaºte") ;
|
||||
lake_N = mkNR "lac" ;
|
||||
lamp_N = mkN "lampã" "lãmpi" ;
|
||||
learn_V2 = dirV2(v_besch45 "învãþa") ;
|
||||
leather_N = mkN "piele" "piei" ;
|
||||
leave_V2 = dirV2 (mkV "pãrãsi") ;
|
||||
like_V2 = dirV2 (v_besch71 "plãcea") ;
|
||||
listen_V2 = dirV2 (v_besch18 "asculta") ;
|
||||
live_V = mkV "trãi" ;
|
||||
long_A = regA "lung" ;
|
||||
lose_V2 = dirV2 (v_besch113 "pierde") ;
|
||||
love_N = mkN "iubire" ;
|
||||
love_V2 = dirV2 (mkV "iubi") ;
|
||||
man_N = mkAnim (mkN "om" "oameni") ;
|
||||
married_A2 = mkA2 (regA "cãsãtorit") (mkPrep "cu" Ac) ;
|
||||
meat_N = mkN "carne" "cãrnuri" "cãrni" ;
|
||||
milk_N = mkN "lapte" masculine ;
|
||||
moon_N = mkN "lunã" "luni" ;
|
||||
mother_N2 = mkN2 (chV "mamã" (mkAnim (mkN "mamã"))) (noPrep Ge) ;
|
||||
mountain_N = mkN "munte" masculine ;
|
||||
music_N = mkN "muzicã" ;
|
||||
narrow_A = regA "îngust" ;
|
||||
new_A = mk4A "nou" "nouã" "noi" "noi" ;
|
||||
newspaper_N = mkN "ziar" ;
|
||||
oil_N = mkNR "ulei" ;
|
||||
old_A = regA "vechi" ;
|
||||
open_V2 = dirV2 (mkV "deshide") ;
|
||||
paint_V2A = mkV2A (mkV "picta") (noPrep Ac) (mkPrep "cu" Ac) ;
|
||||
paper_N = mkN "hârtie" ;
|
||||
paris_PN = mkPN "Paris" ;
|
||||
peace_N = mkN "pace" "pãci" ;
|
||||
pen_N = mkNR "stilou" ;
|
||||
planet_N = mkN "planetã" ;
|
||||
plastic_N = mkN "plastic" ;
|
||||
play_V2 = dirV2 (v_besch48 "juca") ;
|
||||
policeman_N = mkAnim (mkN "poliþist" masculine) ;
|
||||
priest_N = mkAnim (mkN "preot" masculine) ;
|
||||
probable_AS = mkAS (regA "probabil") ;
|
||||
queen_N = mkAnim (mkN "reginã" "regine") ;
|
||||
radio_N = mkNR "radio";
|
||||
--rain_V0 = mkV0 (v_besch54 "ploua") ;
|
||||
read_V2 = dirV2 (mkV "citi") ;
|
||||
red_A = mk4A "roºu" "roºie" "roºii" "roºii" ;
|
||||
religion_N = mkN "religie" ;
|
||||
restaurant_N = mkN "restaurant" ;
|
||||
river_N = mkN "fluviu" masculine ;
|
||||
rock_N = mkN "piatrã" "pietre" ;
|
||||
roof_N = mkNR "acoperiº";
|
||||
rubber_N = mkNR "cauciuc";
|
||||
run_V = v_besch126 "fugi" ;
|
||||
say_VS = mkVS (v_besch76 "spune") ;
|
||||
school_N = mkN "ºcoala" "ºcoli" ;
|
||||
science_N = mkN "ºtiinþã" ;
|
||||
sea_N = mkN "mare" "mãri" ;
|
||||
seek_V2 = dirV2 (v_besch24 "cãuta") ;
|
||||
see_V2 = dirV2 (v_besch67 "vedea") ;
|
||||
sell_V3 = dirV3 (v_besch112 "vinde") ;
|
||||
send_V3 = dirV3 (v_besch82 "trimite") ;
|
||||
sheep_N = mkN "oaie" ;
|
||||
ship_N = mkN "vapor" neuter ;
|
||||
shirt_N = mkN "cãmaºã" "cãmãºi" ;
|
||||
shoe_N = mkN "pantof" masculine ;
|
||||
shop_N = mkN "magazin" ;
|
||||
short_A = regA "scurt" ;
|
||||
silver_N = mkN "argint" masculine ;
|
||||
sister_N = mkAnim (mkN "sorã" "surori") ;
|
||||
sleep_V = v_besch128 "dormi" ;
|
||||
small_A = mk4A "mic" "micã" "mici" "mici" ;
|
||||
snake_N = mkN "ºarpe" "ºerpi" masculine ;
|
||||
sock_N = mkN "ºosetã" ;
|
||||
speak_V2 = dirV2 (mkV "vorbi") ;
|
||||
star_N = mkN "stea" ;
|
||||
steel_N = mkNR "oþel" ;
|
||||
stone_N = mkN "piatrã" "pietre" ;
|
||||
stove_N = mkN "sobã" ;
|
||||
student_N = mkAnim (mkN "student" masculine) ;
|
||||
stupid_A = regA "stupid" ;
|
||||
sun_N = mkN "soare" "sori" masculine ;
|
||||
switch8off_V2 = dirV2 (v_besch77 "stinge") ;
|
||||
switch8on_V2 = dirV2 (mkV "aprinde") ;
|
||||
table_N = mkN "masã" "mese" ;
|
||||
talk_V3 = mmkV3 (mkV "vorbi") (noPrep Ac) (mkPrep "cu" Ac) ;
|
||||
teacher_N = mkAnim (mkN "profesor") ;
|
||||
teach_V2 = dirV2 (v_besch57 "preda") ;
|
||||
television_N = mkN "televiziune" ;
|
||||
thick_A = mkRMut "gros" ;
|
||||
thin_A = regA "subþire" ;
|
||||
train_N = mkNR "tren";
|
||||
travel_V = mkV "cãlãtori" ;
|
||||
tree_N = mkN "copac" masculine ;
|
||||
--trousers_N = mkN "pantalon" masculine ;
|
||||
ugly_A = regA "urât" ;
|
||||
understand_V2 = dirV2 (v_besch83 "înþelege") ;
|
||||
university_N = mkN "universitate" ;
|
||||
village_N = mkN "sat" neuter ;
|
||||
wait_V2 = dirV2 (v_besch30 "aºtepta") ;
|
||||
walk_V = v_besch90 "merge" ;
|
||||
warm_A = regA "calduþ" ;
|
||||
war_N = mkN "rãzboi" neuter ;
|
||||
watch_V2 = dirV2 (mkV "privi") ;
|
||||
water_N = mkN "apã" ;
|
||||
white_A = regA "alb" ;
|
||||
window_N = mkN "fereastrã" "ferestre" ;
|
||||
wine_N = mkNR "vin" ;
|
||||
win_V2 = dirV2 (v_besch17 "câºtiga") ;
|
||||
woman_N = chV "femeie" (mkAnim (mkN "femeie")) ;
|
||||
wonder_VQ = mkVQ (mkRV (regV "minuna")) ;
|
||||
wood_N = mkN "lemn" ;
|
||||
write_V2 = dirV2 (v_besch117 "scrie") ;
|
||||
yellow_A = regA "galben" ;
|
||||
young_A = mk5A "tânãr" "tânãrã" "tineri" "tinere" "tinereºte" ;
|
||||
|
||||
do_V2 = dirV2 (v_besch115 "face") ;
|
||||
now_Adv = mkAdv "acum" ;
|
||||
already_Adv = mkAdv "deja" ;
|
||||
song_N = mkN "cântec" ;
|
||||
add_V3 = dirV3 (v_besch23 "adãuga") ;
|
||||
number_N = mkN "numãr" ;
|
||||
put_V2 = dirV2 (v_besch76 "pune") ;
|
||||
stop_V = mkRV (regV "opri") ;
|
||||
jump_V = v_besch118 "sãri" ;
|
||||
|
||||
left_Ord = mkOrd (regA "stâng") ;
|
||||
right_Ord = mkOrd (mkRMut "drept") ;
|
||||
far_Adv = mkAdv "departe" ;
|
||||
correct_A = regA "corect" ;
|
||||
dry_A = regA "uscat" ;
|
||||
dull_A = regA "monoton";
|
||||
full_A = regA "plin" ;
|
||||
heavy_A = mk4A "greu" "grea" "grei" "grele";
|
||||
near_A = regA "apropiat" ;
|
||||
rotten_A = regA "stricat" ;
|
||||
round_A = regA "rotund" ;
|
||||
sharp_A = regA "ascuþit" ;
|
||||
smooth_A = regA "neted" ;
|
||||
straight_A = mkRMut "drept" ;
|
||||
wet_A = regA "ud" ;
|
||||
wide_A = regA "adânc" ;
|
||||
animal_N = mkN "animal" ;
|
||||
ashes_N = mkN "cenuºã" "cenuºi" ;
|
||||
back_N = mkN "spate" "spate" neuter ;
|
||||
bark_N = mkNR "lãtrat" ;
|
||||
belly_N = mkN "pântec" ;
|
||||
blood_N = mkNR "sânge" ;
|
||||
bone_N = mkN "os" ;
|
||||
breast_N = mkNR "piept" ;
|
||||
cloud_N = mkN "nor" ;
|
||||
day_N = mkN "zi" feminine ;
|
||||
dust_N = mkNR "praf" ;
|
||||
ear_N = mkN "ureche" ;
|
||||
earth_N = mkNR "pãmânt" ;
|
||||
egg_N = mkN "ou" "ouã" neuter ;
|
||||
eye_N = mkN "ochi" masculine ;
|
||||
fat_N = mkN "grãsime" ;
|
||||
feather_N = mkN "panã" "pene" ;
|
||||
fingernail_N = mkN "unghie" ;
|
||||
fire_N = mkNR "foc" ;
|
||||
flower_N = mkN "floare" "flori" ;
|
||||
fog_N = mkN "ceaþã" "ceþuri" "ceþi" ;
|
||||
foot_N = mkN "picior" neuter ;
|
||||
forest_N = mkN "pãdure" ;
|
||||
grass_N = mkN "iarbã" "ierburi" "ierbi" ;
|
||||
guts_N = mkN "intestin" ;
|
||||
hair_N = mkN "pãr" masculine ;
|
||||
hand_N = mkN "mânã" "mâini" ;
|
||||
head_N = mkN "cap" "capete" neuter ;
|
||||
heart_N = mkN "inimã" ;
|
||||
horn_N = mkNR "corn" ;
|
||||
husband_N = mkAnim (mkN "soþ" masculine) ;
|
||||
ice_N = mkN "gheaþã" "gheþuri" "gheþi" ;
|
||||
knee_N = mkN "genunchi" masculine ;
|
||||
leaf_N = mkN "frunzã" ;
|
||||
leg_N = mkN "picior" neuter ;
|
||||
liver_N = mkN "ficat" ;
|
||||
louse_N = mkN "pãduche" masculine ;
|
||||
mouth_N = mkN "gurã" ;
|
||||
name_N = mkN "nume" "nume" neuter ;
|
||||
neck_N = mkNR "gât" ;
|
||||
night_N = mkN "noapte" "nopþi" ;
|
||||
nose_N = mkNR "nas" ;
|
||||
person_N = mkAnim (mkN "persoanã") ;
|
||||
rain_N = mkN "ploaie" ;
|
||||
road_N = mkNR "drum" ;
|
||||
root_N = mkN "rãdãcinã" ;
|
||||
rope_N = mkN "sfoarã" "sfori" ;
|
||||
salt_N = mkN "sare" "sãruri" "sãri";
|
||||
sand_N = mkNR "nisip" ;
|
||||
seed_N = mkN "sãmânþã" "seminþe" ;
|
||||
skin_N = mkN "piele" "pieli" "piei" ;
|
||||
sky_N = mkNR "cer" ;
|
||||
smoke_N = mkNR "fum" ;
|
||||
snow_N = mkN "zãpadã" "zãpezi" ;
|
||||
stick_N = mkN "bãþ" ;
|
||||
tail_N = mkN "coadã" "cozi" ; -- mkN "coadã" feminine - certain kind of tails
|
||||
tongue_N = mkN "limbã" "limbi";
|
||||
tooth_N = mkN "dinte" masculine ;
|
||||
wife_N = mkAnim (mkN "soþie");
|
||||
wind_N = mkNR "vânt" ;
|
||||
wing_N = mkN "aripã" ;
|
||||
worm_N = mkN "vierme" masculine;
|
||||
year_N = mkN "an" masculine;
|
||||
bite_V2 = dirV2 (v_besch22 "muºca") ;
|
||||
blow_V = v_besch55 "sufla" ;
|
||||
breathe_V = v_besch17 "respira" ;
|
||||
burn_V = mkV "arde" ;
|
||||
count_V2 = dirV2 (v_besch35 "numãra" ) ;
|
||||
cut_V2 = dirV2(v_besch14 "tãia") ;
|
||||
dig_V = v_besch23 "sãpa" ;
|
||||
fall_V = v_besch65 "cãdea" ;
|
||||
fight_V2 = dirV2 (v_besch18 "lupta") ;
|
||||
float_V = mkV "pluti" ;
|
||||
flow_V = v_besch89 "curge" ;
|
||||
fly_V = v_besch48 "zbura" ;
|
||||
freeze_V = v_besch29 "îngheþa" ;
|
||||
give_V3 = dirV3 (v_besch60 "da") ;
|
||||
hit_V2 = dirV2 (mkV "lovi") ;
|
||||
hunt_V2 = dirV2 (mkV "vâna") ;
|
||||
kill_V2 = dirV2 (v_besch81 "ucide") ;
|
||||
laugh_V = v_besch91 "râde" ;
|
||||
lie_V = mkRV (regV "întinde") ;
|
||||
play_V = mkNV (mkV48 "juca") ;
|
||||
pull_V2 = dirV2 (v_besch78 "trage") ;
|
||||
push_V2 = dirV2 (v_besch77 "împinge") ;
|
||||
rub_V2 = dirV2 (v_besch29 "freca") ;
|
||||
scratch_V2 = dirV2 (v_besch23 "scãrpina") ;
|
||||
sew_V = v_besch110 "coase" ;
|
||||
sing_V = v_besch18 "cânta" ;
|
||||
sit_V = mkRV (mkV41 "aºeza") ;
|
||||
smell_V = v_besch133 "mirosi" ;
|
||||
spit_V = v_besch17 "scuipa" ;
|
||||
squeeze_V2 = dirV2 (v_besch88 "stoarce") ;
|
||||
stab_V2 = dirV2 (v_besch12 "înjunghia") ;
|
||||
stand_V = v_besch17 "ridica" ;
|
||||
suck_V2 = dirV2 (v_besch95 "suge") ;
|
||||
swell_V = v_besch55 "umfla" ;
|
||||
swim_V = v_besch32 "înota" ;
|
||||
think_V = mkV "gândi" ;
|
||||
throw_V2 = dirV2 (v_besch17 "arunca") ;
|
||||
tie_V2 = dirV2 (v_besch29 "lega") ;
|
||||
turn_V = v_besch88 "întoarce" ;
|
||||
vomit_V = v_besch18 "vomita" ;
|
||||
wash_V2 = dirV2 (v_besch45 "spãla") ;
|
||||
wipe_V2 = dirV2 (v_besch83 "ºterge") ;
|
||||
|
||||
hold_V2 = dirV2 (v_besch108 "þine") ;
|
||||
split_V2 = dirV2 (v_besch134 "despãrþi");
|
||||
-- sit_V = v_besch41 "aºeza" ;
|
||||
|
||||
grammar_N = mkN "gramaticã" ;
|
||||
language_N = mkN "limbã" "limbi" ;
|
||||
rule_N = mkN "regulã" "reguli" ;
|
||||
|
||||
john_PN = mkPN "Ion" ;
|
||||
question_N = mkN "întrebare" ;
|
||||
ready_A = regA "pregãtit" ;
|
||||
reason_N = mkN "motiv" ;
|
||||
today_Adv = mkAdv "astãzi" ;
|
||||
uncertain_A = regA "nesigur" ;
|
||||
|
||||
|
||||
} ;
|
||||
2428
next-lib/src/romanian/MorphoRon.gf
Normal file
2428
next-lib/src/romanian/MorphoRon.gf
Normal file
File diff suppressed because it is too large
Load Diff
249
next-lib/src/romanian/NumeralRon.gf
Normal file
249
next-lib/src/romanian/NumeralRon.gf
Normal file
@@ -0,0 +1,249 @@
|
||||
concrete NumeralRon of Numeral = CatRon **
|
||||
open MorphoRon, CatRon, Prelude in {
|
||||
|
||||
param DForm = unit | teen | ten | teen_inf | attr;
|
||||
|
||||
lincat Digit = {s : CardOrd => DForm => Str ; size : Size} ;
|
||||
lincat Sub10 = {s : CardOrd => DForm => Str ; size : Size} ;
|
||||
lincat Sub100 = {s : CardOrd => NumF => Str ; size : Size} ;
|
||||
lincat Sub1000 = {s : CardOrd => NumF => Str ; size : Size} ;
|
||||
lincat Sub1000000 = { s : CardOrd => NumF => Str; size : Size } ;
|
||||
|
||||
|
||||
|
||||
oper mkOrdinalForm : Str -> Gender -> Str =
|
||||
\two, g -> case g of
|
||||
{ Masc => case two of
|
||||
{x+"t" => two+"ulea";
|
||||
x + "ie" => x + "iilea";
|
||||
_ => two+"lea"
|
||||
};
|
||||
Fem => case two of
|
||||
{ x + "a" => two ;
|
||||
x + ("ã"|"u") => x +"a";
|
||||
x + "ei" => two + "a";
|
||||
x + "ii" => x + "ia" ;
|
||||
x + "i" => x + "ea";
|
||||
x + "ie" => x +"a" ;
|
||||
_ => two +"a"
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
oper mkOrdinal : Str -> Gender -> ACase -> Str =
|
||||
\two, g, fl -> mkOrd (mkOrdinalForm two g) g fl;
|
||||
|
||||
oper mkOrd : Str -> Gender -> ACase -> Str =
|
||||
\two, g, fl -> let cc = variants{(artPos g Sg)++ two ;
|
||||
(artDem g Sg ANomAcc) ++ "de-"+(artPos g Sg) ++ two
|
||||
} in
|
||||
case fl of
|
||||
{ ANomAcc => cc ;
|
||||
AGenDat => (artDem g Sg AGenDat)++"de-"+(artPos g Sg)++ two ;
|
||||
AVoc => cc
|
||||
};
|
||||
|
||||
|
||||
oper mkNum : Str -> Str -> Str -> Str -> Digit =
|
||||
\two -> \twelve -> \twenty -> \doispe -> mkNumVSpc two twelve twelve twenty two doispe doispe (mkOrdinalForm two Masc) (mkOrdinalForm two Fem) two two;
|
||||
|
||||
|
||||
oper mkNumVSpc : Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> Digit =
|
||||
\two -> \twelve -> \douasprezece -> \twenty -> \dou -> \doispe -> \douaspe -> \doilea -> \doua ->
|
||||
\unu -> \una ->
|
||||
{s = table {
|
||||
NCard Masc => table {unit => two ; teen => twelve ;
|
||||
ten => twenty ; teen_inf => doispe ; attr => unu
|
||||
} ;
|
||||
NCard Fem => table {unit => dou ; teen => douasprezece ;
|
||||
ten => twenty ; teen_inf => douaspe ; attr => una
|
||||
} ;
|
||||
NOrd Masc => table {unit => doilea ;
|
||||
teen => mkOrdinalForm twelve Masc ;
|
||||
ten => mkOrdinalForm twenty Masc ;
|
||||
teen_inf => mkOrdinalForm doispe Masc ;
|
||||
attr => mkOrdinalForm unu Masc
|
||||
} ;
|
||||
NOrd Fem => table {unit => doua ;
|
||||
teen => mkOrdinalForm douasprezece Fem ;
|
||||
ten => mkOrdinalForm twenty Fem ;
|
||||
teen_inf => mkOrdinalForm douaspe Fem ;
|
||||
attr => mkOrdinalForm una Fem
|
||||
}
|
||||
} ;
|
||||
size = less20 ;
|
||||
lock_Digit = <>
|
||||
} ;
|
||||
|
||||
oper regNum : Str -> Digit =
|
||||
\trei -> mkNum trei (trei + "sprezece") (trei + "zeci") (trei + "ºpe") ;
|
||||
|
||||
|
||||
oper mkMidF : Str -> Str -> Sub100 =
|
||||
\unsprezece, unspe ->
|
||||
{ s = table {NCard g => table { Formal => unsprezece ;
|
||||
Informal => unspe
|
||||
};
|
||||
NOrd g => table {Formal => mkOrdinalForm unsprezece g;
|
||||
Informal => mkOrdinalForm unspe g
|
||||
}
|
||||
};
|
||||
|
||||
size = less20 ;
|
||||
lock_Sub100 = <>
|
||||
};
|
||||
|
||||
|
||||
lin num = \d ->
|
||||
{ s = \\cse => table { NCard g => \\f => d.s ! (NCard g) ! f ;
|
||||
NOrd g => \\f => let ss = d.s ! (NOrd g) ! f
|
||||
in
|
||||
case d.size of
|
||||
{ sg => (artDem g Sg cse) ++ ss ;
|
||||
_ => mkOrd ss g cse
|
||||
}
|
||||
};
|
||||
size = d.size
|
||||
} ;
|
||||
-- Latin A Supplement chars
|
||||
|
||||
lin n2 = mkNumVSpc "doi" "doispreze" "douãsprezece" "douãzeci" "douã" "doiºpe" "douãºpe" "doilea" "doua" "doi" "douã";
|
||||
lin n3 = regNum "trei";
|
||||
lin n4 = mkNum "patru" "paisprezece" "patruzeci" "paiºpe";
|
||||
lin n5 = mkNum "cinci" "cinsprezece" "cincizeci" "cinºpe";
|
||||
lin n6 = mkNum "ºase" "ºaisprezece" "ºaizeci" "ºaiºpe";
|
||||
lin n7 = mkNum "ºapte" "ºaptesprezece" "ºaptezeci" "ºaptiºpe";
|
||||
lin n8 = mkNum "opt" "optsprezece" "optzeci" "optiºpe";
|
||||
lin n9 = regNum "nouã";
|
||||
|
||||
lin pot01 = let num = mkNumVSpc "un" "unsprezece" "unsprezece" "zece" "o" "unºpe" "unºpe" "dintâi" "dintâi" "unu" "una"
|
||||
in
|
||||
{ s = \\o,c => num.s ! o ! c ;
|
||||
size = sg
|
||||
};
|
||||
|
||||
lin pot0 d = { s = \\o, c => d.s ! o ! c ;
|
||||
size = less20
|
||||
};
|
||||
|
||||
lin pot110 = mkMidF "zece" "zece" ;
|
||||
|
||||
lin pot111 = mkMidF "unsprezece" "unºpe" ;
|
||||
|
||||
lin pot1to19 = \d ->
|
||||
{s = \\c => table { Formal => d.s ! c ! teen ;
|
||||
Informal => d.s ! c ! teen_inf
|
||||
};
|
||||
size = less20
|
||||
};
|
||||
|
||||
lin pot0as1 = \d ->
|
||||
{s = \\c,_ => d.s ! c ! unit ;
|
||||
size = d.size
|
||||
};
|
||||
|
||||
lin pot1 = \d ->
|
||||
{s = \\c,_ => d.s ! c ! ten ;
|
||||
size = pl
|
||||
};
|
||||
|
||||
|
||||
|
||||
lin pot1plus d e =
|
||||
{s = table {
|
||||
NCard g => \\_ => d.s ! (NCard g) ! ten ++ "ºi" ++ e.s ! (NCard g) ! attr ;
|
||||
NOrd g => \\_ => d.s ! (NCard g) ! ten ++ "ºi" ++ e.s ! (NOrd g) ! attr
|
||||
};
|
||||
size = pl
|
||||
};
|
||||
|
||||
lin pot1as2 n = n ;
|
||||
|
||||
lin pot2 d =
|
||||
{s = table {
|
||||
NCard g => \\_ => d.s ! (NCard Fem) ! unit ++ (mksute d.size) ;
|
||||
NOrd g => \\_ => d.s ! (NCard Fem) ! unit ++ (mkSute d.size g)
|
||||
};
|
||||
|
||||
size = pl} ;
|
||||
|
||||
lin pot2plus d e =
|
||||
{s = \\c,f => d.s ! (NCard Fem) ! unit ++ (mksute d.size) ++ e.s ! c ! f ;
|
||||
size = pl} ;
|
||||
|
||||
lin pot2as3 n = n ;
|
||||
|
||||
lin pot3 n =
|
||||
{s = table {
|
||||
NCard g => \\f => mkmie n.size (n.s ! (NCard Fem) ! f ) ;
|
||||
NOrd g => \\f => mkMie n.size g (n.s ! (NCard Fem) ! f )
|
||||
};
|
||||
size = pl
|
||||
} ;
|
||||
|
||||
|
||||
lin pot3plus n m =
|
||||
{s = \\c, f => mkmie n.size (n.s ! (NCard Fem) ! f ) ++ m.s ! c ! f ;
|
||||
size = pl
|
||||
};
|
||||
|
||||
oper mksute : Size -> Str = \sz -> table {sg => "sutã" ; _ => "sute" } ! sz ;
|
||||
oper mkSute : Size -> Gender -> Str = \sz, g ->
|
||||
table {sg => mkOrdinalForm "sutã" g ;
|
||||
_ => mkOrdinalForm "sute" g } ! sz ;
|
||||
|
||||
oper mkmie : Size -> Str -> Str = \sz, attr ->
|
||||
table {sg => "o" ++ "mie" ;
|
||||
less20 => attr ++ "mii" ;
|
||||
pl => attr ++ "de" ++ "mii"} ! sz ;
|
||||
|
||||
|
||||
oper mkMie : Size -> Gender -> Str -> Str = \sz, g, attr ->
|
||||
table { sg => "o" ++ mkOrdinalForm "mie" g ;
|
||||
less20 => attr ++ mkOrdinalForm "mii" g ;
|
||||
pl => attr ++ "de" ++ mkOrdinalForm "mii" g } ! sz ;
|
||||
|
||||
|
||||
|
||||
--numerals as sequences of digits :
|
||||
|
||||
lincat
|
||||
Dig = {s : CardOrd => Str; n : Size ; isDig : Bool} ;
|
||||
|
||||
lin
|
||||
IDig d = d ;
|
||||
|
||||
IIDig d i = {
|
||||
s = \\o => d.s ! NCard Masc ++ i.s ! o ;
|
||||
n = case d.n of
|
||||
{ sg => if_then_else Size (i.isDig) less20 pl ;
|
||||
_ => pl
|
||||
};
|
||||
isDig = False
|
||||
} ;
|
||||
lin
|
||||
D_0 = mkDig "0" ;
|
||||
D_1 = mk3Dig "1" "1ul" "1a" sg ;
|
||||
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 mkDig : Str -> Dig = \c -> mk3Dig c (c + "lea") (c + "a") less20 ;
|
||||
|
||||
oper mk3Dig : Str -> Str -> Str-> Size -> Dig = \c,u,o,n -> {
|
||||
s = table {NCard g => c ; NOrd Masc => u ; NOrd Fem => o } ;
|
||||
n = n;
|
||||
isDig = True ;
|
||||
lock_Dig = <>
|
||||
} ;
|
||||
|
||||
TDigit = {s : CardOrd => Str; n : Size ; isDig : Bool} ;
|
||||
|
||||
|
||||
}
|
||||
395
next-lib/src/romanian/ParadigmsRon.gf
Normal file
395
next-lib/src/romanian/ParadigmsRon.gf
Normal file
@@ -0,0 +1,395 @@
|
||||
--# -path=.:../romance:../common:../abstract:../../prelude
|
||||
|
||||
--1 Romanian Lexical Paradigms
|
||||
--
|
||||
-- Ramona Enache 2008 - 2009
|
||||
--
|
||||
|
||||
|
||||
resource ParadigmsRon =
|
||||
open
|
||||
(Predef=Predef),
|
||||
Prelude,
|
||||
MorphoRon,
|
||||
CatRon in {
|
||||
|
||||
flags optimize=all ;
|
||||
|
||||
--2 Parameters
|
||||
--
|
||||
-- To abstract over gender names, we define the following identifiers.
|
||||
|
||||
oper
|
||||
NGender : Type ;
|
||||
|
||||
masculine : NGender ;
|
||||
feminine : NGender ;
|
||||
neuter : NGender ;
|
||||
|
||||
Gender : Type ;
|
||||
|
||||
Masculine : Gender ;
|
||||
Feminine : Gender ;
|
||||
|
||||
--To abstract over animacy, we define the following :
|
||||
|
||||
Anim : Type ;
|
||||
|
||||
animate : Anim ;
|
||||
inanimate : Anim;
|
||||
|
||||
-- To abstract over number names, we define the following.
|
||||
|
||||
Number : Type ;
|
||||
|
||||
singular : Number ;
|
||||
plural : Number ;
|
||||
|
||||
-- prepositions which require cases :
|
||||
|
||||
Preposition : Type ;
|
||||
|
||||
NCase : Type ;
|
||||
Acc : NCase ;
|
||||
Dat : NCase ;
|
||||
Gen : NCase ;
|
||||
|
||||
mkPrep : Str -> NCase -> Prep ;
|
||||
noPrep : NCase -> Prep ;
|
||||
|
||||
--2 Nouns
|
||||
|
||||
|
||||
|
||||
--3 Relational nouns
|
||||
--
|
||||
-- Relational nouns need a noun and a preposition.
|
||||
|
||||
mkN2 : N -> Prep -> N2 ;
|
||||
mkN2 n p = n ** {lock_N2 = <> ; c2 = p};
|
||||
|
||||
-- Three-place relational nouns need two prepositions.
|
||||
|
||||
mkN3 : N -> Prep -> Prep -> N3 ;
|
||||
mkN3 n p q = n ** {lock_N3 = <> ; c2 = p ; c3 = q };
|
||||
|
||||
|
||||
|
||||
--3 Proper names and noun phrases
|
||||
--
|
||||
-- Proper names need a string and a gender. If no gender is given, the
|
||||
-- feminine is used for strings ending with "e", the masculine for other strings.
|
||||
|
||||
mkPN = overload {
|
||||
mkPN : Str -> PN = mkPropN ;
|
||||
mkPN : Str -> Gender -> PN = mkPropNoun ;
|
||||
mkPN : Str -> Gender -> Number -> PN = mkProperNoun;
|
||||
} ;
|
||||
|
||||
|
||||
mkPropN : Str -> PN = \Ion ->
|
||||
case last Ion of
|
||||
{ "a" => mkPropNoun Ion Feminine ;
|
||||
_ => mkPropNoun Ion Masculine
|
||||
};
|
||||
|
||||
mkPropNoun : Str -> Gender -> PN = \Ion, gen ->
|
||||
mkProperNoun Ion gen singular ;
|
||||
|
||||
mkProperNoun : Str -> Gender -> Number -> PN = \Ion, gen, num ->
|
||||
{s = table {ANomAcc => Ion;
|
||||
AGenDat => case <last Ion,gen> of
|
||||
{ <"a",Fem> => init Ion + "ei" ;
|
||||
_ => "lui" ++ Ion
|
||||
};
|
||||
AVoc => Ion
|
||||
};
|
||||
g = gen ;
|
||||
n = num ;
|
||||
lock_PN = <>
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
--3 Two-place adjectives
|
||||
--
|
||||
-- Two-place adjectives need a preposition for their second argument.
|
||||
|
||||
mkA2 : A -> Prep -> A2 ;
|
||||
mkA2 a p = a ** {c2 = p ; lock_A2 = <>} ;
|
||||
|
||||
--.
|
||||
--2 Definitions of the paradigms
|
||||
--
|
||||
-- The definitions should not bother the user of the API. So they are
|
||||
-- hidden from the document.
|
||||
|
||||
|
||||
NGender = MorphoRon.NGender ;
|
||||
Number = MorphoRon.Number ;
|
||||
Anim = MorphoRon.Animacy ;
|
||||
Gender = MorphoRon.Gender ;
|
||||
NCase = MorphoRon.NCase ;
|
||||
|
||||
masculine = NMasc ;
|
||||
feminine = NFem ;
|
||||
neuter = NNeut ;
|
||||
|
||||
singular = Sg ;
|
||||
plural = Pl ;
|
||||
|
||||
animate = Animate ;
|
||||
inanimate = Inanimate ;
|
||||
|
||||
Masculine = Masc ;
|
||||
Feminine = Fem ;
|
||||
|
||||
Acc = Ac ;
|
||||
Dat = Da ;
|
||||
Gen = Ge ;
|
||||
|
||||
|
||||
Preposition = Compl ;
|
||||
mkPrep ss cc = {s = ss ; c = cc; isDir = True; lock_Prep = <>} ;
|
||||
noPrep cc = mkPrep [] cc ;
|
||||
|
||||
|
||||
compN : N -> Str -> N ;
|
||||
compN x y = composeN x y ** {lock_N = <>} ;
|
||||
|
||||
ccompN : N -> Str -> N ;
|
||||
ccompN x y = ccompose x y ** {lock_N = <>} ;
|
||||
|
||||
mkNI : Str -> Str -> NGender -> N;
|
||||
mkNI s ss g = mkIn (mkNomIrreg s ss g) ** {lock_N = <>} ;
|
||||
|
||||
regN : Str -> NGender -> N ;
|
||||
regN s g = mkIn (mkNomReg s g) ** {lock_N = <>};
|
||||
|
||||
|
||||
mkVI : Str -> Str -> Str -> N;
|
||||
mkVI s ss sss = mkIn (mkNomVIrreg s ss sss) ** {lock_N = <>} ;
|
||||
|
||||
mkIn : N -> N ;
|
||||
mkIn n = mkInanimate n ** {lock_N = <> };
|
||||
|
||||
mkAnim : N -> N ;
|
||||
mkAnim n = mkAnimate n ** {lock_N = <> };
|
||||
|
||||
chV : Str -> N -> N ;
|
||||
chV s n = mkVocc n s ** {lock_N = <> } ;
|
||||
|
||||
|
||||
--smart paradigm for inferring the gender of the nouns
|
||||
--partly based on the paper
|
||||
--"COVERT SEMANTIC AND MORPHOPHONEMIC CATEGORIES IN THE ROMANIAN GENDER SYSTEM"
|
||||
-- by Jan Louis Perkowski, Emil Vrabie
|
||||
|
||||
mkSPN : Str -> N ;
|
||||
mkSPN s = case s of
|
||||
{ x + ("ã"|"e"|"a") => regN s feminine ;
|
||||
x + ("el"|"mp"|"mb"|"en"|"id"|"at"|"ete"|"ol"|"et"|"or") => regN s masculine ;
|
||||
_ => regN s neuter
|
||||
};
|
||||
|
||||
mkNN : Str -> Str -> N ;
|
||||
mkNN s ss = case s of
|
||||
{ x + ("ã"|"e"|"a") => mkNI s ss feminine ;
|
||||
_ => case ss of
|
||||
{x + "uri" => mkNI s ss neuter ;
|
||||
x + "e" => mkNI s ss neuter ;
|
||||
_ => mkNI s ss masculine
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
mkN = overload {
|
||||
mkN : Str -> Str -> NGender -> N = mkNI; -- worst case - we need Singular + Plural form + gender
|
||||
mkN : Str -> Str -> Str -> N = mkVI; -- very irregular nouns - feminine
|
||||
mkN : Str -> Str -> N = mkNN; -- needed Singular + Plural form, infers gender
|
||||
mkN : Str -> NGender -> N = regN; -- needed Singular + gender, infers Plural form
|
||||
mkN : Str -> N = mkSPN; -- needed Singular form, infers gender and Plural form
|
||||
} ;
|
||||
|
||||
--because the plurals ending in "uri" are becoming less and less frequent for neuter nouns,
|
||||
--and because there is no way of infering the plural form by looking at the structure of the word
|
||||
--we treat this case separately :
|
||||
|
||||
mkNR : Str -> N;
|
||||
mkNR s = mkIn (mkNomNeut s) ** {lock_N = <>} ;
|
||||
|
||||
--------------------------------------------------------------------
|
||||
|
||||
mk4A : Str -> Str -> Str -> Str -> A;
|
||||
mk4A a b c d =
|
||||
let adj = mkAdjSpec a b c d in
|
||||
{s = table { Posit => adj.s ;
|
||||
Compar => \\f => "mai" ++ (adj.s ! f) ++ "decât";
|
||||
Superl => table {AF g n a c => artDem g n c ++ "mai" ++ adj.s ! (AF g n Indef c) ;
|
||||
AA => artDem Masc Sg ANomAcc ++ "mai" ++ adj.s ! AA
|
||||
|
||||
}
|
||||
}; isPre = False ; lock_A = <>} ;
|
||||
|
||||
mk5A : Str -> Str -> Str -> Str -> Str -> A ;
|
||||
mk5A a b c d e =
|
||||
let adj = mkAdjSSpec a b c d e in
|
||||
{s = table { Posit => adj.s ;
|
||||
Compar => \\f => "mai" ++ (adj.s ! f) ++ "decât";
|
||||
Superl => table {AF g n a c => artDem g n c ++ "mai" ++ adj.s ! (AF g n Indef c);
|
||||
AA => artDem Masc Sg ANomAcc ++ "mai" ++ adj.s ! AA
|
||||
|
||||
}
|
||||
}; isPre = False ; lock_A = <>} ;
|
||||
|
||||
regA : Str -> A = \auriu -> let adj = mkAdjReg auriu in
|
||||
{s = table {Posit => adj.s ;
|
||||
Compar => \\f => "mai" ++ (adj.s ! f) ++ "decât";
|
||||
Superl => table {AF g n a c => artDem g n c ++ "mai" ++ adj.s ! (AF g n Indef c);
|
||||
AA => artDem Masc Sg ANomAcc ++ "mai" ++ adj.s ! AA
|
||||
}
|
||||
}; isPre = False ; lock_A = <> } ;
|
||||
|
||||
invarA : Str -> A = \auriu ->
|
||||
let adj =mkAdjInvar auriu in
|
||||
{s = table { Posit => adj.s ;
|
||||
Compar => \\f => "mai" ++ (adj.s ! f) ++ "decât";
|
||||
Superl => table {AF g n a c => artDem g n c ++ "mai" ++ adj.s ! (AF g n Indef c);
|
||||
AA => artDem Masc Sg ANomAcc ++ "mai" ++ adj.s ! AA
|
||||
|
||||
}
|
||||
}; isPre = False ; lock_A = <>} ;
|
||||
|
||||
mkRMut : Str -> A = \auriu ->
|
||||
let adj = mkRegMut auriu in
|
||||
{s = table { Posit => adj.s ;
|
||||
Compar => \\f => "mai" ++ (adj.s ! f) ++ "decât";
|
||||
Superl => table {AF g n a c => artDem g n c ++ "mai" ++ adj.s ! (AF g n Indef c);
|
||||
AA => artDem Masc Sg ANomAcc ++ "mai" ++ adj.s ! AA
|
||||
|
||||
}
|
||||
}; isPre = False ; lock_A = <>} ;
|
||||
|
||||
mkSMut : Str -> A = \auriu ->
|
||||
let adj = mkSpecMut auriu in
|
||||
{s = table { Posit => adj.s ;
|
||||
Compar => \\f => "mai" ++ (adj.s ! f) ++ "decât";
|
||||
Superl => table {AF g n a c => artDem g n c ++ "mai" ++ adj.s ! (AF g n Indef c);
|
||||
AA => artDem Masc Sg ANomAcc ++ "mai" ++ adj.s ! AA
|
||||
|
||||
}
|
||||
}; isPre = False ; lock_A = <>} ;
|
||||
|
||||
mkADeg : A -> A -> A ;
|
||||
noComp : A -> A ;
|
||||
|
||||
|
||||
prefA : A -> A ;
|
||||
|
||||
mkADeg a b =
|
||||
{s = table {Posit => a.s ! Posit ; _ => b.s ! Posit} ; isPre = a.isPre ; lock_A = <>} ;
|
||||
|
||||
noComp a =
|
||||
{s = \\_ => a.s ! Posit ;
|
||||
isPre = a.isPre ;
|
||||
lock_A = <>} ;
|
||||
|
||||
prefA a = {s = a.s ; isPre = True ; lock_A = <>} ;
|
||||
|
||||
--Adverbs :
|
||||
|
||||
mkAdv : Str -> Adv ;
|
||||
mkAdV : Str -> AdV ;
|
||||
mkAdA : Str -> AdA ;
|
||||
|
||||
mkAdv x = ss x ** {lock_Adv = <>} ;
|
||||
mkAdV x = ss x ** {lock_AdV = <>} ;
|
||||
mkAdA x = ss x ** {lock_AdA = <>} ;
|
||||
|
||||
|
||||
mkV2S : V -> Prep -> V2S ;
|
||||
-- mkVV : V -> VV ;
|
||||
mkV2V : V -> Prep -> Prep -> V2V ;
|
||||
mkVA : V -> VA ;
|
||||
mkV2A : V -> Prep -> Prep -> V2A ;
|
||||
mkVQ : V -> VQ ;
|
||||
mkV2Q : V -> Prep -> V2Q ;
|
||||
|
||||
mkAS : A -> AS ;
|
||||
mkA2S : A -> Prep -> A2S ;
|
||||
mkAV : A -> Prep -> AV ;
|
||||
mkA2V : A -> Prep -> Prep -> A2V ;
|
||||
|
||||
|
||||
mmkV3 : V -> Prep -> Prep -> V3;
|
||||
mmkV3 v p q = v ** {c2 = p ; c3 = q ; lock_V3 = <>} ;
|
||||
|
||||
dirV3 : V -> V3 ;
|
||||
dirV3 v = mmkV3 v (noPrep Ac) (noPrep Da) ;
|
||||
|
||||
mkV3 = overload {
|
||||
mkV3 : V -> V3 = dirV3 ;
|
||||
mkV3 : V -> Prep -> Prep -> V3 = mmkV3
|
||||
} ;
|
||||
|
||||
V0 : Type = V ;
|
||||
AS, AV : Type = A ;
|
||||
A2S, A2V : Type = A2 ;
|
||||
mkV0 : V -> V0 ;
|
||||
mkV0 v = v ** {lock_V0 = <>} ;
|
||||
|
||||
mmkV2 : V -> Prep -> V2 ;
|
||||
mmkV2 v p = v ** {c2 = p ; lock_V2 = <>} ;
|
||||
|
||||
dirV2 : V -> V2 ;
|
||||
dirV2 v = mmkV2 v (noPrep Ac) ;
|
||||
|
||||
mmkV3 : V -> Prep -> Prep -> V3 ;
|
||||
mmkV3 v p q = v ** {c2 = p ; c3 = q ; lock_V3 = <>} ;
|
||||
|
||||
mkVS : V -> VS ;
|
||||
mkVS v = v ** {m = \\_ => Indic ; lock_VS = <>} ;
|
||||
mkV2S v p = mmkV2 v p ** {mn,mp = Indic ; lock_V2S = <>} ;
|
||||
-- mkVV v = v ** {c2 = complAcc ; lock_VV = <>} ;
|
||||
-- deVV v = v ** {c2 = complGen ; lock_VV = <>} ;
|
||||
--aVV v = v ** {c2 = complDat ; lock_VV = <>} ;
|
||||
mkV2V v p q = mmkV3 v p q ** {lock_V2V = <>} ;
|
||||
mkVA v = v ** {lock_VA = <>} ;
|
||||
mkV2A v p q = mmkV3 v p q ** {lock_V2A = <>} ;
|
||||
mkVQ : V -> VQ ;
|
||||
mkVQ v = v ** {lock_VQ = <>} ;
|
||||
mkV2Q : V -> Prep -> V2Q ;
|
||||
mkV2Q v p = mmkV2 v p ** {lock_V2Q = <>} ;
|
||||
|
||||
mkAS v = v ** {lock_AS = <>} ; ---- more moods
|
||||
mkA2S v p = mkA2 v p ** {lock_A2S = <>} ;
|
||||
mkAV v p = v ** {c = p.p1 ; s2 = p.p2 ; lock_AV = <>} ;
|
||||
mkA2V v p q = mkA2 v p ** {s3 = q.p2 ; c3 = q.p1 ; lock_A2V = <>} ;
|
||||
|
||||
|
||||
|
||||
|
||||
mkOrd : A -> Ord ;
|
||||
mkOrd a = {s = a.s ! Posit ; isPre = a.isPre ; lock_Ord = <>} ;
|
||||
|
||||
|
||||
|
||||
--mkComp a =
|
||||
--let adj = a.s ! Posit in
|
||||
--{ s = table {Posit => adj ;
|
||||
-- Compar => \\f => "mai" ++ adj ! f ++ "decât";
|
||||
-- Superl => table {AF g n a c => (artDem g n c) ++ "mai" ++ adj ! (AF g n a c);
|
||||
-- AA => "cel"++"mai" ++ adj ! AA
|
||||
-- }
|
||||
-- };
|
||||
-- isPre = a.isPre ;
|
||||
-- lock_A = <>
|
||||
-- };
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
} ;
|
||||
160
next-lib/src/romanian/ResRon.gf
Normal file
160
next-lib/src/romanian/ResRon.gf
Normal file
@@ -0,0 +1,160 @@
|
||||
--1 Romance auxiliary operations.
|
||||
--
|
||||
|
||||
resource ResRon = ParamX ** open Prelude in {
|
||||
|
||||
flags optimize=all ;
|
||||
|
||||
flags optimize=all ;
|
||||
|
||||
--2 Enumerated parameter types for morphology
|
||||
--
|
||||
-- These types are the ones found in school grammars.
|
||||
-- Their parameter values are atomic.
|
||||
|
||||
param
|
||||
|
||||
Gender = Masc | Fem ;
|
||||
|
||||
NGender = NMasc | NFem | NNeut ;
|
||||
|
||||
Mood = Indic | Conjunct ;
|
||||
|
||||
Direct = DDir | DInv ;
|
||||
|
||||
NumF = Formal | Informal ;
|
||||
|
||||
Animacy = Animate | Inanimate ;
|
||||
|
||||
param Size = sg | less20 | pl ;
|
||||
|
||||
Case = Acc | Dat | Gen ;
|
||||
|
||||
-- Adjectives are inflected in number, gender, have specific form for enclitic determined
|
||||
--article, and specific forms for Nom-Accusative/Dative-Genitive/Voccative
|
||||
|
||||
AForm = AF Gender Number Species ACase | AA ;
|
||||
|
||||
-- Gender is not morphologically determined for first and second person pronouns.
|
||||
|
||||
PronGen = PGen Gender | PNoGen ;
|
||||
|
||||
-- Cardinal numerals have gender, ordinal numerals have full number as well.
|
||||
|
||||
ACase = ANomAcc | AGenDat | AVoc ;
|
||||
Species = Def | Indef ;
|
||||
NCase = No | Da | Ac | Ge | Vo ;
|
||||
|
||||
|
||||
CardOrd = NCard Gender | NOrd Gender;
|
||||
|
||||
|
||||
--3 Verbs
|
||||
|
||||
|
||||
-- the form we build on syntactical level, based on VForm
|
||||
-- it represents the main verb forms in Romanian
|
||||
|
||||
param
|
||||
Temps1 = TPresn | TImparf | TPComp | TPSimple | TPPerfect | TFutur ;
|
||||
TSubj1 = TSPres | TSPast ;
|
||||
-- TPart1 = TGer | TPPasse Gender Number Species ACase;
|
||||
|
||||
VerbForm = TInf
|
||||
| TIndi Temps1 Number Person
|
||||
| TCondi Number Person
|
||||
| TSubjo TSubj1 Number Person
|
||||
| TImper NumPersI
|
||||
| TGer
|
||||
| TPPasse Gender Number Species ACase ;
|
||||
|
||||
-- the form we build on morphological level :
|
||||
|
||||
Temps = Presn | Imparf | PSimple | PPerfect ;
|
||||
TSubj = SPres ;
|
||||
--TPart = PPasse Gender Number Species ACase;
|
||||
|
||||
VForm = Inf
|
||||
| Indi Temps Number Person
|
||||
| Subjo TSubj Number Person
|
||||
| Imper NumPersI
|
||||
| Ger
|
||||
| PPasse Gender Number Species ACase ;
|
||||
|
||||
-- form for compatibility with the other Romance languages, to be used in case that
|
||||
-- Romanian will be integrated in the Romance category
|
||||
|
||||
param
|
||||
VF =
|
||||
VInfin Bool
|
||||
| VFin TMood Number Person
|
||||
| VImper NumPersI
|
||||
| VPart Gender Number Species ACase
|
||||
| VGer
|
||||
;
|
||||
|
||||
TMood =
|
||||
VPres Mood
|
||||
| VImperf Mood --# notpresent
|
||||
| VPasse --# notpresent
|
||||
| VFut --# notpresent
|
||||
| VCondit --# notpresent
|
||||
;
|
||||
|
||||
NumPersI = SgP2 | PlP1 | PlP2 ;
|
||||
|
||||
VPForm =
|
||||
VPFinite TMood Anteriority
|
||||
| VPImperat
|
||||
| VPGerund
|
||||
| VPInfinit Anteriority Bool ;
|
||||
|
||||
RTense =
|
||||
RPres
|
||||
| RPast --# notpresent
|
||||
| RPasse --# notpresent
|
||||
| RFut --# notpresent
|
||||
| RCond --# notpresent
|
||||
;
|
||||
|
||||
-- Agreement of adjectives, verb phrases, and relative pronouns.
|
||||
|
||||
oper
|
||||
AAgr : Type = {g : Gender ; n : Number} ;
|
||||
Agr : Type = AAgr ** {p : Person} ;
|
||||
|
||||
param
|
||||
RAgr = RAg {g : Gender ; n : Number} | RNoAg ; --- AAgr
|
||||
|
||||
|
||||
oper
|
||||
genForms : Str -> Str -> Gender => Str = \bon,bonne ->
|
||||
table {
|
||||
Masc => bon ;
|
||||
Fem => bonne
|
||||
} ;
|
||||
|
||||
aagrForms : (x1,_,_,x4 : Str) -> (AAgr => Str) = \tout,toute,tous,toutes ->
|
||||
table {
|
||||
{g = g ; n = Sg} => genForms tout toute ! g ;
|
||||
{g = g ; n = Pl} => genForms tous toutes ! g
|
||||
} ;
|
||||
|
||||
Noun = {s : Number => Species => ACase => Str; g : NGender; a : Animacy} ;
|
||||
Adj = {s : AForm => Str} ;
|
||||
-- A = {s : Degree => AForm => Str ; isPre : Bool} ;
|
||||
|
||||
Compl : Type = {s : Str ; c : NCase ; isDir : Bool} ;
|
||||
|
||||
-- complAcc : Compl = {s = [] ; c = Acc ; isDir = True} ;
|
||||
-- complGen : Compl = {s = [] ; c = Gen ; isDir = True} ;
|
||||
-- complDat : Compl = {s = [] ; c = Dat ; isDir = True} ;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user