mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-23 11:42:49 -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