mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-09 04:59:31 -06:00
added the rest of Romanian :-)
This commit is contained in:
67
lib/src/romanian/AdjectiveRon.gf
Normal file
67
lib/src/romanian/AdjectiveRon.gf
Normal file
@@ -0,0 +1,67 @@
|
||||
incomplete concrete AdjectiveRon of Adjective =
|
||||
CatRon ** open ResRon, Prelude in {
|
||||
|
||||
lin
|
||||
|
||||
PositA a = {
|
||||
s = a.s ;
|
||||
isPre = a.isPre
|
||||
} ;
|
||||
ComparA a np = {
|
||||
s = \\af => more_CAdv.s ++ a.s ! af ++ conjThan ++ (np.s ! Ac).comp ;
|
||||
isPre = False
|
||||
} ;
|
||||
|
||||
CAdvAP ad ap np = {
|
||||
s = \\af => case af of
|
||||
{ AF g n sp c => artDem g n c ++ ad.s ++ ap.s ! (AF g n Indef c) ++ ad.p ++ (np.s ! No).comp ;
|
||||
AA => ad.s ++ ap.s ! af ++ ad.p ++ (np.s ! No).comp
|
||||
};
|
||||
isPre = False
|
||||
} ;
|
||||
|
||||
UseComparA a = {
|
||||
s = \\af => more_CAdv.s ++ a.s ! af ;
|
||||
isPre = False
|
||||
} ;
|
||||
|
||||
AdjOrd ord = {
|
||||
s = \\af => case af of {
|
||||
AF g n sp c => ord.s ! n ! g ! (convACase c) ;
|
||||
_ => ord.s ! Sg ! Masc ! No
|
||||
} ;
|
||||
isPre = True
|
||||
} ;
|
||||
|
||||
-- $SuperlA$ belongs to determiner syntax in $Noun$.
|
||||
|
||||
ComplA2 adj np = {
|
||||
s = \\af => adj.s ! af ++ appCompl adj.c2 np ;
|
||||
isPre = False
|
||||
} ;
|
||||
|
||||
ReflA2 adj = {
|
||||
s = \\af => case af of
|
||||
{ AF g n sp c => adj.s ! af ++ adj.c2.s ++
|
||||
reflPron n P3 (convCase adj.c2.c) ++ reflPronHard g n P3;
|
||||
AA => adj.s ! af ++ adj.c2.s ++ reflPron Sg P3 (convCase adj.c2.c) ++ reflPronHard Masc Sg P3
|
||||
};
|
||||
isPre = False
|
||||
} ;
|
||||
|
||||
SentAP ap sc = {
|
||||
s = \\a => ap.s ! a ++ sc.s ; --- mood
|
||||
isPre = False
|
||||
} ;
|
||||
|
||||
AdAP ada ap = {
|
||||
s = \\a => ada.s ++ ap.s ! a ;
|
||||
isPre = ap.isPre
|
||||
} ;
|
||||
|
||||
UseA2 a = {
|
||||
s = a.s ;
|
||||
isPre = False
|
||||
} ;
|
||||
|
||||
};
|
||||
30
lib/src/romanian/AdverbRon.gf
Normal file
30
lib/src/romanian/AdverbRon.gf
Normal file
@@ -0,0 +1,30 @@
|
||||
incomplete concrete AdverbRon of Adverb =
|
||||
CatRon ** open ResRon, Prelude in {
|
||||
|
||||
lin
|
||||
PositAdvAdj a = {
|
||||
s = a.s ! AA
|
||||
} ;
|
||||
ComparAdvAdj cadv a np = {
|
||||
s = cadv.s ++ a.s ! AA ++ cadv.p ++ (np.s ! No).comp
|
||||
|
||||
} ;
|
||||
ComparAdvAdjS cadv a s = {
|
||||
s = cadv.s ++ a.s ! AA ++ cadv.p ++ s.s ! Indic
|
||||
} ;
|
||||
|
||||
PrepNP prep np = {s = case prep.needIndef of
|
||||
{False => prep.s ++ (np.s ! prep.c).comp;
|
||||
_ => prep.s ++ np.indForm}
|
||||
};
|
||||
|
||||
AdAdv ada adv = {s = ada.s ++ adv.s } ;
|
||||
|
||||
SubjS subj s = {
|
||||
s = subj.s ++ s.s ! Indic
|
||||
} ;
|
||||
|
||||
AdnCAdv cadv = {s = cadv.s ++ conjThan} ;
|
||||
-- doesn't yield to a correct form for more_CAdv
|
||||
|
||||
}
|
||||
@@ -2,10 +2,10 @@ 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 = <>} ;
|
||||
|
||||
oper VerbeN = {s: VForm => Str ; isRefl : Agr => RAgr; nrClit : VClit} ;
|
||||
oper mkNV : Verbe -> V = \ve -> {s = ve.s ; isRefl = \\_ => RNoAg ; nrClit = VNone ;lock_V = <> } ;
|
||||
oper mkRVAcc : Verbe -> V = \ve -> {s = ve.s ; isRefl = \\a => aRefl a; nrClit = VRefl ;lock_V = <>} ;
|
||||
oper mkRVDat : Verbe -> V = \ve -> {s = ve.s ; isRefl = \\a => dRefl a; nrClit = VRefl ;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)
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
concrete CatRon of Cat =
|
||||
CommonX - [Temp,TTAnt,Tense,TPres,TPast,TFut,TCond]
|
||||
** open Prelude, ResRon, (R = ParamX) in {
|
||||
** open Prelude, ResRon, MorphoRon,(R = ParamX) in {
|
||||
|
||||
flags optimize=all_subs ;
|
||||
|
||||
@@ -10,11 +10,47 @@ concrete CatRon of Cat =
|
||||
|
||||
lincat
|
||||
|
||||
-- Tensed/Untensed
|
||||
|
||||
S = {s : Mood => Str} ;
|
||||
QS = {s : QForm => Str} ;
|
||||
RS = {s : Mood => Agr => Str ; c : NCase} ;
|
||||
SSlash = {
|
||||
s : AAgr => Mood => Str ;
|
||||
c2 : Compl
|
||||
} ;
|
||||
-- Sentence
|
||||
|
||||
Cl = {s : Direct => RTense => Anteriority => Polarity => Mood => Str} ;
|
||||
ClSlash = {
|
||||
s : AAgr => Direct => RTense => Anteriority => Polarity => Mood => Str ;
|
||||
c2 : Compl
|
||||
} ;
|
||||
Imp = {s : Polarity => ImpForm => Gender => Str} ;
|
||||
|
||||
-- Relative
|
||||
|
||||
RCl = {
|
||||
s : Agr => RTense => Anteriority => Polarity => Mood => Str ;
|
||||
c : NCase
|
||||
} ;
|
||||
RP = {s : AAgr => NCase => Str ; a : AAgr ; hasAgr : Bool; hasRef : Bool} ;
|
||||
|
||||
-- Verb
|
||||
|
||||
-- VP = ResRon.VP ;
|
||||
-- VPSlash = ResRon.VP ** {c2 : Compl} ;
|
||||
VP = {
|
||||
s : VForm => Str ;
|
||||
isRefl : Agr => RAgr ;
|
||||
nrClit : VClit ;
|
||||
isFemSg : Bool ; -- needed for the correct placement of the Accusative clitic
|
||||
neg : Polarity => Str ; -- ne-pas not needed - just "nu"
|
||||
clAcc : RAgr ; -- le/se -- not needed if they are used in the noun
|
||||
clDat : RAgr ; -- lui -- not needed if they are used in the noun
|
||||
comp : Agr => Str ; -- content(e) ; à ma mère ; hier -
|
||||
ext : Polarity => Str ; -- que je dors / que je dorme - so that it always comes after all the complements
|
||||
} ;
|
||||
|
||||
VPSlash = VP ** {c2 : Compl; needAgr : Bool} ;
|
||||
-- Comp = {s : Agr => Str} ;
|
||||
|
||||
-- Adjective
|
||||
@@ -23,48 +59,113 @@ concrete CatRon of Cat =
|
||||
|
||||
-- Noun
|
||||
lincat
|
||||
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} ;
|
||||
CN = {s : Number => Species => ACase => Str; g : NGender; a : Animacy } ;
|
||||
Pron = {s : NCase => Str ;
|
||||
c1, c2 : Clitics => Str ;
|
||||
a : Agr ;
|
||||
poss : Number => Gender => Str
|
||||
} ;
|
||||
NP = NounPhrase ;
|
||||
--NCase because of the pronoun
|
||||
|
||||
Det = {s : Gender => NCase => Str ; n : Number ;
|
||||
isDef : Bool ;
|
||||
post : Gender => NCase => Str ;
|
||||
sp : Gender => NCase => Str ; -- pentru Lexicon e aceeasi forma totusi ! posibil
|
||||
-- probabil pentru ca orice Quant -> Det
|
||||
size : Str ; --because of the numerals
|
||||
hasRef : Bool
|
||||
};
|
||||
Predet = {s : AAgr => ACase => Str ; c : NCase} ;
|
||||
-- Art = {s : Bool => Number => Gender => NCase => Str ; isDef : Bool } ;
|
||||
Quant = {
|
||||
s : Bool => Number => Gender => ACase => Str ;
|
||||
sp : Number => Gender => ACase => Str ; -- diferente si in Lexicon, ex : acesta, aceasta
|
||||
isDef : Bool ;
|
||||
isPost : Bool ;
|
||||
hasRef : Bool
|
||||
};
|
||||
|
||||
-- Numeral
|
||||
|
||||
Numeral = {s : ACase => CardOrd => NumF => Str ; size : Size } ;
|
||||
Digits = {s : CardOrd => Str ; n : Size ; isDig : Bool} ;
|
||||
Numeral = {s : ACase => CardOrd => NumF => Str ;
|
||||
sp : ACase => CardOrd => NumF => Str ; size : Size } ;
|
||||
Digits = {s : CardOrd => Str ; n : Size ; isDig : Bool} ;
|
||||
|
||||
Num = {s : Gender => Str ; sp : Gender => Str ;
|
||||
isNum : Bool ; n : Number; size : Str } ;
|
||||
Card = {s : Gender => Str ; sp : Gender => Str ;
|
||||
n : Number; size : Size} ;
|
||||
Ord = {s : Number => Gender => NCase => Str; isPre : Bool} ;
|
||||
|
||||
--Question
|
||||
-- Question
|
||||
|
||||
QCl = {s : RTense => Anteriority => Polarity => QForm => Str} ;
|
||||
IComp = {s : AAgr => Str} ;
|
||||
IDet = {s : Gender => ACase => Str ; n : Number} ;
|
||||
|
||||
IQuant = {s : Number => Gender => ACase => Str } ;
|
||||
IP = {s : NCase => Str ; a : AAgr ; hasRef : Bool} ;
|
||||
-- Structural
|
||||
|
||||
Conj = {s1,s2 : Str ; n : Number} ;
|
||||
Subj = {s : Str ; m : Mood} ;
|
||||
Prep = {s : Str ; c : NCase ; isDir : Bool} ;
|
||||
Subj = {s : Str} ; --they all need Indicative mood
|
||||
Prep = {s : Str ; c : NCase ; isDir : PrepDir ; needIndef : Bool ; prepDir : Str} ;
|
||||
|
||||
-- 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} ;
|
||||
--Verb = {s : VForm => Str } ;
|
||||
V ={s : VForm => Str ; isRefl : Agr => RAgr; nrClit : VClit} ;
|
||||
VQ, VA = V ;
|
||||
V2,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} ;
|
||||
VV = V ** {c2 : Agr => Str} ;
|
||||
A = {s : AForm => Str ; isPre : Bool} ;
|
||||
A2 = {s : AForm => Str ; c2 : Compl} ;
|
||||
|
||||
N = Noun ;
|
||||
N2 = Noun ** {c2 : Compl} ;
|
||||
N3 = Noun ** {c2,c3 : Compl} ;
|
||||
PN = {s : ACase => Str ; g : Gender ; n : Number} ;
|
||||
PN = {s : NCase => Str ; g : Gender ; n : Number; a : Animacy} ;
|
||||
|
||||
Comp = {s : Agr => Str} ;
|
||||
|
||||
Temp = {s : Str ; t : RTense ; a : Anteriority} ;
|
||||
Tense = {s : Str ; t : RTense} ;
|
||||
lin
|
||||
TTAnt t a = {s = a.s ++ t.s ; a = a.a ; t = t.t} ;
|
||||
TPres = {s = []} ** {t = RPres} ;
|
||||
TPast = {s = []} ** {t = RPast} ; --# notpresent
|
||||
TFut = {s = []} ** {t = RFut} ; --# notpresent
|
||||
TCond = {s = []} ** {t = RCond} ; --# notpresent
|
||||
|
||||
|
||||
|
||||
|
||||
oper
|
||||
aagr : Gender -> Number -> AAgr = \g,n ->
|
||||
{g = g ; n = n} ;
|
||||
agrP3 : Gender -> Number -> Agr = \g,n ->
|
||||
aagr g n ** {p = P3} ;
|
||||
|
||||
conjGender : Gender -> Gender -> Gender = \m,n ->
|
||||
case m of {
|
||||
Fem => n ;
|
||||
_ => Masc
|
||||
} ;
|
||||
|
||||
conjAgr : Agr -> Agr -> Agr = \a,b -> {
|
||||
g = conjGender a.g b.g ;
|
||||
n = conjNumber a.n b.n ;
|
||||
p = conjPerson a.p b.p
|
||||
} ;
|
||||
|
||||
--Conjuctions
|
||||
conjThan : Str = "decât" ;
|
||||
conjThat : Str = "cã" ;
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
59
lib/src/romanian/ConjunctionRon.gf
Normal file
59
lib/src/romanian/ConjunctionRon.gf
Normal file
@@ -0,0 +1,59 @@
|
||||
incomplete concrete ConjunctionRon of Conjunction =
|
||||
CatRon ** open ResRon, Coordination, Prelude in {
|
||||
|
||||
flags optimize=all_subs ;
|
||||
|
||||
lin
|
||||
|
||||
ConjS conj ss = conjunctDistrTable Mood conj ss ;
|
||||
|
||||
ConjAdv conj ss = conjunctDistrSS conj ss ;
|
||||
|
||||
ConjNP conj ss = heavyNP (conjunctDistrTable NCase conj ss ** {
|
||||
a = {g = ss.a.g ; n = conjNumber conj.n ss.a.n ; p = ss.a.p} ;
|
||||
hasClit = ss.hasClit;
|
||||
ss = "" ---- fix this !!!!
|
||||
}) ;
|
||||
|
||||
|
||||
ConjAP conj ss = conjunctDistrTable AForm conj ss ** {
|
||||
isPre = ss.isPre
|
||||
} ;
|
||||
|
||||
ConjRS conj ss = conjunctDistrTable2 Mood Agr conj ss ** {
|
||||
c = ss.c
|
||||
} ;
|
||||
|
||||
|
||||
-- These fun's are generated from the list cat's.
|
||||
|
||||
BaseS = twoTable Mood ;
|
||||
ConsS = consrTable Mood comma ;
|
||||
BaseAdv = twoSS ;
|
||||
ConsAdv = consrSS comma ;
|
||||
BaseNP x y = {
|
||||
s1 = \\c => (x.s ! c).comp ;
|
||||
s2 = \\c => (y.s ! c).comp ;
|
||||
a = conjAgr x.a y.a;
|
||||
hasClit = andB x.hasClit y.hasClit
|
||||
} ;
|
||||
ConsNP x xs = {
|
||||
s1 = \\c => (x.s ! c).comp ++ comma ++ xs.s1 ! c ; ----e (conjunctCase c) ;
|
||||
s2 = \\c => xs.s2 ! c ; ----e (conjunctCase c) ;
|
||||
a = conjAgr x.a xs.a ;
|
||||
hasClit = andB xs.hasClit x.hasClit
|
||||
} ;
|
||||
|
||||
BaseAP x y = twoTable AForm x y ** {isPre = andB x.isPre y.isPre} ;
|
||||
ConsAP xs x = consrTable AForm comma xs x ** {isPre = andB xs.isPre x.isPre} ;
|
||||
BaseRS x y = twoTable2 Mood Agr x y ** {c = y.c} ;
|
||||
ConsRS xs x = consrTable2 Mood Agr comma xs x ** {c = xs.c} ;
|
||||
|
||||
lincat
|
||||
[S] = {s1,s2 : Mood => Str} ;
|
||||
[Adv] = {s1,s2 : Str} ;
|
||||
[NP] = {s1,s2 : NCase => Str ; a : Agr; hasClit : Bool} ;
|
||||
[AP] = {s1,s2 : AForm => Str ; isPre : Bool} ;
|
||||
[RS] = {s1,s2 : Mood => Agr => Str ; c : NCase} ;
|
||||
|
||||
};
|
||||
@@ -1,7 +1,20 @@
|
||||
--# -path=.:../romance:../abstract:../common:prelude
|
||||
|
||||
concrete GrammarRon of Grammar =
|
||||
NumeralRon
|
||||
NounRon,
|
||||
VerbRon,
|
||||
AdjectiveRon,
|
||||
AdverbRon,
|
||||
NumeralRon,
|
||||
SentenceRon,
|
||||
IdiomRon,
|
||||
QuestionRon,
|
||||
RelativeRon,
|
||||
ConjunctionRon,
|
||||
PhraseRon,
|
||||
TextX - [Temp,TTAnt,Tense,TPres,TPast,TFut,TCond], Coordination,
|
||||
Prelude, MorphoRon, BeschRon,
|
||||
StructuralRon
|
||||
** {
|
||||
|
||||
flags startcat = Phr ; unlexer = text ; lexer = text ;
|
||||
|
||||
44
lib/src/romanian/IdiomRon.gf
Normal file
44
lib/src/romanian/IdiomRon.gf
Normal file
@@ -0,0 +1,44 @@
|
||||
incomplete concrete IdiomRon of Idiom =
|
||||
-- CatRon ** open (P = ParamX), MorphoRon, ParadigmsRon,Prelude
|
||||
CatRon ** open Prelude, ResRon
|
||||
in {
|
||||
|
||||
flags optimize=all_subs ;
|
||||
|
||||
|
||||
|
||||
lin
|
||||
ImpersCl vp = mkClause "" True (agrP3 Masc Sg) vp ;
|
||||
GenericCl vp = mkClause "" True (agrP3 Masc Sg) vp ; -- an exact correspondent does not exist !
|
||||
|
||||
ExistNP np =
|
||||
mkClause "" True np.a (insertSimpObj (\\ag => (np.s ! No ).comp) (UseV copula)) ;
|
||||
-- v_besch20 "exista"
|
||||
|
||||
ExistIP ip = {
|
||||
s = \\t,a,p,_ =>
|
||||
ip.s ! No ++
|
||||
(mkClause "" True (agrP3 (ip.a.g) (ip.a.n))
|
||||
(UseV copula)).s
|
||||
! DDir ! t ! a ! p ! Indic } ;
|
||||
|
||||
CleftNP np rs = mkClause "" True np.a
|
||||
(insertSimpObj (\\_ => rs.s ! Indic ! np.a)
|
||||
(insertSimpObj (\\_ => (np.s ! rs.c).comp) (predV copula))) ;
|
||||
--need adverb for
|
||||
CleftAdv ad s = mkClause "" True (agrP3 Masc Sg)
|
||||
(insertSimpObj (\\_ => conjThat ++ s.s ! Indic)
|
||||
(insertSimpObj (\\_ => ad.s) (predV copula))) ;
|
||||
|
||||
|
||||
ProgrVP vp = vp; -- for the moment, since there is no particular way to express continuous action, except for the imperfect, which wouldn't work for all tenses
|
||||
{-
|
||||
ImpPl1 vpr = let vp = useVP vpr in {s =
|
||||
(mkImperative False P1 vp).s ! Pos ! {n = Pl ; g = Masc} --- fem
|
||||
} ;
|
||||
-- insert clitics here also
|
||||
-}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
--# -path=.:../romance:../abstract:../common
|
||||
--# -path=.:../abstract:../common:../prelude
|
||||
|
||||
concrete LangRon of Lang =
|
||||
GrammarRon,
|
||||
|
||||
@@ -1,365 +1,366 @@
|
||||
--# -path=.:../romance:../common:../abstract:../../prelude
|
||||
|
||||
concrete LexiconRon of Lexicon = CatRon **
|
||||
open ParadigmsRon,BeschRon,MorphoRon in {
|
||||
|
||||
flags
|
||||
optimize=values; coding=cp1250;
|
||||
|
||||
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 = mkA "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 = mkA "mare" ;
|
||||
bike_N = mkN "bicicletã" ;
|
||||
bird_N = mkN "pasãre" "pãsãri" ;
|
||||
black_A = mkRMut "negru" ;
|
||||
blue_A = mkA "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 = mkA "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 = mkA "curat" ;
|
||||
clever_A = mkRMut "deºtept" ;
|
||||
close_V2 = dirV2 (mkV "închide") ;
|
||||
coat_N = mkN "hainã" ;
|
||||
cold_A = mkA "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 = mkA "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 (mkA "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 = mkA "bun" "bunã" "buni" "bune" "bine" ;
|
||||
go_V = v_besch90 "merge" ;
|
||||
green_A = mkA "verde" ;
|
||||
harbour_N = mkNR "port" ;
|
||||
hate_V2 = dirV2 (mkV "urî") ;
|
||||
hat_N = mkN "pãlãrie" ;
|
||||
hear_V2 = dirV2 (v_besch127 "auzi") ;
|
||||
hill_N = mkNR "deal" ;
|
||||
hope_VS = mkVS (v_besch17 "spera") ;
|
||||
horse_N = mkN "cal" "cai" ;
|
||||
hot_A = mkA "cald" ;
|
||||
house_N = mkN "casã" ;
|
||||
important_A = mkA "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 = mkA "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 (mkA "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 = mkA "îngust" ;
|
||||
new_A = mkA "nou" "nouã" "noi" "noi" ;
|
||||
newspaper_N = mkN "ziar" ;
|
||||
oil_N = mkNR "ulei" ;
|
||||
old_A = mkA "vechi" "veche" "vechi" "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 (mkA "probabil") ;
|
||||
queen_N = mkAnim (mkN "reginã" "regine") ;
|
||||
radio_N = mkNR "radio";
|
||||
--rain_V0 = mkV0 (v_besch54 "ploua") ;
|
||||
read_V2 = dirV2 (mkV "citi") ;
|
||||
red_A = mkA "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 = mkA "scurt" ;
|
||||
silver_N = mkN "argint" masculine ;
|
||||
sister_N = mkAnim (mkN "sorã" "surori") ;
|
||||
sleep_V = v_besch128 "dormi" ;
|
||||
small_A = mkA "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 = mkA "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 = mkA "subþire" ;
|
||||
train_N = mkNR "tren";
|
||||
travel_V = mkV "cãlãtori" ;
|
||||
tree_N = mkN "copac" masculine ;
|
||||
--trousers_N = mkN "pantalon" masculine ;
|
||||
ugly_A = mkA "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 = mkA "calduþ" ;
|
||||
war_N = mkN "rãzboi" neuter ;
|
||||
watch_V2 = dirV2 (mkV "privi") ;
|
||||
water_N = mkN "apã" ;
|
||||
white_A = mkA "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 = mkA "galben" ;
|
||||
young_A = mkA "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 = mkA "corect" ;
|
||||
dry_A = mkA "uscat" ;
|
||||
dull_A = mkA "monoton";
|
||||
full_A = mkA "plin" ;
|
||||
heavy_A = mkA "greu" "grea" "grei" "grele";
|
||||
near_A = mkA "apropiat" ;
|
||||
rotten_A = mkA "stricat" ;
|
||||
round_A = mkA "rotund" ;
|
||||
sharp_A = mkA "ascuþit" ;
|
||||
smooth_A = mkA "neted" ;
|
||||
straight_A = mkRMut "drept" ;
|
||||
wet_A = mkA "ud" ;
|
||||
wide_A = mkA "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 = mkA "pregãtit" ;
|
||||
reason_N = mkN "motiv" ;
|
||||
today_Adv = mkAdv "astãzi" ;
|
||||
uncertain_A = mkA "nesigur" ;
|
||||
|
||||
|
||||
} ;
|
||||
--# -path=.:../romance:../common:../abstract:../../prelude
|
||||
|
||||
concrete LexiconRon of Lexicon = CatRon **
|
||||
open ParadigmsRon,MorphoRon,BeschRon 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 = mkA "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 = mkA "mare" ;
|
||||
bike_N = mkN "bicicletã" ;
|
||||
bird_N = mkN "pasãre" "pãsãri" ;
|
||||
black_A = mkRMut "negru" ;
|
||||
blue_A = mkA "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 = mkA "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 = mkA "curat" ;
|
||||
clever_A = mkRMut "deºtept" ;
|
||||
close_V2 = dirV2 (mkV "închide") ;
|
||||
coat_N = mkN "hainã" ;
|
||||
cold_A = mkA "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 = mkA "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 (mkRVAcc (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 (mkA "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 = mkA "bun" "bunã" "buni" "bune" "bine" ;
|
||||
go_V = v_besch90 "merge" ;
|
||||
green_A = mkA "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 = mkA "cald" ;
|
||||
house_N = mkN "casã" ;
|
||||
important_A = mkA "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 = mkA "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 (mkA "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 = mkA "îngust" ;
|
||||
new_A = mkA "nou" "nouã" "noi" "noi" ;
|
||||
newspaper_N = mkN "ziar" ;
|
||||
oil_N = mkNR "ulei" ;
|
||||
old_A = mkA "vechi" "veche" "vechi" "vechi" ;
|
||||
open_V2 = dirV2 (mkV "deshide") ;
|
||||
paint_V2A = mkV2A (mkV "picta") (noPrep Ac) (noPrep Ac) ;
|
||||
paper_N = mkN "hârtie" ;
|
||||
paris_PN = mkInAn(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 (mkA "probabil") ;
|
||||
queen_N = mkAnim (mkN "reginã" "regine") ;
|
||||
radio_N = mkNR "radio";
|
||||
rain_V0 = mkV0 (v_besch54 "ploua") ;
|
||||
read_V2 = dirV2 (mkV "citi") ;
|
||||
red_A = mkA "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 = mkA "scurt" ;
|
||||
silver_N = mkN "argint" masculine ;
|
||||
sister_N = mkAnim (mkN "sorã" "surori") ;
|
||||
sleep_V = v_besch128 "dormi" ;
|
||||
small_A = mkA "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 = mkA "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") (mkPrep "cu" Ac) (mkPrep "despre" Ac);
|
||||
teacher_N = mkAnim (mkN "profesor") ;
|
||||
teach_V2 = dirV2 (v_besch57 "preda") ;
|
||||
television_N = mkN "televiziune" ;
|
||||
thick_A = mkRMut "gros" ;
|
||||
thin_A = mkA "subþire" ;
|
||||
train_N = mkNR "tren";
|
||||
travel_V = mkV "cãlãtori" ;
|
||||
tree_N = mkN "copac" masculine ;
|
||||
--trousers_N = mkN "pantalon" masculine ;
|
||||
ugly_A = mkA "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 = mkA "cãlduþ" "cãlduþã" "cãlduþi" "cãlduþe" "cãlduros";
|
||||
war_N = mkN "rãzboi" neuter ;
|
||||
watch_V2 = dirV2 (mkV "privi") ;
|
||||
water_N = mkN "apã" ;
|
||||
white_A = mkA "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 (mkRVAcc (regV "minuna")) ;
|
||||
wood_N = mkN "lemn" ;
|
||||
write_V2 = dirV2 (v_besch117 "scrie") ;
|
||||
yellow_A = mkA "galben" ;
|
||||
young_A = mkA "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 = mkRVAcc (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 = mkA "corect" ;
|
||||
dry_A = mkA "uscat" ;
|
||||
dull_A = mkA "monoton";
|
||||
full_A = mkA "plin" ;
|
||||
heavy_A = mkA "greu" "grea" "grei" "grele";
|
||||
near_A = mkA "apropiat" ;
|
||||
rotten_A = mkA "stricat" ;
|
||||
round_A = mkA "rotund" ;
|
||||
sharp_A = mkA "ascuþit" ;
|
||||
smooth_A = mkA "neted" ;
|
||||
straight_A = mkRMut "drept" ;
|
||||
wet_A = mkA "ud" ;
|
||||
wide_A = mkA "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 = mkRVAcc (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 = mkRVAcc (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 = mkA "pregãtit" ;
|
||||
reason_N = mkN "motiv" ;
|
||||
today_Adv = mkAdv "astãzi" ;
|
||||
uncertain_A = mkA "nesigur" ;
|
||||
|
||||
|
||||
} ;
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
--# -path=.:../Romance:../common:../../prelude
|
||||
|
||||
resource MorphoRon = ResRon **
|
||||
open Prelude, Predef in {
|
||||
open Prelude, Predef in {
|
||||
|
||||
flags
|
||||
optimize=noexpand; coding=cp1250;
|
||||
flags optimize=noexpand ;
|
||||
|
||||
---------------------------------------------------------------------------------
|
||||
------------------------------ARTICLES-------------------------------------------
|
||||
@@ -20,12 +19,12 @@ case <g,n,a> of
|
||||
{ <Masc,Sg,ANomAcc> => case last bun of
|
||||
{ "u" => bun + "l";
|
||||
"e" => bun + "le";
|
||||
"ã" => bun + "a";
|
||||
"ã" => init bun + "a";
|
||||
_ => bun + "ul"
|
||||
};
|
||||
<Masc,Sg,AGenDat> => case last bun of
|
||||
{("u"|"e" ) => bun + "lui" ;
|
||||
_ => bun + "ului"
|
||||
{("u"|"e"|"ã" ) => bun + "lui" ;
|
||||
_ => bun + "ului"
|
||||
};
|
||||
<Masc,Sg,AVoc> => case bun of
|
||||
{ x+"u" => bun + "le";
|
||||
@@ -68,15 +67,16 @@ case <g,n,a> of
|
||||
<Fem,Sg,No> => "o"; <Fem,Sg,Ac> => "o"; <Fem,Sg,Da> => "unei"; <Fem,Sg,Ge> => "unei"
|
||||
};
|
||||
|
||||
--Articles
|
||||
--possesive article
|
||||
-- used for Cardinals and for Genitive case
|
||||
|
||||
oper artPos : Gender -> Number -> Str = \g,n ->
|
||||
case <g,n> of
|
||||
{ <Masc,Sg> => "al";
|
||||
<Masc,Pl> => "ai";
|
||||
<Fem,Sg> => "a";
|
||||
<Fem,Pl> => "ale"
|
||||
oper artPos : Gender -> Number -> ACase -> Str = \g,n,c ->
|
||||
case <g,n,c> of
|
||||
{ <Masc,Sg,AGenDat> => "alui"; <Masc,Sg,_> => "al";
|
||||
<Masc,Pl,AGenDat> => "alor"; <Masc,Pl,_> => "ai";
|
||||
<Fem,Sg,AGenDat> => "alei"; <Fem,Sg,_> => "a";
|
||||
<Fem,Pl,AGenDat> => "ale"; <Fem,Pl,_> => "ale"
|
||||
};
|
||||
|
||||
|
||||
@@ -93,6 +93,7 @@ oper artDem : Gender -> Number -> ACase -> Str = \g,n,c ->
|
||||
|
||||
};
|
||||
|
||||
|
||||
--flexion forms of a noun without article
|
||||
|
||||
oper artUnf : Str -> Str -> Gender -> Number -> ACase -> Str = \buna,bune,g,n,a ->
|
||||
@@ -222,7 +223,7 @@ mkVocc : Noun -> Str -> Noun = \n -> \vo ->
|
||||
|
||||
mkInanimate : Noun -> Noun = \n ->
|
||||
{s = table { Sg => \\p,c => case c of
|
||||
{AVoc => n.s ! Sg ! Indef ! ANomAcc ;
|
||||
{AVoc => n.s ! Sg ! p ! ANomAcc ;
|
||||
_ => n.s ! Sg ! p ! c
|
||||
};
|
||||
Pl => \\p, c => n.s ! Pl ! p ! c
|
||||
@@ -540,12 +541,12 @@ mkSpecMut : Str -> Adj = \s ->
|
||||
-- Gerund - 1 form
|
||||
-- 2nd person Singular form for Imperative - 1 form
|
||||
|
||||
Verbe : Type = VForm => Str ;
|
||||
Verbe : Type = { s : VForm => Str};
|
||||
|
||||
verbAffixes :
|
||||
Str-> (a,b,c,d: Number => Person => Str) -> Str -> Adj -> Str -> Str -> Verbe =
|
||||
\fi,pres, imperf, pSimple, pPerf, subj, adj, ger, imp ->
|
||||
table {
|
||||
let t = table {
|
||||
Inf => fi ;
|
||||
Indi Presn n p => pres ! n ! p ;
|
||||
Indi Imparf n p => imperf ! n ! p;
|
||||
@@ -558,7 +559,8 @@ mkSpecMut : Str -> Adj = \s ->
|
||||
Imper PlP1 => pres ! Pl ! P1 ;
|
||||
Ger => ger ;
|
||||
PPasse g n a d => adj. s ! (AF g n a d)
|
||||
} ;
|
||||
} in
|
||||
{s = t};
|
||||
|
||||
|
||||
-- syntactical verb :
|
||||
@@ -568,22 +570,40 @@ SVerbe : Type = VerbForm => Str ;
|
||||
|
||||
mkVerb : Verbe -> SVerbe = \vb ->
|
||||
table {
|
||||
TInf => "a" ++ vb ! Inf ;
|
||||
TIndi TPresn n p => vb ! (Indi Presn n p) ;
|
||||
TIndi TImparf n p => vb ! (Indi Imparf n p);
|
||||
TIndi TPComp n p => pComp ! n ! p ++ vb ! (PPasse Masc Sg Indef ANomAcc) ;
|
||||
TIndi TPSimple n p => vb ! (Indi PSimple n p) ;
|
||||
TIndi TPPerfect n p => vb ! (Indi PPerfect n p) ;
|
||||
TIndi TFutur n p => pFut ! n ! p ++ vb ! Inf ;
|
||||
TSubjo TSPres n p => "sã" ++ vb ! (Subjo SPres n p) ;
|
||||
TSubjo TSPast n p => "sã" ++ "fi" ++ vb ! (PPasse Masc Sg Indef ANomAcc) ;
|
||||
TCondi n p => pCond ! n ! p ++ vb ! Inf ;
|
||||
TImper PlP1 => "sã" ++ vb ! (Imper PlP1) ;
|
||||
TImper p => vb ! (Imper p) ;
|
||||
TGer => vb ! Ger ;
|
||||
TPPasse g n a d => vb ! (PPasse g n a d)
|
||||
TInf => "a" ++ vb.s ! Inf ;
|
||||
TIndi TPresn n p => vb.s ! (Indi Presn n p) ;
|
||||
TIndi TImparf n p => vb.s ! (Indi Imparf n p);
|
||||
TIndi TPComp n p => pComp ! n ! p ++ vb.s ! (PPasse Masc Sg Indef ANomAcc) ;
|
||||
TIndi TPSimple n p => vb.s ! (Indi PSimple n p) ;
|
||||
TIndi TPPerfect n p => vb.s ! (Indi PPerfect n p) ;
|
||||
TIndi TFutur n p => pFut ! n ! p ++ vb.s ! Inf ;
|
||||
TSubjo TSPres n p => "sã" ++ vb.s ! (Subjo SPres n p) ;
|
||||
TSubjo TSPast n p => "sã" ++ "fi" ++ vb.s ! (PPasse Masc Sg Indef ANomAcc) ;
|
||||
TCondi n p => pCond ! n ! p ++ vb.s ! Inf ;
|
||||
TImper PlP1 => "sã" ++ vb.s ! (Imper PlP1) ;
|
||||
TImper p => vb.s ! (Imper p) ;
|
||||
TGer => vb.s ! Ger ;
|
||||
TPPasse g n a d => vb.s ! (PPasse g n a d)
|
||||
};
|
||||
|
||||
mkVerbRefl : Verbe -> SVerbe = \vb ->
|
||||
table {
|
||||
TInf => "a" ++ "se" ++ vb.s ! Inf ;
|
||||
TIndi TPresn n p => pronRefl ! n ! p ++ vb.s ! (Indi Presn n p) ;
|
||||
TIndi TImparf n p => pronRefl !n ! p ++ vb.s ! (Indi Imparf n p);
|
||||
TIndi TPComp n p => pronReflClit ! n ! p + "-" + pComp ! n ! p ++ vb.s ! (PPasse Masc Sg Indef ANomAcc) ;
|
||||
TIndi TPSimple n p => pronRefl ! n ! p ++ vb.s ! (Indi PSimple n p) ;
|
||||
TIndi TPPerfect n p => pronRefl ! n ! p ++ vb.s ! (Indi PPerfect n p) ;
|
||||
TIndi TFutur n p => pronRefl ! n ! p ++ pFut ! n ! p ++ vb.s ! Inf ;
|
||||
TSubjo TSPres n p => "sã" ++ pronRefl ! n ! p ++ vb.s ! (Subjo SPres n p) ;
|
||||
TSubjo TSPast n p => "sã" ++ pronRefl ! n ! p ++ "fi" ++ vb.s ! (PPasse Masc Sg Indef ANomAcc) ;
|
||||
TCondi n p => pronReflClit ! n ! p + "-" + pCond ! n ! p ++ vb.s ! Inf ;
|
||||
TImper PlP1 => "sã" ++ pronRefl ! Pl ! P1 ++ vb.s ! (Imper PlP1) ;
|
||||
TImper PlP2 => vb.s ! (Imper PlP2) + "-"+ pronRefl ! Pl ! P2 ;
|
||||
TImper SgP2 => vb.s ! (Imper SgP2) + "-"+ pronRefl ! Sg ! P2 ;
|
||||
TGer => vb.s ! Ger + "u" + "-" + pronRefl ! Sg ! P3 ;
|
||||
TPPasse g n a d => vb.s ! (PPasse g n a d)
|
||||
};
|
||||
-- auxiliary for Past Composite (to have - as auxiliary) :
|
||||
|
||||
pComp : Number => Person => Str = table {Sg => table {P1 => "am" ; P2 => "ai" ; P3 => "a"} ;
|
||||
@@ -605,24 +625,6 @@ pCond : Number => Person => Str = table {Sg => table {P1 => "a
|
||||
-- make Reflexive verbe : ? with variants ?
|
||||
-- syntactical category of reflexive verbs based on the primitive forms in Verbe
|
||||
|
||||
mkVerbRefl : Verbe -> SVerbe = \vb ->
|
||||
table {
|
||||
TInf => "a" ++ "se" ++ vb ! Inf ;
|
||||
TIndi TPresn n p => pronRefl ! n ! p ++ vb ! (Indi Presn n p) ;
|
||||
TIndi TImparf n p => pronRefl !n ! p ++ vb ! (Indi Imparf n p);
|
||||
TIndi TPComp n p => pronReflClit ! n ! p + "-" + pComp ! n ! p ++ vb ! (PPasse Masc Sg Indef ANomAcc) ;
|
||||
TIndi TPSimple n p => pronRefl ! n ! p ++ vb ! (Indi PSimple n p) ;
|
||||
TIndi TPPerfect n p => pronRefl ! n ! p ++ vb ! (Indi PPerfect n p) ;
|
||||
TIndi TFutur n p => pronRefl ! n ! p ++ pFut ! n ! p ++ vb ! Inf ;
|
||||
TSubjo TSPres n p => "sã" ++ pronRefl ! n ! p ++ vb ! (Subjo SPres n p) ;
|
||||
TSubjo TSPast n p => "sã" ++ pronRefl ! n ! p ++ "fi" ++ vb ! (PPasse Masc Sg Indef ANomAcc) ;
|
||||
TCondi n p => pronReflClit ! n ! p + "-" + pCond ! n ! p ++ vb ! Inf ;
|
||||
TImper PlP1 => "sã" ++ pronRefl ! Pl ! P1 ++ vb ! (Imper PlP1) ;
|
||||
TImper PlP2 => vb ! (Imper PlP2) + "-"+ pronRefl ! Pl ! P2 ;
|
||||
TImper SgP2 => vb ! (Imper SgP2) + "-"+ pronRefl ! Sg ! P2 ;
|
||||
TGer => vb ! Ger + "u" + "-" + pronRefl ! Sg ! P3 ;
|
||||
TPPasse g n a d => vb ! (PPasse g n a d)
|
||||
};
|
||||
|
||||
-- reflexive pronouns - full form
|
||||
|
||||
@@ -664,7 +666,7 @@ table {Sg => table {P1 => "m" ; P2 => "te" ; P3 => "s"};
|
||||
-}
|
||||
|
||||
-- This is a conversion to the type in $CommonRomance$.
|
||||
|
||||
{-
|
||||
oper
|
||||
vvf : (VerbForm => Str) -> (VF => Str) = \aller -> table {
|
||||
VInfin _ => aller ! TInf ;
|
||||
@@ -679,7 +681,7 @@ oper
|
||||
VPart g n a d => aller ! TPPasse g n a d ;
|
||||
VGer => aller ! TGer
|
||||
} ;
|
||||
|
||||
-}
|
||||
|
||||
|
||||
-- vowells in Romanian - used for clitics
|
||||
@@ -1568,8 +1570,8 @@ mkV68 : Str -> Verbe = \putea ->
|
||||
r = root + "o"
|
||||
in
|
||||
verbAffixes vrea (mkTab root (root+"eau") (root+"ei")(root +"ea") (init root + "or") affixPlGr24)
|
||||
(mkFromAffix r affixSgII affixPlII) (mkFromAffix root affixSgPS3 affixPlPS3)
|
||||
(mkFromAffix root affixSgPP4 affixPlPP4) (root +"ea") (mkAdjReg (r + "ut"))
|
||||
(mkFromAffix r affixSgI2 affixPlI2) (mkFromAffix root affixSgPS3 affixPlPS3)
|
||||
(mkFromAffix root affixSgPP4 affixPlPP4) (root +"ea") (mkAdjReg (root + "ut"))
|
||||
(root + "ând") (root + "ei") ;
|
||||
|
||||
----------------------------------------------------------------------
|
||||
@@ -2424,5 +2426,31 @@ let root = init fi ;
|
||||
in
|
||||
verbAffixes fi pres (mkFromAffix "er" affixSgI affixPlI) ps pp
|
||||
|
||||
-}
|
||||
} ;
|
||||
-}
|
||||
|
||||
|
||||
|
||||
--------------Reflexive pronouns
|
||||
|
||||
oper reflPron : Number -> Person -> ACase -> Str =
|
||||
\n,p,c -> case <n,p,c> of
|
||||
{<Sg,P1,AGenDat> => "mie" ; <Sg,P1,_> => "mine";
|
||||
<Sg,P2,AGenDat> => "þie" ; <Sg,P2,_> => "tine";
|
||||
<_,P3,AGenDat> => "sieºi" ; <_,P3,_> => "sine" ;
|
||||
<Pl,P1,AGenDat> => "nouã" ; <Pl,P1,_> => "noi" ;
|
||||
<Pl,P2,AGenDat> => "vouã" ; <Pl,P2,_> => "voi"
|
||||
};
|
||||
|
||||
oper reflPronHard : Gender -> Number -> Person -> Str =
|
||||
\g,n,p -> case <g,n,p> of
|
||||
{<Masc,Sg,P1> => "însumi" ; <Fem,Sg,P1> => "însãmi";
|
||||
<Masc,Sg,P2> => "însuþi" ; <Fem,Sg,P2> => "însãþi";
|
||||
<Masc,Sg,P3> => "însuºi" ; <Fem,Sg,P3> => "însãºi";
|
||||
<Masc,Pl,P1> => "înºine" ; <Fem,Pl,P1> => "însene";
|
||||
<Masc,Pl,P2> => "înºivã"; <Fem,Pl,P2> => "înseva";
|
||||
<Masc,Pl,P3> => "înºiºi"; <Fem,Pl,P3> => "înseºi"
|
||||
|
||||
};
|
||||
|
||||
|
||||
};
|
||||
322
lib/src/romanian/NounRon.gf
Normal file
322
lib/src/romanian/NounRon.gf
Normal file
@@ -0,0 +1,322 @@
|
||||
incomplete concrete NounRon of Noun =
|
||||
CatRon ** open ResRon,Prelude in {
|
||||
|
||||
flags optimize=all_subs ;
|
||||
|
||||
lin
|
||||
DetCN det cn =
|
||||
let
|
||||
n = det.n;
|
||||
gg = agrGender cn.g n ;
|
||||
ag = agrP3 gg n ;
|
||||
hr = andB (getClit cn.a) det.hasRef ;
|
||||
st= if_then_else Species det.isDef Def Indef;
|
||||
rs = if_then_else Species det.hasRef Def Indef
|
||||
in
|
||||
{s = \\c => case c of
|
||||
{Vo =>
|
||||
{comp = det.s ! gg ! No ++ det.size ++ cn.s ! n ! st ! ANomAcc ++ det.post ! gg ! No ;
|
||||
clit = \\cs => if_then_Str hr ((genCliticsCase ag c).s ! cs) [] };
|
||||
_ => {comp = det.s ! gg ! c ++ det.size ++ cn.s ! n ! st ! (convCase c) ++ det.post ! gg ! c ;
|
||||
clit = \\cs => if_then_Str hr ((genCliticsCase ag c).s ! cs) [] }
|
||||
};
|
||||
a = ag ;
|
||||
hasClit = hr ;
|
||||
hasRef = hr ;
|
||||
isPronoun = False ;
|
||||
indForm = det.s ! gg ! No ++ det.size ++cn.s ! n ! rs ! ANomAcc
|
||||
|
||||
} ;
|
||||
|
||||
UsePN pn = let
|
||||
g = pn.g ;
|
||||
n = pn.n ;
|
||||
ag = agrP3 g n ;
|
||||
hc = getClit pn.a
|
||||
in {
|
||||
s = \\c => {comp = pn.s ! c ;
|
||||
clit = \\cs => if_then_Str hc ((genCliticsCase ag c).s ! cs) [] } ;
|
||||
|
||||
a = ag;
|
||||
hasClit = hc ;
|
||||
hasRef = hc ;
|
||||
isPronoun = False ;
|
||||
indForm = pn.s ! No
|
||||
} ;
|
||||
|
||||
UsePron p = {s = \\c =>{comp = p.s ! c ;
|
||||
clit = (genCliticsCase p.a c).s } ;
|
||||
hasClit = True;
|
||||
hasRef = True ;
|
||||
isPronoun = True ;
|
||||
a = p.a;
|
||||
indForm = p.s ! Ac
|
||||
};
|
||||
|
||||
|
||||
|
||||
PredetNP pred np =
|
||||
{s = \\c => {comp = pred.s ! aagr (np.a.g) (np.a.n) ! (convCase c) ++ (np.s ! pred.c).comp ;
|
||||
clit = (np.s ! c).clit };
|
||||
a = np.a ;
|
||||
hasClit = np.hasClit ;
|
||||
hasRef = False ;
|
||||
isPronoun = False ;
|
||||
indForm = pred.s ! aagr (np.a.g) (np.a.n) ! ANomAcc ++ (np.s ! pred.c).comp
|
||||
} ;
|
||||
|
||||
|
||||
PPartNP np v2 =
|
||||
heavyNP {
|
||||
s = \\c => (np.s ! c).comp ++ v2.s ! PPasse np.a.g np.a.n Indef (convCase c);
|
||||
a = np.a ;
|
||||
hasClit = np.hasClit;
|
||||
ss = (np.s ! No).comp ++ v2.s ! PPasse np.a.g np.a.n Indef ANomAcc
|
||||
} ;
|
||||
|
||||
RelNP np rs = heavyNP {
|
||||
s = \\c => (np.s ! c).comp ++ rs.s ! Indic ! np.a ;
|
||||
a = np.a ;
|
||||
hasClit = False ;
|
||||
ss = (np.s ! No).comp ++ rs.s ! Indic ! np.a
|
||||
} ;
|
||||
|
||||
AdvNP np adv = heavyNP {
|
||||
s = \\c => (np.s ! c).comp ++ adv.s ;
|
||||
a = np.a ;
|
||||
hasClit = False;
|
||||
ss = (np.s ! No).comp ++adv.s ;
|
||||
} ;
|
||||
|
||||
DetQuantOrd quant num ord = let n = num.n
|
||||
in {
|
||||
s = \\g,c => let s1 = if_then_Str quant.isDef (ord.s ! n ! g ! c) (ord.s ! n ! g ! No);
|
||||
s2 = if_then_Str quant.isPost "" (quant.s ! num.isNum ! n ! g ! (convCase c) )
|
||||
|
||||
in
|
||||
s2 ++ s1 ++ num.s ! g ;
|
||||
sp = \\g,c => let
|
||||
s1 = if_then_Str quant.isDef (ord.s ! n ! g ! c) (ord.s ! n ! g ! No) ;
|
||||
s3 = if_then_Str quant.isPost (s1 ++ num.sp ! g ++ quant.sp ! n ! g ! ANomAcc) (quant.sp ! n ! g ! (convCase c) ++ s1 ++ num.sp ! g)
|
||||
|
||||
in
|
||||
s3 ;
|
||||
post = \\g,c => let s2 = if_then_Str quant.isPost (quant.s ! num.isNum ! n ! g ! (convCase c)) ""
|
||||
in
|
||||
s2 ;
|
||||
n = num.n ;
|
||||
isDef = False;
|
||||
size = num.size;
|
||||
hasRef = quant.hasRef
|
||||
|
||||
} ;
|
||||
|
||||
DetQuant quant num = let n = num.n ;
|
||||
needDem = andB quant.isDef num.isNum
|
||||
in {
|
||||
s = \\g,c => let s1 = if_then_Str quant.isPost "" (quant.s ! num.isNum ! n ! g ! (convCase c)) ;
|
||||
s2 = if_then_Str needDem (artDem g n (convCase c)) ""
|
||||
in s2 ++ s1 ++ num.s ! g ;
|
||||
sp = \\g,c => let s1 = if_then_Str needDem (artDem g n (convCase c)) "" ;
|
||||
s2 = if_then_Str quant.isPost (s1 ++ num.sp ! g ++ quant.sp ! n ! g ! ANomAcc) (s1 ++ quant.sp ! n ! g ! (convCase c) ++ num.sp ! g)
|
||||
in s2 ;
|
||||
|
||||
post = \\g,c => if_then_Str quant.isPost (quant.s ! num.isNum ! n ! g ! (convCase c)) "" ;
|
||||
n = num.n ;
|
||||
isDef = case num.isNum of
|
||||
{True => False ;
|
||||
_ => quant.isDef };
|
||||
size = num.size ;
|
||||
hasRef = quant.hasRef
|
||||
} ;
|
||||
|
||||
-- consider fixing for possesive pronouns !
|
||||
DetNP det =
|
||||
let
|
||||
g = Masc ;
|
||||
n = det.n
|
||||
in heavyNP {
|
||||
s = \\c => det.sp ! g ! c ;
|
||||
a = agrP3 g n ;
|
||||
hasClit = True ;
|
||||
ss = det.sp ! g ! No
|
||||
} ;
|
||||
|
||||
-- assume that it refers to people
|
||||
|
||||
PossPron p = {
|
||||
s = \\_,n,g,c => p.poss ! n ! g ;
|
||||
sp = \\ n,g,c => artPos g n c ++ p.poss ! n ! g ;
|
||||
isDef = True ;
|
||||
isPost = True ;
|
||||
hasRef = True
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
|
||||
NumSg = {s = \\_ => [] ; sp = \\_ => [] ; isNum = False ; n = Sg ; size = ""} ;
|
||||
NumPl = {s = \\_ => [] ; sp = \\_ => [] ; isNum = False ; n = Pl ; size = ""} ;
|
||||
|
||||
NumCard n = {s = n.s ; sp = n.sp ; size = getSize n.size ;
|
||||
isNum = True; n = getNumber n.size
|
||||
} ;
|
||||
|
||||
NumDigits nu = {s,sp = \\g => nu.s ! NCard g ;
|
||||
size = nu.n; n = getNumber nu.n };
|
||||
OrdDigits nu = {s = table{Sg => \\g,c => nu.s ! NOrd g ;
|
||||
Pl => \\g,c => [] } ;
|
||||
isPre = True
|
||||
};
|
||||
|
||||
NumNumeral nu = {s = \\g => nu.s ! ANomAcc ! (NCard g) ! Formal ;
|
||||
sp = \\g => nu.sp ! ANomAcc ! (NCard g) ! Formal ;
|
||||
n = getNumber nu.size ; size = nu.size };
|
||||
|
||||
OrdNumeral nu = {s = table {Sg => \\g,c => nu.s ! (convCase c) ! NOrd g ! Formal;
|
||||
Pl => \\g,c => []
|
||||
};
|
||||
isPre = True} ;
|
||||
|
||||
AdNum adn num = {s = \\a => adn.s ++ num.s ! a ;
|
||||
sp = \\a => adn.s ++ num.sp ! a ;
|
||||
isNum = num.isNum ; n = num.n; size = num.size} ;
|
||||
|
||||
OrdSuperl adj = {s = \\n,g,c => artDem g n (convCase c) ++ more_CAdv.s ++ adj.s ! AF g n Indef (convCase c);
|
||||
isPre = True;
|
||||
};
|
||||
|
||||
DefArt = {
|
||||
s = \\b,n,g,c => [] ;
|
||||
sp = \\n,g,c => [] ;
|
||||
isDef = True ;
|
||||
isPost = False ;
|
||||
hasRef = False
|
||||
} ;
|
||||
|
||||
IndefArt = {
|
||||
s = \\b,n,g,c => if_then_Str b [] (artUndef g n (convACase c)) ;
|
||||
sp = table {Sg => table {Masc => table {AGenDat => "unuia"; AVoc => [] ; _ => "unul" };
|
||||
Fem => table {AGenDat => "uneia"; AVoc => [] ; _ => "una" }
|
||||
};
|
||||
Pl => table {Masc => table {AGenDat => "unora"; AVoc => "" ; _ => "unii"};
|
||||
Fem => table {AGenDat => "unora"; AVoc => "" ; _ => "unele"}
|
||||
}
|
||||
};
|
||||
isDef = False ;
|
||||
isPost = False ;
|
||||
hasRef = False
|
||||
|
||||
} ;
|
||||
|
||||
-- since mass noun phrases are not referential, it's no point keeping track of clitics
|
||||
|
||||
MassNP cn = let
|
||||
g = case cn.g of
|
||||
{NFem => Fem ;
|
||||
_ => Masc} ;
|
||||
hc = getClit cn.a ;
|
||||
n = Sg
|
||||
in {
|
||||
s = \\c => {comp = cn.s ! n ! Indef ! (convCase c);
|
||||
clit = \\cs => [] } ;
|
||||
a = agrP3 g n ;
|
||||
hasClit = hc ;
|
||||
hasRef = False ;
|
||||
isPronoun = False ;
|
||||
poss = \\g,n => [] ;
|
||||
indForm = cn.s ! n ! Indef ! ANomAcc
|
||||
} ;
|
||||
|
||||
-- This is based on record subtyping.
|
||||
|
||||
UseN, UseN2 = \noun -> noun ;
|
||||
|
||||
Use2N3 f = f ;
|
||||
|
||||
Use3N3 f = f ** {c2 = f.c3} ;
|
||||
|
||||
ComplN2 f x = {
|
||||
s = \\n,sp,c => f.s ! n ! sp ! c ++ appCompl f.c2 x ;
|
||||
g = f.g ;
|
||||
a = f.a
|
||||
} ;
|
||||
|
||||
ComplN3 f x = {
|
||||
s = \\n,sp,c => f.s ! n ! sp ! c ++ appCompl f.c2 x ;
|
||||
g = f.g ;
|
||||
c2 = f.c3;
|
||||
a = f.a
|
||||
} ;
|
||||
|
||||
AdjCN ap cn =
|
||||
let
|
||||
g = cn.g
|
||||
in {
|
||||
s = case ap.isPre of
|
||||
{True => \\n => table {Def => \\c => case c of
|
||||
{Voc => ap.s ! (AF (agrGender g n) n Def ANomAcc) ++ cn.s ! n ! Indef ! ANomAcc;
|
||||
_ => ap.s ! (AF (agrGender g n) n Def c) ++ cn.s ! n ! Indef ! c
|
||||
};
|
||||
Indef => \\c => case c of
|
||||
{Voc => ap.s ! (AF (agrGender g n) n Indef ANomAcc) ++ cn.s ! n ! Indef ! ANomAcc;
|
||||
_ => ap.s ! (AF (agrGender g n) n Indef c) ++ cn.s ! n ! Indef ! c}};
|
||||
False => \\n => table {Def => \\c => case c of
|
||||
{Voc => cn.s ! n ! Indef ! ANomAcc ++ ap.s ! (AF (agrGender g n) n Indef ANomAcc);
|
||||
_ => cn.s ! n ! Def ! c ++ ap.s ! (AF (agrGender g n) n Indef c)};
|
||||
Indef => \\c => case c of
|
||||
{Voc => cn.s ! n ! Indef ! ANomAcc ++ ap.s ! (AF (agrGender g n) n Indef ANomAcc);
|
||||
_ => cn.s ! n ! Indef ! c ++ ap.s ! (AF (agrGender g n) n Indef c) }}
|
||||
};
|
||||
g = g ;
|
||||
a = cn.a
|
||||
} ;
|
||||
|
||||
|
||||
RelCN cn rs = {
|
||||
s = \\n,sp,c => cn.s ! n ! sp ! c ++ rs.s ! Indic ! agrP3 (agrGender cn.g n) n ;
|
||||
g = cn.g ;
|
||||
a = cn.a
|
||||
} ;
|
||||
|
||||
SentCN cn sc = let g = cn.g in {
|
||||
s = \\n,sp,c => cn.s ! n ! sp ! c ++ sc.s ;
|
||||
g = g ;
|
||||
a = cn.a
|
||||
} ;
|
||||
|
||||
AdvCN cn sc = let g = cn.g in {
|
||||
s = \\n,sp,c => cn.s ! n ! sp ! c ++ sc.s ;
|
||||
g = g;
|
||||
a = cn.a
|
||||
} ;
|
||||
|
||||
ApposCN cn np = let g = cn.g in {
|
||||
s = \\n,sp,c => cn.s ! n ! sp ! c ++ (np.s ! No).comp ;
|
||||
g = g;
|
||||
a = cn.a
|
||||
} ;
|
||||
|
||||
|
||||
oper
|
||||
agrGender : NGender -> Number -> Gender =
|
||||
\ng,n ->
|
||||
case <ng,n> of
|
||||
{<NMasc,_> => Masc ;
|
||||
<NFem,_> => Fem ;
|
||||
<NNeut, Sg> => Masc ;
|
||||
_ => Fem
|
||||
};
|
||||
|
||||
oper getNumber : Size -> Number =
|
||||
\n -> case n of
|
||||
{sg => Sg;
|
||||
_ => Pl };
|
||||
|
||||
oper getClit : Animacy -> Bool =
|
||||
\a -> case a of
|
||||
{Animate => True;
|
||||
_ => False};
|
||||
};
|
||||
|
||||
|
||||
@@ -1,16 +1,14 @@
|
||||
concrete NumeralRon of Numeral = CatRon **
|
||||
open MorphoRon, CatRon, Prelude in {
|
||||
|
||||
flags
|
||||
coding=cp1250;
|
||||
|
||||
param DForm = unit | teen | ten | teen_inf | attr;
|
||||
param DForm = unit | teen | ten | teen_inf ;
|
||||
param Place = indep | 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 } ;
|
||||
lincat Sub10 = {s : CardOrd => DForm => Place => Str ; size : Size} ;
|
||||
lincat Sub100 = {s : CardOrd => NumF => Place => Str ; size : Size} ;
|
||||
lincat Sub1000 = {s : CardOrd => NumF => Place => Str ; size : Size} ;
|
||||
lincat Sub1000000 = { s : CardOrd => NumF => Place => Str; size : Size } ;
|
||||
|
||||
|
||||
|
||||
@@ -22,10 +20,9 @@ oper mkOrdinalForm : Str -> Gender -> Str =
|
||||
_ => two+"lea"
|
||||
};
|
||||
Fem => case two of
|
||||
{ x + "a" => two ;
|
||||
x + ("ã"|"u") => x +"a";
|
||||
{ x + ("ã"|"u") => x +"a";
|
||||
x + "ei" => two + "a";
|
||||
x + "ii" => x + "ia" ;
|
||||
x + "ii" => x + "ia" ;
|
||||
x + "i" => x + "ea";
|
||||
x + "ie" => x +"a" ;
|
||||
_ => two +"a"
|
||||
@@ -37,41 +34,37 @@ 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
|
||||
\two, g, fl -> let cc = (artPos g Sg ANomAcc) ++ two
|
||||
in
|
||||
case fl of
|
||||
{ ANomAcc => cc ;
|
||||
AGenDat => (artDem g Sg AGenDat)++"de-"+(artPos g Sg)++ two ;
|
||||
AGenDat => (artDem g Sg AGenDat)++"de-"+(artPos g Sg ANomAcc)++ 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;
|
||||
\two -> \twelve -> \twenty -> \doispe -> mkNumVSpc two twelve twelve twenty two doispe doispe (mkOrdinalForm two Masc) (mkOrdinalForm two Fem);
|
||||
|
||||
|
||||
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 ->
|
||||
oper mkNumVSpc : Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> Digit =
|
||||
\two -> \twelve -> \douasprezece -> \twenty -> \dou -> \doispe -> \douaspe -> \doilea -> \doua ->
|
||||
{s = table {
|
||||
NCard Masc => table {unit => two ; teen => twelve ;
|
||||
ten => twenty ; teen_inf => doispe ; attr => unu
|
||||
ten => twenty ; teen_inf => doispe
|
||||
} ;
|
||||
NCard Fem => table {unit => dou ; teen => douasprezece ;
|
||||
ten => twenty ; teen_inf => douaspe ; attr => una
|
||||
ten => twenty ; teen_inf => douaspe
|
||||
} ;
|
||||
NOrd Masc => table {unit => doilea ;
|
||||
teen => mkOrdinalForm twelve Masc ;
|
||||
ten => mkOrdinalForm twenty Masc ;
|
||||
teen_inf => mkOrdinalForm doispe Masc ;
|
||||
attr => mkOrdinalForm unu Masc
|
||||
teen_inf => mkOrdinalForm doispe Masc
|
||||
} ;
|
||||
NOrd Fem => table {unit => doua ;
|
||||
teen => mkOrdinalForm douasprezece Fem ;
|
||||
ten => mkOrdinalForm twenty Fem ;
|
||||
teen_inf => mkOrdinalForm douaspe Fem ;
|
||||
attr => mkOrdinalForm una Fem
|
||||
teen_inf => mkOrdinalForm douaspe Fem
|
||||
}
|
||||
} ;
|
||||
size = less20 ;
|
||||
@@ -84,11 +77,11 @@ oper regNum : Str -> Digit =
|
||||
|
||||
oper mkMidF : Str -> Str -> Sub100 =
|
||||
\unsprezece, unspe ->
|
||||
{ s = table {NCard g => table { Formal => unsprezece ;
|
||||
Informal => unspe
|
||||
{ s = table {NCard g => table { Formal => \\_ => unsprezece ;
|
||||
Informal => \\_ => unspe
|
||||
};
|
||||
NOrd g => table {Formal => mkOrdinalForm unsprezece g;
|
||||
Informal => mkOrdinalForm unspe g
|
||||
NOrd g => table {Formal => \\_ => mkOrdinalForm unsprezece g;
|
||||
Informal => \\_ => mkOrdinalForm unspe g
|
||||
}
|
||||
};
|
||||
|
||||
@@ -98,34 +91,46 @@ oper mkMidF : Str -> Str -> 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
|
||||
{ s = \\cse => table { NCard g => \\f => d.s ! (NCard g) ! f ! indep ;
|
||||
NOrd g => \\f => let ss = d.s ! (NOrd g) ! f ! indep
|
||||
in
|
||||
case d.size of
|
||||
{ sg => (artDem g Sg cse) ++ ss ;
|
||||
_ => mkOrd ss g cse
|
||||
}
|
||||
};
|
||||
};
|
||||
sp = \\cse => table { NCard g => \\f => d.s ! (NCard g) ! f ! attr ;
|
||||
NOrd g => \\f => let ss = d.s ! (NOrd g) ! f ! indep
|
||||
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 n2 = mkNumVSpc "doi" "doispreze" "douãsprezece" "douãzeci" "douã" "doiºpe" "douãºpe" "doilea" "doua";
|
||||
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 n7 = mkNum "ºapte" "ºaptesprezece" "ºaptezeci" "ºaptispe";
|
||||
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"
|
||||
lin pot01 = let num = mkNumVSpc "un" "unsprezece" "unsprezece" "zece" "o" "unºpe" "unºpe" "dintâi" "dintâi" ;
|
||||
dep = mkNumVSpc "unu" "unsprezece" "unsprezece" "zece" "una" "unºpe" "unºpe" "unulea" "una"
|
||||
|
||||
in
|
||||
{ s = \\o,c => num.s ! o ! c ;
|
||||
{ s = \\o,c => table {indep => num.s ! o ! c ;
|
||||
attr => dep.s ! o ! c
|
||||
} ;
|
||||
size = sg
|
||||
};
|
||||
|
||||
lin pot0 d = { s = \\o, c => d.s ! o ! c ;
|
||||
lin pot0 d = { s = \\o, c => \\_ => d.s ! o ! c ;
|
||||
size = less20
|
||||
};
|
||||
|
||||
@@ -134,19 +139,19 @@ 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
|
||||
{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 ;
|
||||
{s = \\c,_,p => d.s ! c ! unit ! p ;
|
||||
size = d.size
|
||||
};
|
||||
|
||||
lin pot1 = \d ->
|
||||
{s = \\c,_ => d.s ! c ! ten ;
|
||||
{s = \\c => \\_,_ => d.s ! c ! ten ;
|
||||
size = pl
|
||||
};
|
||||
|
||||
@@ -154,8 +159,8 @@ lin pot1 = \d ->
|
||||
|
||||
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
|
||||
NCard g => \\_,_ => d.s ! (NCard g) ! ten ++ "ºi" ++ e.s ! (NCard g) ! unit ! attr ;
|
||||
NOrd g => \\_,_ => d.s ! (NCard g) ! ten ++ "ºi" ++ e.s ! (NOrd g) ! unit ! attr
|
||||
};
|
||||
size = pl
|
||||
};
|
||||
@@ -164,29 +169,29 @@ 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)
|
||||
NCard g => \\_,_ => d.s ! (NCard Fem) ! unit ! indep ++ (mksute d.size) ;
|
||||
NOrd g => \\_,_ => d.s ! (NCard Fem) ! unit ! indep ++ (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 ;
|
||||
{s = \\c,f,_ => d.s ! (NCard Fem) ! unit ! indep ++ (mksute d.size) ++ e.s ! c ! f ! attr ;
|
||||
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 )
|
||||
NCard g => \\f,p => mkmie n.size (n.s ! (NCard Fem) ! f ! indep) ;
|
||||
NOrd g => \\f,p => mkMie n.size g (n.s ! (NCard Fem) ! f ! indep)
|
||||
};
|
||||
size = pl
|
||||
} ;
|
||||
|
||||
|
||||
lin pot3plus n m =
|
||||
{s = \\c, f => mkmie n.size (n.s ! (NCard Fem) ! f ) ++ m.s ! c ! f ;
|
||||
{s = \\c, f, p => mkmie n.size (n.s ! (NCard Fem) ! f ! indep) ++ m.s ! c ! f ! attr;
|
||||
size = pl
|
||||
};
|
||||
|
||||
@@ -226,7 +231,7 @@ lin
|
||||
} ;
|
||||
lin
|
||||
D_0 = mkDig "0" ;
|
||||
D_1 = mk3Dig "1" "1ul" "1a" sg ;
|
||||
D_1 = mk3Dig "1" "1ul" "1a" sg ; ---- gender
|
||||
D_2 = mkDig "2";
|
||||
D_3 = mkDig "3" ;
|
||||
D_4 = mkDig "4" ;
|
||||
|
||||
@@ -54,9 +54,11 @@ oper
|
||||
Acc : NCase ;
|
||||
Dat : NCase ;
|
||||
Gen : NCase ;
|
||||
|
||||
mkPrep : Str -> NCase -> Prep ;
|
||||
noPrep : NCase -> Prep ;
|
||||
mkPrep : overload {
|
||||
mkPrep : Str -> NCase-> Bool -> Prep ;
|
||||
mkPrep : Str -> NCase -> Prep;
|
||||
};
|
||||
noPrep : NCase -> Prep ;
|
||||
|
||||
--2 Nouns
|
||||
|
||||
@@ -73,7 +75,7 @@ oper
|
||||
|
||||
mkN3 : N -> Prep -> Prep -> N3 ;
|
||||
mkN3 n p q = n ** {lock_N3 = <> ; c2 = p ; c3 = q };
|
||||
|
||||
|
||||
|
||||
|
||||
--3 Proper names and noun phrases
|
||||
@@ -83,11 +85,30 @@ mkN3 n p q = n ** {lock_N3 = <> ; c2 = p ; c3 = q };
|
||||
|
||||
mkPN = overload {
|
||||
mkPN : Str -> PN = mkPropN ;
|
||||
mkPN : Str -> Str -> Gender -> Number -> PN = mkPropNI ;
|
||||
mkPN : Str -> Gender -> PN = mkPropNoun ;
|
||||
mkPN : Str -> Gender -> Number -> PN = mkProperNoun;
|
||||
} ;
|
||||
mkPN : Str -> Gender -> Number -> PN = mkProperNoun;
|
||||
} ;
|
||||
|
||||
mkInAn : PN -> PN = \romania ->
|
||||
{s = table {No | Ac | Vo => romania.s ! No ;
|
||||
_ => case romania.g of
|
||||
{ Fem => romania.s ! Ge ;
|
||||
Masc => romania.s ! No + "ului" }
|
||||
};
|
||||
g = romania.g; n = romania.n;
|
||||
a = Inanimate;
|
||||
lock_PN = <>
|
||||
};
|
||||
|
||||
mkPropNI : Str -> Str -> Gender -> Number -> PN =
|
||||
\romania, romaniei,g,n ->
|
||||
{s = table {Ge | Da => romaniei;
|
||||
_ => romania };
|
||||
g = g; n = n;
|
||||
a = Inanimate;
|
||||
lock_PN = <>
|
||||
};
|
||||
mkPropN : Str -> PN = \Ion ->
|
||||
case last Ion of
|
||||
{ "a" => mkPropNoun Ion Feminine ;
|
||||
@@ -98,15 +119,20 @@ 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
|
||||
{s = table {No => Ion;
|
||||
Ac => Ion;
|
||||
Ge => case <last Ion,gen> of
|
||||
{ <"a",Fem> => init Ion + "ei" ;
|
||||
_ => "lui" ++ Ion
|
||||
};
|
||||
AVoc => Ion
|
||||
Da => case <last Ion,gen> of
|
||||
{ <"a",Fem> => init Ion + "ei" ;
|
||||
_ => "lui" ++ Ion
|
||||
};
|
||||
Vo => Ion
|
||||
};
|
||||
g = gen ;
|
||||
n = num ;
|
||||
n = num ; a = Animate;
|
||||
lock_PN = <>
|
||||
};
|
||||
|
||||
@@ -152,9 +178,22 @@ lock_PN = <>
|
||||
|
||||
|
||||
Preposition = Compl ;
|
||||
mkPrep ss cc = {s = ss ; c = cc; isDir = True; lock_Prep = <>} ;
|
||||
noPrep cc = mkPrep [] cc ;
|
||||
|
||||
mkPrep = overload {
|
||||
mkPrep : Str -> NCase-> Bool -> Prep = mkPreposition;
|
||||
mkPrep : Str -> NCase -> Prep = mkPrepos;
|
||||
};
|
||||
mkPreposition : Str -> NCase-> Bool -> Prep ;
|
||||
mkPreposition ss cc b = {s = ss ; c = cc; isDir = NoDir; needIndef = b; prepDir = ""; lock_Prep = <>} ;
|
||||
|
||||
mkPrepos : Str -> NCase -> Prep ;
|
||||
mkPrepos ss cc = mkPreposition ss cc False;
|
||||
|
||||
noPrep cc = case cc of
|
||||
{Ac => {s = []; c = Ac ; isDir = Dir PAcc; needIndef = True; prepDir = "pe"; lock_Prep = <>};
|
||||
Da => {s = []; c = Da ; isDir = Dir PDat; needIndef = False; prepDir = "" ; lock_Prep = <>};
|
||||
_ => mkPreposition [] cc False
|
||||
} ;
|
||||
|
||||
compN : N -> Str -> N ;
|
||||
compN x y = composeN x y ** {lock_N = <>} ;
|
||||
@@ -231,62 +270,33 @@ mkA = overload {
|
||||
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 = <>} ;
|
||||
{s = adj.s ;
|
||||
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 = <>} ;
|
||||
{s = adj.s ;
|
||||
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 = <> } ;
|
||||
{s = adj.s ;
|
||||
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 = <>} ;
|
||||
{s = adj.s ;
|
||||
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 = <>} ;
|
||||
{s = adj.s ;
|
||||
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 = <>} ;
|
||||
{s = adj.s ;
|
||||
isPre = False ; lock_A = <>} ;
|
||||
|
||||
mkADeg : A -> A -> A ;
|
||||
noComp : A -> A ;
|
||||
@@ -295,10 +305,10 @@ let adj = mkSpecMut auriu in
|
||||
prefA : A -> A ;
|
||||
|
||||
mkADeg a b =
|
||||
{s = table {Posit => a.s ! Posit ; _ => b.s ! Posit} ; isPre = a.isPre ; lock_A = <>} ;
|
||||
{s = a.s ; isPre = a.isPre ; lock_A = <>} ;
|
||||
|
||||
noComp a =
|
||||
{s = \\_ => a.s ! Posit ;
|
||||
{s = a.s ;
|
||||
isPre = a.isPre ;
|
||||
lock_A = <>} ;
|
||||
|
||||
@@ -306,49 +316,49 @@ prefA a = {s = a.s ; isPre = True ; lock_A = <>} ;
|
||||
|
||||
--Adverbs :
|
||||
|
||||
mkAdv : Str -> Adv ;
|
||||
mkAdV : Str -> AdV ;
|
||||
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 = <>} ;
|
||||
|
||||
|
||||
--Verbs :
|
||||
|
||||
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) ;
|
||||
|
||||
|
||||
|
||||
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 ;
|
||||
|
||||
--Verbs :
|
||||
|
||||
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) ;
|
||||
|
||||
|
||||
|
||||
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;
|
||||
@@ -359,7 +369,7 @@ oper mkV : Str -> V = \s -> mkNV (regV s) ;
|
||||
|
||||
mkV3 = overload {
|
||||
mkV3 : V -> V3 = dirV3 ;
|
||||
mkV3 : V -> Prep -> Prep -> V3 = mmkV3
|
||||
mkV3 : V -> Prep -> Prep -> V3 = mmkV3
|
||||
} ;
|
||||
|
||||
V0 : Type = V ;
|
||||
@@ -371,25 +381,25 @@ oper mkV : Str -> V = \s -> mkNV (regV s) ;
|
||||
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 = <>} ;
|
||||
--mmkV3 : V -> Prep -> Prep -> Bool -> 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 = <>} ;
|
||||
mkV2S v p = v ** {c2 = p ; mn,mp = Indic ; lock_V2S = <>} ;
|
||||
mkVV : V -> VV ;
|
||||
mkVV v = v ** {c2 = \\_ => "" ; lock_VV = <>} ;
|
||||
mkV2V v p q = v ** {c2 = p; c3 = q; lock_V2V = <>} ;
|
||||
mkVA v = v ** {lock_VA = <>} ;
|
||||
mkV2A v p q = mmkV3 v p q ** {lock_V2A = <>} ;
|
||||
mkV2A v p q = v ** {c2 = p; c3 = q; lock_V2A = <>} ;
|
||||
mkVQ : V -> VQ ;
|
||||
mkVQ v = v ** {lock_VQ = <>} ;
|
||||
mkV2Q : V -> Prep -> V2Q ;
|
||||
mkV2Q v p = mmkV2 v p ** {lock_V2Q = <>} ;
|
||||
mkV2Q v p = v ** {c2 = p ; lock_V2Q = <>} ;
|
||||
|
||||
mkAS v = v ** {lock_AS = <>} ; ---- more moods
|
||||
mkA2S v p = mkA2 v p ** {lock_A2S = <>} ;
|
||||
@@ -400,7 +410,7 @@ oper mkV : Str -> V = \s -> mkNV (regV s) ;
|
||||
|
||||
|
||||
mkOrd : A -> Ord ;
|
||||
mkOrd a = {s = a.s ! Posit ; isPre = a.isPre ; lock_Ord = <>} ;
|
||||
mkOrd a = {s = \\n,g,c => a.s ! AF g n Indef (convCase c) ; isPre = a.isPre ; lock_Ord = <>} ;
|
||||
|
||||
|
||||
|
||||
@@ -418,7 +428,128 @@ mkOrd a = {s = a.s ! Posit ; isPre = a.isPre ; lock_Ord = <>} ;
|
||||
|
||||
|
||||
|
||||
----
|
||||
|
||||
mkDet = overload {
|
||||
mkDet : (_,_,_,_ : Str) -> Number -> Det = mkDetS ;
|
||||
mkDet : (_,_,_,_,_,_,_,_ : Str) -> Number -> Det = mkD
|
||||
} ;
|
||||
|
||||
mkDetS : (_,_,_,_ : Str) -> Number -> Det =
|
||||
\orice, oricare,oricarui, oricarei,n ->
|
||||
{s,sp = table { Masc => table {Da | Ge => oricarui ;
|
||||
_ => orice } ;
|
||||
Fem => table {Da | Ge => oricarei ;
|
||||
_ => oricare }
|
||||
};
|
||||
post = \\g,c => ""; size = "";
|
||||
n = n; isDef = False ; hasRef = False;
|
||||
lock_Det = <>
|
||||
};
|
||||
|
||||
mkD : (_,_,_,_,_,_,_,_ : Str) -> Number -> Det =
|
||||
\multi, multe, multor, multorf,multiS,multeS, multora, multoraF, n ->
|
||||
{ s = table { Masc => table {Da | Ge => multor ;
|
||||
_ => multi } ;
|
||||
Fem => table {Da | Ge => multorf ;
|
||||
_ => multe }
|
||||
};
|
||||
sp = table { Masc => table {Da | Ge => multora ;
|
||||
_ => multiS } ;
|
||||
Fem => table {Da | Ge => multoraF ;
|
||||
_ => multeS }
|
||||
};
|
||||
post = \\g,c => ""; size = "";
|
||||
n = n; isDef = False ; hasRef = False;
|
||||
lock_Det = <>
|
||||
};
|
||||
|
||||
mkNP = overload {
|
||||
mkNP : (_,_ : Str) -> Number -> Gender -> Bool -> NP = mkNPs ;
|
||||
mkNP : (_,_,_ : Str) -> Number -> Gender -> Bool -> NP = mkNPa ;
|
||||
mkNP : (_,_,_ : Str) -> Number -> Gender -> NP = mkNPspec
|
||||
} ;
|
||||
|
||||
mkNPspec : Str -> Str -> Str -> Number -> Gender -> NP =
|
||||
\cineva,cuiva,cinev, n, g -> let ag = agrP3 g n in
|
||||
{ s = \\c => case c of
|
||||
{Da => {clit = \\cs => ((genCliticsCase ag Da).s ! cs) ;
|
||||
comp = cuiva
|
||||
};
|
||||
Ge => {clit = \\cs => [] ;
|
||||
comp = cuiva};
|
||||
Vo => {clit = \\cs => [] ;
|
||||
comp = cinev
|
||||
};
|
||||
_ => {clit = \\cs => ((genCliticsCase ag c).s ! cs) ;
|
||||
comp = cineva
|
||||
}
|
||||
};
|
||||
a = ag ;
|
||||
indForm = cineva ;
|
||||
hasClit = True;
|
||||
isPronoun = False ;
|
||||
hasRef = True ;
|
||||
lock_NP = <>
|
||||
} ;
|
||||
|
||||
mkNPs : Str -> Str -> Number -> Gender -> Bool -> NP =
|
||||
\cineva, cuiva, n, g, b -> let ag = agrP3 g n in
|
||||
{s = \\c => case c of
|
||||
{Da | Ge => {clit = \\cs => [] ;
|
||||
comp = cuiva
|
||||
};
|
||||
_ => {clit = \\cs => [];
|
||||
comp = cineva}
|
||||
};
|
||||
a = ag ;
|
||||
indForm = cineva ;
|
||||
hasClit = False;
|
||||
isPronoun = False ;
|
||||
hasRef = b ;
|
||||
lock_NP = <>
|
||||
};
|
||||
|
||||
mkNPa : Str -> Str -> Str -> Number -> Gender -> Bool -> NP =
|
||||
\om,omului,omule, n, g, b -> let ag = agrP3 g n
|
||||
in
|
||||
{s = \\c => case c of
|
||||
{Da | Ge => {clit = \\cs => [] ;
|
||||
comp = omului
|
||||
};
|
||||
Vo => {clit = \\_ => [];
|
||||
comp = omule};
|
||||
_ => {clit = \\cs => [] ;
|
||||
comp = om}
|
||||
};
|
||||
a = ag;
|
||||
hasClit = False;
|
||||
hasRef = b;
|
||||
isPronoun = False ;
|
||||
indForm = om ;
|
||||
lock_NP = <>
|
||||
};
|
||||
mkPronoun :(_,_,_,_,_,_,_,_,_ : Str) -> Gender -> Number -> Person -> Pron =\eu, mine, mie, meu, euV, meuP, mea, mei, mele,g, n, p ->
|
||||
{s = table
|
||||
{No => eu ;
|
||||
Ac => mine ;
|
||||
Da => mie ;
|
||||
Ge => meu;
|
||||
Vo => euV
|
||||
} ;
|
||||
c1 = \\c => (cliticsAc g n p).s ! c ; c2 = \\c => (cliticsDa g n p).s ! c ;
|
||||
a = {g = g ; n = n ; p = p} ;
|
||||
poss = table {Sg => table {Masc => meuP ; Fem => mea};
|
||||
Pl => table {Masc => mei ; Fem => mele}
|
||||
};
|
||||
lock_Pron = <>};
|
||||
|
||||
|
||||
|
||||
|
||||
-- fix for Genitive, person 1 - 2
|
||||
-- only problem is for genitive case demanded by prepositions (ex : beyond me), otherwise the possesive adjective is used.
|
||||
-- in this case we add a case to the complement, so that the right gender is chosen.
|
||||
|
||||
|
||||
} ;
|
||||
|
||||
28
lib/src/romanian/PhonoRon.gf
Normal file
28
lib/src/romanian/PhonoRon.gf
Normal file
@@ -0,0 +1,28 @@
|
||||
resource PhonoRon = open Prelude in {
|
||||
|
||||
flags coding=utf8 ;
|
||||
|
||||
oper
|
||||
voyelle : Strs = strs {
|
||||
"a" ; "?" ; "?" ; "e" ; "?" ; "?" ; "??" ;
|
||||
"h" ;
|
||||
"i" ; "?" ; "o" ; "?" ; "u" ; "?" ; "y"
|
||||
} ;
|
||||
|
||||
elision : Str -> Str = \d -> d + pre {"e" ; "'" / voyelle} ;
|
||||
|
||||
-- The following morphemes are the most common uses of elision.
|
||||
|
||||
elisDe = elision "d" ;
|
||||
elisLa = pre {"la" ; "l'" / voyelle} ;
|
||||
elisLe = elision "l" ;
|
||||
elisNe = elision "n" ;
|
||||
elisQue = elision "qu" ;
|
||||
|
||||
-- The subjunction "si" has a special kind of elision. The rule is
|
||||
-- only approximatively correct, for "si" is not really elided before
|
||||
-- the string "il" in general, but before the pronouns "il" and "ils".
|
||||
|
||||
elisSi = pre {"si" ; "s'" / strs {"il"}} ;
|
||||
|
||||
}
|
||||
27
lib/src/romanian/PhraseRon.gf
Normal file
27
lib/src/romanian/PhraseRon.gf
Normal file
@@ -0,0 +1,27 @@
|
||||
incomplete concrete PhraseRon of Phrase =
|
||||
CatRon ** open ResRon, Prelude in {
|
||||
|
||||
flags optimize = all_subs ;
|
||||
|
||||
lin
|
||||
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
|
||||
|
||||
UttS s = {s = s.s ! Indic} ;
|
||||
UttQS qs = {s = qs.s ! QDir} ;
|
||||
UttImpSg pol imp = {s = pol.s ++ imp.s ! pol.p ! ImpF Sg False ! Fem} ;
|
||||
UttImpPl pol imp = {s = pol.s ++ imp.s ! pol.p ! ImpF Pl False ! Fem} ;
|
||||
UttImpPol pol imp = {s = pol.s ++ imp.s ! pol.p ! ImpF Sg True ! Fem} ;
|
||||
|
||||
UttIP ip = {s = ip.s ! No} ; --- Acc also
|
||||
UttIAdv iadv = iadv ;
|
||||
UttNP np = {s = (np.s ! No).comp} ;
|
||||
-- UttVP vp = {s = infVP vp (agrP3 Fem Sg)} ; --- Agr
|
||||
UttAdv adv = adv ;
|
||||
|
||||
NoPConj = {s = []} ;
|
||||
PConjConj conj = {s = conj.s2} ;
|
||||
|
||||
NoVoc = {s = []} ;
|
||||
VocNP np = {s = "," ++ (np.s ! Vo).comp} ;
|
||||
|
||||
}
|
||||
110
lib/src/romanian/QuestionRon.gf
Normal file
110
lib/src/romanian/QuestionRon.gf
Normal file
@@ -0,0 +1,110 @@
|
||||
incomplete concrete QuestionRon of Question =
|
||||
CatRon ** open ResRon, Prelude in {
|
||||
|
||||
flags optimize=all_subs ;
|
||||
|
||||
lin
|
||||
|
||||
QuestCl cl = {
|
||||
s = \\t,a,p =>
|
||||
let cls = cl.s ! DDir ! t ! a ! p
|
||||
in table {
|
||||
QDir => cls ! Indic ;
|
||||
QIndir => "dacã" ++ cls ! Indic
|
||||
}
|
||||
} ;
|
||||
-- doesn't have clitics since it's subject of the phrase
|
||||
|
||||
QuestVP qp vp = {
|
||||
s = \\t,a,b,_ =>
|
||||
let
|
||||
cl = mkClause (qp.s ! No) False (agrP3 qp.a.g qp.a.n) vp
|
||||
in
|
||||
cl.s ! DDir ! t ! a ! b ! Indic
|
||||
} ;
|
||||
|
||||
QuestSlash ip slash = {
|
||||
s = \\t,a,p =>
|
||||
let
|
||||
cls : Direct -> Str =
|
||||
\d -> slash.s ! ip.a ! d ! t ! a ! p ! Indic ;
|
||||
prep = if_then_Str ip.hasRef slash.c2.prepDir "" ;
|
||||
who = prep ++ slash.c2.s ++ ip.s ! slash.c2.c
|
||||
in table {
|
||||
QDir => who ++ cls DInv ;
|
||||
QIndir => who ++ cls DDir
|
||||
}
|
||||
} ;
|
||||
|
||||
QuestIAdv iadv cl = {
|
||||
s = \\t,a,p,q =>
|
||||
let
|
||||
ord = case q of {
|
||||
QDir => DInv ;
|
||||
QIndir => DDir
|
||||
} ;
|
||||
cls = cl.s ! ord ! t ! a ! p ! Indic ;
|
||||
why = iadv.s
|
||||
in why ++ cls
|
||||
} ;
|
||||
|
||||
QuestIComp icomp np = {
|
||||
s = \\t,a,p,_ =>
|
||||
let
|
||||
vp = predV copula ;
|
||||
cls = (mkClause (np.s ! No).comp np.hasClit np.a vp).s !
|
||||
DInv ! t ! a ! p ! Indic ;
|
||||
why = icomp.s ! {g = np.a.g ; n = np.a.n}
|
||||
in why ++ cls
|
||||
} ;
|
||||
|
||||
PrepIP p ip = {
|
||||
s = p.s ++ ip.s ! p.c
|
||||
} ;
|
||||
|
||||
AdvIP ip adv = {
|
||||
s = \\c => ip.s ! c ++ adv.s ;
|
||||
a = ip.a;
|
||||
hasRef = ip.hasRef
|
||||
} ;
|
||||
|
||||
IdetCN idet cn =
|
||||
let
|
||||
|
||||
n = idet.n ;
|
||||
g = agrGender cn.g n;
|
||||
a = aagr g n
|
||||
in {
|
||||
s = \\c => idet.s ! g ! (convCase c) ++ cn.s ! n ! Indef ! (convCase c);
|
||||
a = a;
|
||||
hasRef = getClit cn.a
|
||||
|
||||
} ;
|
||||
|
||||
IdetIP idet =
|
||||
let
|
||||
g = Masc ;
|
||||
n = idet.n ;
|
||||
a = aagr g n
|
||||
in {
|
||||
s = \\c => idet.s ! g ! (convCase c) ;
|
||||
a = a ;
|
||||
hasRef = True
|
||||
} ;
|
||||
|
||||
IdetQuant idet num =
|
||||
let
|
||||
n = num.n ;
|
||||
in {
|
||||
s = \\g,c => idet.s ! n ! g ! c ++ num.s ! g ;
|
||||
n = n
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
CompIAdv a = {s = \\_ => a.s} ;
|
||||
|
||||
CompIP p = {s = \\_ => p.s ! No} ;
|
||||
|
||||
|
||||
}
|
||||
63
lib/src/romanian/RelativeRon.gf
Normal file
63
lib/src/romanian/RelativeRon.gf
Normal file
@@ -0,0 +1,63 @@
|
||||
incomplete concrete RelativeRon of Relative =
|
||||
CatRon ** open Prelude, ResRon in {
|
||||
|
||||
flags optimize=all_subs ;
|
||||
|
||||
lin
|
||||
|
||||
RelCl cl = {
|
||||
s = \\ag,t,a,p,m => therefore_PConj.s ++ conjThat ++
|
||||
cl.s ! DDir ! t ! a ! p ! m ;
|
||||
c = No
|
||||
} ;
|
||||
|
||||
|
||||
RelVP rp vp = case rp.hasAgr of {
|
||||
True => {s = \\ag =>
|
||||
(mkClause
|
||||
(rp.s ! {g = ag.g ; n = ag.n} ! No) False
|
||||
{g = rp.a.g ; n = rp.a.n ; p = P3}
|
||||
vp).s ! DDir ; c = No} ;
|
||||
False => {s = \\ag =>
|
||||
(mkClause
|
||||
(rp.s ! {g = ag.g ; n = ag.n} ! No) False
|
||||
ag
|
||||
vp).s ! DDir ; c = No
|
||||
}
|
||||
} ;
|
||||
|
||||
RelSlash rp slash = {
|
||||
s = \\ag,t,a,p,m =>
|
||||
let aag = {g = ag.g ; n = ag.n} --add Clitics in this case also !
|
||||
in
|
||||
slash.c2.s ++ slash.c2.prepDir ++ rp.s ! aag ! slash.c2.c ++
|
||||
slash.s ! aag ! DInv ! t ! a ! p ! m ;
|
||||
c = No
|
||||
} ;
|
||||
|
||||
FunRP p np rp = let ss = (np.s ! No).comp
|
||||
in {
|
||||
s = \\a,c => ss ++ p.s ++ rp.s ! a ! p.c ;
|
||||
a = {g = np.a.g ; n = np.a.n} ;
|
||||
hasAgr = True;
|
||||
hasRef = np.hasRef
|
||||
} ;
|
||||
|
||||
-- Ac => if_then_Str p.isDir (ss ++ p.s ++ rp.s ! a ! p.c) (ss ++ p.s ++ rp.s ! a ! No)
|
||||
IdRP = {
|
||||
s = \\ag,c => case c of { Da | Ge => case <ag.g, ag.n > of
|
||||
{<Fem,Sg> => "careia" ; <Masc,Sg> => "caruia" ;
|
||||
<_Pl> => "carora"
|
||||
};
|
||||
_ => "care"
|
||||
}
|
||||
;
|
||||
a = {g = Masc ; n = Sg} ;
|
||||
hasAgr = False;
|
||||
hasRef = True
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -1,11 +1,11 @@
|
||||
--1 Romance auxiliary operations.
|
||||
--
|
||||
|
||||
resource ResRon = ParamX ** open Prelude in {
|
||||
resource ResRon = ParamX - [Temp,TTAnt,Tense,TPres,TPast,TFut,TCond], PhonoRon ** open Prelude in {
|
||||
|
||||
flags optimize=all ;
|
||||
flags optimize= all ;
|
||||
|
||||
flags optimize=all ;
|
||||
|
||||
|
||||
--2 Enumerated parameter types for morphology
|
||||
--
|
||||
@@ -26,10 +26,18 @@ param
|
||||
|
||||
Animacy = Animate | Inanimate ;
|
||||
|
||||
param Size = sg | less20 | pl ;
|
||||
-- Refl = NoRefl | ARefl | DRefl ;
|
||||
|
||||
-- Case = Acc | Dat | Gen ;
|
||||
Clitics = Normal | Composite | Short | Vocative ;
|
||||
|
||||
Size = sg | less20 | pl ;
|
||||
|
||||
ParClit = PAcc | PDat ;
|
||||
|
||||
VClit = VNone | VOne ParClit | VRefl | VMany ;
|
||||
|
||||
PrepDir = Dir ParClit | NoDir ;
|
||||
|
||||
-- Adjectives are inflected in number, gender, have specific form for enclitic determined
|
||||
--article, and specific forms for Nominative-Accusative/Dative-Genitive/Voccative
|
||||
|
||||
@@ -42,10 +50,9 @@ param
|
||||
-- Cardinal numerals have gender, ordinal numerals have full number as well.
|
||||
|
||||
ACase = ANomAcc | AGenDat | AVoc ;
|
||||
Species = Def | Indef ;
|
||||
Species = Indef | Def ;
|
||||
NCase = No | Da | Ac | Ge | Vo ;
|
||||
|
||||
|
||||
CardOrd = NCard Gender | NOrd Gender;
|
||||
|
||||
|
||||
@@ -88,7 +95,7 @@ param
|
||||
|
||||
-- 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
|
||||
@@ -97,17 +104,18 @@ param
|
||||
| VPart Gender Number Species ACase
|
||||
| VGer
|
||||
;
|
||||
|
||||
-}
|
||||
TMood =
|
||||
VPres Mood
|
||||
| VImperf Mood --# notpresent
|
||||
| VPasse --# notpresent
|
||||
| VImperff --# notpresent
|
||||
| VPasse Mood --# notpresent
|
||||
| VFut --# notpresent
|
||||
| VCondit --# notpresent
|
||||
;
|
||||
|
||||
NumPersI = SgP2 | PlP1 | PlP2 ;
|
||||
|
||||
|
||||
VPForm =
|
||||
VPFinite TMood Anteriority
|
||||
| VPImperat
|
||||
@@ -117,7 +125,6 @@ param
|
||||
RTense =
|
||||
RPres
|
||||
| RPast --# notpresent
|
||||
| RPasse --# notpresent
|
||||
| RFut --# notpresent
|
||||
| RCond --# notpresent
|
||||
;
|
||||
@@ -127,18 +134,22 @@ param
|
||||
oper
|
||||
AAgr : Type = {g : Gender ; n : Number} ;
|
||||
Agr : Type = AAgr ** {p : Person} ;
|
||||
RAgr : Type = {s : Clitics => Str} ;
|
||||
|
||||
param
|
||||
RAgr = RAg {g : Gender ; n : Number} | RNoAg ; --- AAgr
|
||||
|
||||
|
||||
|
||||
oper
|
||||
|
||||
-- clitics : Gender -> Number
|
||||
genForms : Str -> Str -> Gender => Str = \bon,bonne ->
|
||||
table {
|
||||
Masc => bon ;
|
||||
Fem => bonne
|
||||
} ;
|
||||
|
||||
RNoAg : RAgr = genClit "" "" "" "";
|
||||
|
||||
aagrForms : (x1,_,_,x4 : Str) -> (AAgr => Str) = \tout,toute,tous,toutes ->
|
||||
table {
|
||||
{g = g ; n = Sg} => genForms tout toute ! g ;
|
||||
@@ -147,19 +158,159 @@ param
|
||||
|
||||
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} ;
|
||||
Compl : Type = {s : Str ; c : NCase ; isDir : PrepDir ; needIndef : Bool ; prepDir : Str} ;
|
||||
|
||||
-- complAcc : Compl = {s = [] ; c = Acc ; isDir = True} ;
|
||||
-- complGen : Compl = {s = [] ; c = Gen ; isDir = True} ;
|
||||
-- complDat : Compl = {s = [] ; c = Dat ; isDir = True} ;
|
||||
oper
|
||||
NounPhrase : Type = {
|
||||
s : NCase => {comp : Str ;
|
||||
clit : Clitics => Str} ;
|
||||
a : Agr ;
|
||||
indForm : Str ;
|
||||
hasClit : Bool ;
|
||||
hasRef : Bool ;
|
||||
isPronoun : Bool
|
||||
} ;
|
||||
|
||||
Pronoun : Type = {s : NCase => {comp, c1, c2 : Str};
|
||||
a : Agr ;
|
||||
poss : Number => Gender => Str
|
||||
};
|
||||
|
||||
|
||||
|
||||
heavyNP : {s : NCase => Str ; a : Agr; hasClit : Bool; ss : Str} -> NounPhrase = \np -> {
|
||||
s = \\c => {comp = np.s ! c ;
|
||||
clit = \\cs => if_then_Str np.hasClit ((genCliticsCase np.a c).s ! cs) [] };
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
a = np.a ;
|
||||
indForm = np.ss ;
|
||||
hasClit = np.hasClit ;
|
||||
isPronoun = False;
|
||||
hasRef = False
|
||||
|
||||
} ;
|
||||
|
||||
|
||||
appCompl : Compl -> NounPhrase -> Str = \comp,np ->
|
||||
comp.s ++ (np.s ! comp.c).comp ;
|
||||
|
||||
oper convCase : NCase -> ACase =
|
||||
\nc -> case nc of
|
||||
{Da | Ge => AGenDat;
|
||||
No | Ac => ANomAcc;
|
||||
_ => AVoc} ;
|
||||
oper convACase : ACase -> NCase =
|
||||
\ac -> case ac of
|
||||
{ANomAcc => No ;
|
||||
AGenDat => Ge ;
|
||||
_ => Vo};
|
||||
|
||||
--oper genRAgr : (x1,_,x3 : Str) -> RAgr = \ma,m,me -> genClit ma m me ** {hasClit = True};
|
||||
|
||||
oper genClit : (x1,_,_,x4 : Str) -> {s : Clitics => Str} = \ma, m, me, mma ->
|
||||
{s = table {Normal => ma;
|
||||
Short => m;
|
||||
Composite => me ;
|
||||
Vocative => mma
|
||||
}};
|
||||
|
||||
oper genCliticsCase : Agr -> NCase -> {s : Clitics => Str} = \agr, c ->
|
||||
case c of
|
||||
{Da => cliticsDa agr.g agr.n agr.p ;
|
||||
Ac => cliticsAc agr.g agr.n agr.p ;
|
||||
_ => {s = \\_ => []}
|
||||
};
|
||||
|
||||
oper aRefl : Agr -> RAgr =
|
||||
\a -> case <a.g,a.n,a.p> of
|
||||
{<_,_,P3> => {s = (genClit "se" "s-" "se" "").s } ;
|
||||
_ => {s = (cliticsAc a.g a.n a.p).s }
|
||||
};
|
||||
|
||||
oper dRefl : Agr -> RAgr =
|
||||
\a -> case <a.g,a.n,a.p> of
|
||||
{<_,_,P3> => {s = (genClit "îºi" "-ºi" "ºi" "").s } ;
|
||||
_ => {s = (cliticsDa a.g a.n a.p).s }
|
||||
};
|
||||
|
||||
oper cliticsAc : Gender -> Number -> Person -> {s: Clitics => Str} =
|
||||
\g,n,p -> case <g,n,p> of
|
||||
{<_,Sg,P1> => genClit "mã" "m-" "mã" "-mã"; <_,Pl,P1> => genClit "ne" "ne-" "ne" "-ne";
|
||||
<_,Sg,P2> => genClit "te" "te-" "te" "-te"; <_,Pl,P2> => genClit "vã" "v-" "vã" "-vã";
|
||||
<Masc,Sg,P3> => genClit "îl" "l-" "-l" "-l"; <Masc,Pl,P3> => genClit "îi" "i-" "-i" "-i";
|
||||
<Fem,Sg,P3> => genClit "o" "-o" "-o" "-o"; <Fem,Pl,P3> => genClit "le" "le-" "le" "-le"
|
||||
};
|
||||
|
||||
oper cliticsDa : Gender -> Number -> Person -> {s : Clitics => Str} =
|
||||
\g,n,p -> case <g,n,p> of
|
||||
{<_,Sg,P1> => genClit "îmi" "mi-" "mi" "-mi"; <_,Pl,P1> => genClit "ne" "ne-" "ni" "-ne";
|
||||
<_,Sg,P2> => genClit "îþi" "þi-" "þi" "-þi"; <_,Pl,P2> => genClit "vã" "v-" "vi" "-vã";
|
||||
<_,Sg,P3> => genClit "îi" "i-" "i" "-i"; <_,Pl,P3> => genClit "le" "le-" "li" "-le"
|
||||
};
|
||||
|
||||
oper
|
||||
VPC : Type = {
|
||||
-- for conjunctive mood where the negation comes
|
||||
s : VPForm => {
|
||||
sa : Str ; -- sa
|
||||
sv : Agr => Str -- merge
|
||||
} ;
|
||||
neg : Polarity => Str ;
|
||||
clitAc : RAgr ;
|
||||
clitDa : RAgr ;
|
||||
clitRe : RAgr ;
|
||||
nrClit : VClit ;
|
||||
comp : Agr => Str ; -- content(e) ; à ma mère ; hier
|
||||
ext : Polarity => Str ; -- que je dors / que je dorme
|
||||
} ;
|
||||
|
||||
-- fix for Refl + Dat
|
||||
|
||||
flattenClitics : VClit -> RAgr -> RAgr -> RAgr -> Bool -> Bool -> {s1 : Str ; s2 : Str } =
|
||||
\vc, clA, clD, clR, isFemSg, b ->
|
||||
let par = if_then_else Clitics b Short Normal;
|
||||
pcomb = if_then_else Clitics b Short Composite
|
||||
|
||||
in
|
||||
case isFemSg of
|
||||
{True => {s1 = clD.s ! par ++ clR.s ! par ; s2 = clA.s ! Short};
|
||||
_ => case vc of
|
||||
{VOne PAcc => {s1 = clA.s ! par ; s2 = ""};
|
||||
VOne PDat => {s1 = clD.s ! par ; s2 = ""};
|
||||
VRefl => {s1 = clR.s ! par ; s2 = ""};
|
||||
_ => {s1 = clD.s ! Composite ++ clR.s ! pcomb ++ clA.s ! pcomb ; s2 = ""}
|
||||
}
|
||||
};
|
||||
|
||||
{-
|
||||
{<False,_,False,_> => {s1 = clD.s ! par ; s2 = ""};
|
||||
<False,False,_,_> => {s1 = clR.s ! par ; s2 = ""};
|
||||
<_,_,_,True> => {s1 = clD.s ! par ++ clR.s ! par ; s2 = clA.s ! Short};
|
||||
<_,False,False,_> => {s1 = clA.s ! par ; s2 = ""};
|
||||
_ => {s1 = clD.s ! Composite ++ clR.s ! Composite ++ clA.s ! pcomb ; s2 = ""}
|
||||
};
|
||||
-}
|
||||
|
||||
flattenSimpleClitics : VClit -> RAgr -> RAgr -> RAgr -> Str =
|
||||
\vc, clA, clD, clR ->case vc of
|
||||
{VOne _ => clD.s ! Normal ++ clA.s ! Normal;
|
||||
_ => clD.s ! Composite ++ clR.s ! Composite ++ clA.s ! Composite
|
||||
};
|
||||
|
||||
|
||||
-- we rely on the fact that there are not more than 2 clitics for a verb
|
||||
|
||||
oper getSize : Size -> Str =
|
||||
\s -> case s of
|
||||
{ pl => "de" ;
|
||||
_ => ""
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
94
lib/src/romanian/SentenceRon.gf
Normal file
94
lib/src/romanian/SentenceRon.gf
Normal file
@@ -0,0 +1,94 @@
|
||||
incomplete concrete SentenceRon of Sentence =
|
||||
CatRon ** open Prelude, ResRon in {
|
||||
|
||||
flags optimize=all_subs ;
|
||||
|
||||
lin
|
||||
PredVP np vp = mkClause (np.s ! No).comp np.hasClit np.a vp ;
|
||||
|
||||
PredSCVP sc vp = mkClause sc.s False (agrP3 Masc Sg) vp ;
|
||||
|
||||
ImpVP vpr = let agSg = {n = Sg ; g = Masc ; p = P2 } ;
|
||||
agPl = {n = Pl ; g = Masc ; p = P2 } ;
|
||||
clDirSg = vpr.clDat.s ! Vocative ++ (vpr.isRefl ! agSg).s ! Vocative ++ vpr.clAcc.s ! Vocative ;
|
||||
clDirPl = vpr.clDat.s ! Vocative ++ (vpr.isRefl ! agPl).s ! Vocative ++ vpr.clAcc.s ! Vocative ;
|
||||
clNegSg = flattenSimpleClitics vpr.nrClit vpr.clAcc vpr.clDat (vpr.isRefl ! agSg) ;
|
||||
clNegPl = flattenSimpleClitics vpr.nrClit vpr.clAcc vpr.clDat (vpr.isRefl ! agPl)
|
||||
in
|
||||
{
|
||||
s = \\p,f,g =>
|
||||
case <p,f> of {
|
||||
<Pos,ImpF n False> => case n of
|
||||
{ Sg => vpr.s ! Imper SgP2 ++ vpr.comp ! agSg ++ vpr.ext ! Pos;
|
||||
_ => vpr.s ! Imper PlP2 ++ vpr.comp ! agPl ++ vpr.ext ! Pos
|
||||
};
|
||||
<Pos, ImpF n True> => case n of
|
||||
{Sg => "sã" ++ clNegSg ++ conjVP vpr agSg ++ vpr.comp ! agSg ++ vpr.ext ! Pos;
|
||||
Pl => "sã" ++ clNegPl ++ conjVP vpr agPl ++ vpr.comp ! agPl ++ vpr.ext ! Pos
|
||||
};
|
||||
<Neg, ImpF n b> => case n of
|
||||
{Sg => "nu" ++ clNegSg ++ vpr.s ! Inf ++ vpr.comp ! agSg ++ vpr.ext ! Pos;
|
||||
Pl => "nu" ++ clNegPl ++ vpr.s ! Inf ++ vpr.comp ! agPl ++ vpr.ext ! Pos
|
||||
}
|
||||
}
|
||||
} ;
|
||||
|
||||
SlashVP np v2 =
|
||||
{s = \\ag =>
|
||||
let
|
||||
vp = v2
|
||||
in (mkClause (np.s ! No).comp np.hasClit np.a vp).s ;
|
||||
c2 = v2.c2
|
||||
} ;
|
||||
|
||||
AdvSlash slash adv = {
|
||||
s = \\ag,d,t,a,b,m => slash.s ! ag ! d ! t ! a ! b ! m ++ adv.s ;
|
||||
c2 = slash.c2
|
||||
} ;
|
||||
-- potentially overgenerating !! since the complements have a preposition already
|
||||
|
||||
SlashPrep cl prep = {
|
||||
s = \\_ => cl.s ;
|
||||
c2 = {s = prep.s ; c = prep.c ; isDir = NoDir; needIndef = prep.needIndef; prepDir = ""}
|
||||
} ;
|
||||
|
||||
SlashVS np vs slash =
|
||||
{s = \\ag =>
|
||||
(mkClause
|
||||
(np.s ! No).comp np.hasClit np.a
|
||||
(insertExtrapos (\\b => conjThat ++ slash.s ! ag ! (vs.m ! b))
|
||||
(predV vs))
|
||||
).s ;
|
||||
c2 = slash.c2
|
||||
} ;
|
||||
|
||||
EmbedS s = {s = conjThat ++ s.s ! Indic} ;
|
||||
|
||||
EmbedQS qs = {s = qs.s ! QIndir} ;
|
||||
-- EmbedVP vp = {s = infVP vp (agrP3 Masc Sg)} ; --- agr ---- compl
|
||||
|
||||
UseCl t p cl = {
|
||||
s = \\o => t.s ++ p.s ++ cl.s ! DDir ! t.t ! t.a ! p.p ! o
|
||||
} ;
|
||||
|
||||
UseQCl t p cl = {
|
||||
s = \\q => t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p ! q
|
||||
} ;
|
||||
|
||||
UseRCl t p cl = {
|
||||
s = \\r,ag => t.s ++ p.s ++ cl.s ! ag ! t.t ! t.a ! p.p ! r ;
|
||||
c = cl.c
|
||||
} ;
|
||||
UseSlash t p cl = {
|
||||
s = \\ag,mo =>
|
||||
t.s ++ p.s ++ cl.s ! ag ! DDir ! t.t ! t.a ! p.p ! mo ;
|
||||
c2 = cl.c2
|
||||
} ;
|
||||
|
||||
AdvS a s = {s = \\o => a.s ++ s.s ! o} ;
|
||||
|
||||
RelS s r = {
|
||||
s = \\o => s.s ! o ++ "," ++ r.s ! Indic ! agrP3 Masc Sg
|
||||
} ;
|
||||
|
||||
}
|
||||
300
lib/src/romanian/StructuralRon.gf
Normal file
300
lib/src/romanian/StructuralRon.gf
Normal file
@@ -0,0 +1,300 @@
|
||||
--# -path=.:../abstract:../romance:../common:prelude
|
||||
|
||||
concrete StructuralRon of Structural = CatRon **
|
||||
open MorphoRon, ParadigmsRon, BeschRon, Prelude,(X = ConstructX) in {
|
||||
|
||||
flags optimize=all ;
|
||||
--coding=utf8 ;
|
||||
|
||||
lin
|
||||
|
||||
above_Prep = mkPrep "deasupra" Ge ;
|
||||
after_Prep = mkPrep "după" Ac True;
|
||||
all_Predet = {
|
||||
s = \\a => table { AGenDat => aagrForms nonExist nonExist "tuturor" "tuturor" ! a ;
|
||||
_ => aagrForms "tot" "toată" "toţi" "toate" ! a
|
||||
};
|
||||
c = No
|
||||
} ;
|
||||
almost_AdA, almost_AdN = ss "aproape" ;
|
||||
always_AdV = ss "mereu" ;
|
||||
although_Subj = ss "deşi" ;
|
||||
and_Conj = {s1 = [] ; s2 = "şi" ; n = Pl} ;
|
||||
because_Subj = ss "deoarece" ;
|
||||
before_Prep = mkPrep "înaintea" Ge ;
|
||||
behind_Prep = mkPrep "înapoia" Ge ;
|
||||
between_Prep = mkPrep "între" Ac True ;
|
||||
both7and_DConj = {s1,s2 = "şi" ; n = Pl} ;
|
||||
but_PConj = ss "dar" ;
|
||||
by8agent_Prep = mkPrep "de către" Ac True;
|
||||
by8means_Prep = mkPrep "de" Ac True;
|
||||
can8know_VV = mkVV (v_besch68 "putea") ;
|
||||
can_VV = mkVV (v_besch68 "putea") ;
|
||||
during_Prep = mkPrep "în timpul" Ge ;
|
||||
either7or_DConj = {s1,s2 = "sau" ; n = Pl} ;
|
||||
everybody_NP = mkNP "toţi" "tuturor" Pl Masc True; -- form for Fem needed also !
|
||||
every_Det = mkDet "orice" "orice" "oricărui" "oricărei" "orice" "orice" "oricăruia" "oricăreia" Sg ;
|
||||
everything_NP = mkNP "totul" nonExist Sg Masc False;
|
||||
everywhere_Adv = ss "pretutindeni" ;
|
||||
few_Det = mkDet "câţiva" "câteva" "câtorva" "câtorva" Pl ;
|
||||
for_Prep = mkPrep "pentru" Ac True;
|
||||
from_Prep = mkPrep "de la" Ac True;
|
||||
|
||||
he_Pron =
|
||||
mkPronoun
|
||||
"el" "el" "lui" "lui" [] "său" "sa" "săi" "sale" Masc Sg P3 ;
|
||||
|
||||
here7from_Adv = ss "de aici" ;
|
||||
here7to_Adv = ss "până aici" ;
|
||||
here_Adv = ss "aici" ;
|
||||
how_IAdv = ss "cum" ;
|
||||
how8many_IDet = {s = \\g,c => case <g,c> of
|
||||
{ <Fem,AGenDat> => "câtor"; <Fem,_> => "câte" ;
|
||||
<Masc,AGenDat> => "câtor" ; _ => "câţi"
|
||||
};
|
||||
n = Pl
|
||||
} ;
|
||||
if_Subj = ss "dacă" ;
|
||||
in8front_Prep = mkPrep "în faţa" Ge ;
|
||||
i_Pron = mkPronoun "eu" "mine" "mie" [] [] "meu" "mea" "mei" "mele" Masc Sg P1 ;
|
||||
in_Prep = mkPrep "în" Ac True;
|
||||
it_Pron =
|
||||
mkPronoun
|
||||
"" "el" "lui" "lui" [] "său" "sa" "săi" "sale" Masc Sg P3 ;
|
||||
|
||||
less_CAdv = X.mkCAdv "mai puţin" conjThan ;
|
||||
many_Det = mkDet "mulţi" "multe" "multor" "multor" "mulţi" "multe" "multora" "multora" Pl;
|
||||
more_CAdv = X.mkCAdv "mai" conjThan ;
|
||||
most_Predet = {
|
||||
s = \\a => table { AGenDat => "marii parţi a" ;
|
||||
ANomAcc => "marea parte a";
|
||||
AVoc => "mare parte a"
|
||||
};
|
||||
c = Ge
|
||||
};
|
||||
much_Det = mkDet "mult" "multă" nonExist nonExist Sg ;
|
||||
must_VV = mkVV (v_besch140 "trebui") ;
|
||||
no_Utt = ss "nu" ;
|
||||
on_Prep = mkPrep "pe" Ac True;
|
||||
only_Predet = {s = \\_,c => "doar" ; c = No} ;
|
||||
or_Conj = {s1 = [] ; s2 = "sau" ; n = Sg} ;
|
||||
otherwise_PConj = ss "altfel" ;
|
||||
part_Prep = mkPrep "din" Ac True;
|
||||
please_Voc = ss ["vă rog"] ;
|
||||
possess_Prep = mkPrep "" Ge ; -- required forms for Fem Sg, Masc Pl and Fem Pl - maybe variants
|
||||
quite_Adv = ss "chiar" ;
|
||||
she_Pron =
|
||||
mkPronoun
|
||||
"ea" "ea" "ei" "ei" [] "său" "sa" "săi" "sale"
|
||||
Fem Sg P3 ;
|
||||
|
||||
so_AdA = ss "aşa" ;
|
||||
somebody_NP = mkNP "cineva" "cuiva" Sg Masc True;
|
||||
somePl_Det = mkDet "unii" "unele" "unor" "unor" "unii" "unele" "unora" "unora" Pl ;
|
||||
someSg_Det = mkDet "nişte" "nişte" "la nişte" "la nişte" Sg ;
|
||||
something_NP = mkNP "ceva" "a ceva" Sg Masc False;
|
||||
somewhere_Adv = ss ["undeva"] ; --- ne - pas
|
||||
|
||||
that_Quant = {
|
||||
s = \\_ => table {
|
||||
Sg => table {Masc => table { AGenDat => "acelui";
|
||||
_ => "acel"
|
||||
};
|
||||
Fem => table {AGenDat => "acelei";
|
||||
_ => "acea"
|
||||
}
|
||||
};
|
||||
Pl => table { Masc => table {AGenDat => "acelor";
|
||||
_ => "acei"
|
||||
};
|
||||
Fem => table {AGenDat => "acelor";
|
||||
_ => "acele"
|
||||
}
|
||||
}
|
||||
} ;
|
||||
sp = table {
|
||||
Sg => table {Masc => table { AGenDat => "aceluia";
|
||||
_ => "acela"
|
||||
};
|
||||
Fem => table {AGenDat => "aceleia";
|
||||
_ => "aceea"
|
||||
}
|
||||
};
|
||||
Pl => table {Masc => table {AGenDat => "acelora";
|
||||
_ => "aceia"
|
||||
};
|
||||
Fem => table {AGenDat => "acelora";
|
||||
_ => "acelea"
|
||||
}
|
||||
}
|
||||
};
|
||||
isDef = False ; isPost = False ; hasRef = False
|
||||
};
|
||||
|
||||
there7from_Adv = ss ["de acolo"] ;
|
||||
there7to_Adv = ss "până acolo" ;
|
||||
there_Adv = ss "acolo" ;
|
||||
therefore_PConj = ss "astfel" ;
|
||||
--these_NP = mkNP "aceştia" "acestora" Masc Pl True; --form for Fem needed also !
|
||||
they_Pron = mkPronoun
|
||||
"ei" "ei" "lor" "lor" [] "lor" "lor" "lor" "lor"
|
||||
Masc Pl P3 ;
|
||||
this_Quant = {
|
||||
s = \\_ => table {
|
||||
Sg => table {Masc => table { AGenDat => "acestui";
|
||||
_ => "acest"
|
||||
};
|
||||
Fem => table {AGenDat => "acestei";
|
||||
_ => "această"
|
||||
}
|
||||
};
|
||||
Pl => table { Masc => table {AGenDat => "acestor";
|
||||
_ => "aceşti"
|
||||
};
|
||||
Fem => table {AGenDat => "acestor";
|
||||
_ => "aceste"
|
||||
}
|
||||
}
|
||||
} ;
|
||||
sp = table {
|
||||
Sg => table {Masc => table { AGenDat => "acestuia";
|
||||
_ => "acesta"
|
||||
};
|
||||
Fem => table {AGenDat => "acesteia";
|
||||
_ => "aceasta"
|
||||
}
|
||||
};
|
||||
Pl => table {Masc => table {AGenDat => "acestora";
|
||||
_ => "aceştia"
|
||||
};
|
||||
Fem => table {AGenDat => "acestora";
|
||||
_ => "acestea"
|
||||
}
|
||||
}
|
||||
} ;
|
||||
isDef = False ; isPost = False ; hasRef = False
|
||||
};
|
||||
through_Prep = mkPrep "prin" Ac True;
|
||||
too_AdA = ss "prea" ;
|
||||
to_Prep = mkPrep "la" Ac True;
|
||||
under_Prep = mkPrep "sub" Ac True;
|
||||
very_AdA = ss "foarte" ;
|
||||
want_VV = mkVV (v_besch74 "vrea") ;
|
||||
we_Pron = mkPronoun
|
||||
"noi" "noi" "nouă" [] [] "nostru" "noastră" "noştri" "noastre"
|
||||
Masc Pl P1 ;
|
||||
whatSg_IP =
|
||||
{s = \\c => case c of
|
||||
{ Da => "căruia" ;
|
||||
Ge => "a căruia" ;
|
||||
_ => "ce" };
|
||||
a = aagr Masc Sg;
|
||||
hasRef = False
|
||||
};
|
||||
|
||||
whatPl_IP =
|
||||
{s = \\c => case c of
|
||||
{ Da => "cărora" ;
|
||||
Ge => "a cărora" ;
|
||||
_ => "ce" };
|
||||
a = aagr Masc Pl;
|
||||
hasRef = False
|
||||
};
|
||||
when_IAdv = ss "când" ;
|
||||
when_Subj = ss "când" ;
|
||||
where_IAdv = ss "unde" ;
|
||||
which_IQuant = {s = table {
|
||||
Sg => table {Masc => table { AGenDat => "cărui";
|
||||
_ => "care"
|
||||
};
|
||||
Fem => table {AGenDat => "cărei";
|
||||
_ => "care"
|
||||
}
|
||||
};
|
||||
Pl => \\g => table {AGenDat => "căror";
|
||||
_ => "care"
|
||||
}
|
||||
|
||||
};
|
||||
isDef = False
|
||||
};
|
||||
|
||||
whoPl_IP = {s = \\c => case c of
|
||||
{ Da => "cui" ;
|
||||
Ge => "a cui" ;
|
||||
_ => "cine" };
|
||||
a = aagr Masc Pl;
|
||||
hasRef = True
|
||||
};
|
||||
|
||||
whoSg_IP = {s = \\c => case c of
|
||||
{ Da => "cui" ;
|
||||
Ge => "a cui" ;
|
||||
_ => "cine" };
|
||||
a = aagr Masc Sg;
|
||||
hasRef = True
|
||||
};
|
||||
why_IAdv = ss "de ce" ;
|
||||
without_Prep = mkPrep "fără" Ac True;
|
||||
with_Prep = mkPrep "cu" Ac ;
|
||||
yes_Utt = ss "da" ;
|
||||
|
||||
youSg_Pron = mkPronoun
|
||||
"tu" "tine" "ţie" [] "tu" "tău" "ta" "tăi" "tale"
|
||||
Masc Sg P2 ;
|
||||
youPl_Pron, youPol_Pron =
|
||||
mkPronoun
|
||||
"voi" "voi" "vouă" [] "voi" "vostru" "voastră" "voştri" "voastre"
|
||||
Masc Pl P2 ;
|
||||
|
||||
not_Predet = {s = \\a,c => "nu" ; c = No} ;
|
||||
|
||||
no_Quant =
|
||||
{
|
||||
s = \\_ => table {
|
||||
Sg => table {Masc => table { AGenDat => "niciunui";
|
||||
_ => "niciun"
|
||||
};
|
||||
Fem => table {AGenDat => "niciunei";
|
||||
_ => "nicio"
|
||||
}
|
||||
};
|
||||
Pl => table { Masc => table {AGenDat => "niciunor";
|
||||
_ => "niciunii"
|
||||
};
|
||||
Fem => table {AGenDat => "niciunor";
|
||||
_ => "niciunele"
|
||||
}
|
||||
}
|
||||
} ;
|
||||
sp = table {
|
||||
Sg => table {Masc => table { AGenDat => "nimănui";
|
||||
_ => "nimeni"
|
||||
};
|
||||
Fem => table {AGenDat => "nimănui";
|
||||
_ => "nimeni"
|
||||
}
|
||||
};
|
||||
Pl => table {Masc => table {AGenDat => "niciunora";
|
||||
_ => "niciunii"
|
||||
};
|
||||
Fem => table {AGenDat => "niciunora";
|
||||
_ => "niciunele"
|
||||
}
|
||||
}
|
||||
} ;
|
||||
isDef = False ; isPost = False ; hasRef = False
|
||||
};
|
||||
if_then_Conj = {s1 = "dacă" ; s2 = "atunci" ; n = Sg ; lock_Conj = <>} ;
|
||||
nobody_NP = mkNP "nimeni" "nimănui" Sg Masc True;
|
||||
|
||||
nothing_NP = mkNP "nimic" "nimicului" Sg Masc False;
|
||||
at_least_AdN = ss "cel puţin" ;
|
||||
at_most_AdN = ss "cel mult" ;
|
||||
|
||||
except_Prep = mkPrep "cu excepţia" Ge ;
|
||||
|
||||
as_CAdv = X.mkCAdv "la fel de" "ca" ;
|
||||
|
||||
}
|
||||
|
||||
367
lib/src/romanian/VerbRon.gf
Normal file
367
lib/src/romanian/VerbRon.gf
Normal file
@@ -0,0 +1,367 @@
|
||||
incomplete concrete VerbRon of Verb =
|
||||
CatRon ** open Prelude, ResRon in {
|
||||
|
||||
flags optimize=all_subs ;
|
||||
|
||||
lin
|
||||
UseV = \verb ->
|
||||
{
|
||||
s = verb.s ;
|
||||
isRefl = verb.isRefl;
|
||||
nrClit = verb.nrClit;
|
||||
isFemSg = False ;
|
||||
neg = table {Pos => ""; Neg => "nu"} ;
|
||||
clAcc = RNoAg ; nrClit = verb.nrClit;
|
||||
clDat = RNoAg ;
|
||||
comp = \\a => [] ;
|
||||
ext = \\p => [] ;
|
||||
} ;
|
||||
|
||||
ComplVV v vp =insertSimpObj (\\a => "sã" ++ (flattenSimpleClitics vp.nrClit vp.clAcc vp.clDat (vp.isRefl ! a)) ++ conjVP vp a ++vp.comp ! a ++ vp.ext ! Pos) (UseV v) ;
|
||||
|
||||
|
||||
ComplVS v s = insertExtrapos (\\b => conjThat ++ s.s ! (v.m ! b)) (predV v) ;
|
||||
ComplVQ v q = insertExtrapos (\\_ => q.s ! QIndir) (predV v) ;
|
||||
|
||||
|
||||
ComplVA v ap =
|
||||
insertSimpObj (\\a => ap.s ! AF a.g a.n Indef ANomAcc) (UseV v) ;
|
||||
|
||||
|
||||
SlashV2a verb = {s = verb.s ; isRefl = verb.isRefl; nrClit = verb.nrClit;
|
||||
isFemSg = False ;
|
||||
neg = table {Pos => ""; Neg => "nu"} ;
|
||||
clAcc = RNoAg ;
|
||||
clDat = RNoAg ;
|
||||
comp = \\a => [] ;
|
||||
ext = \\p => [] ;
|
||||
c2 = verb.c2 ; needAgr = False ; lock_VP = <>};
|
||||
|
||||
|
||||
|
||||
|
||||
Slash2V3 v np = let s1 = v.c2.s ++(np.s ! (v.c2.c)).comp ;
|
||||
ss = if_then_Str np.hasRef (v.c2.prepDir ++ s1) s1;
|
||||
sir = if_then_Str np.isPronoun "" ss ;
|
||||
vcDa = if_then_else VClit np.hasRef (nextClit v.nrClit PDat) v.nrClit;
|
||||
vcAc = if_then_else VClit np.hasRef (nextClit v.nrClit PAcc) v.nrClit
|
||||
in
|
||||
case v.c2.isDir of
|
||||
{Dir PAcc => (insertObje (\\_ => sir) (clitFromNoun np Ac) RNoAg (isAgrFSg np.a) vcAc (UseV v)) ** {needAgr = False ; c2 = v.c3} ;
|
||||
Dir PDat => (insertObje (\\_ => sir) RNoAg (clitFromNoun np Da) False vcDa (UseV v)) ** {needAgr = False ; c2 = v.c3};
|
||||
_ => (insertSimpObj (\\_ => ss) (UseV v)) ** {needAgr = False ; c2 = v.c3}
|
||||
};
|
||||
|
||||
Slash3V3 v np = let s1 = v.c3.s ++ (np.s ! (v.c3.c)).comp ;
|
||||
ss = if_then_Str np.hasRef (v.c3.prepDir ++ s1) s1 ;
|
||||
sir = if_then_Str np.isPronoun "" ss ;
|
||||
vcDa = if_then_else VClit np.hasRef (nextClit v.nrClit PDat) v.nrClit;
|
||||
vcAc = if_then_else VClit np.hasRef (nextClit v.nrClit PAcc) v.nrClit
|
||||
in
|
||||
case v.c3.isDir of
|
||||
{Dir PAcc => (insertObje (\\_ => sir) (clitFromNoun np Ac) RNoAg (isAgrFSg np.a) vcAc (UseV v)) ** {needAgr = False ; c2 = v.c2} ;
|
||||
Dir PDat => (insertObje (\\_ => sir) RNoAg (clitFromNoun np Da) False vcDa (UseV v)) ** {needAgr = False ; c2 = v.c2} ;
|
||||
_ => (insertSimpObj (\\_ => ss) (UseV v)) ** {needAgr = False ; c2 = v.c2}
|
||||
};
|
||||
|
||||
-- needs fixing - agreement for the added verb must be made accordingly to what we add in ComplSlash !!!
|
||||
-- fixed with extra parameter !
|
||||
|
||||
SlashV2V v vp = (insertSimpObj (\\a => "sã" ++ (flattenSimpleClitics vp.nrClit vp.clAcc vp.clDat (vp.isRefl ! a)) ++ conjVP vp a ++ vp.comp ! a ++ vp.ext ! Pos) (UseV v)) ** {needAgr = True ;c2 = v.c2} ;
|
||||
|
||||
|
||||
SlashV2S v s = (insertExtrapos (\\b => conjThat ++ s.s ! Indic) (UseV v)) ** {needAgr = False; c2 = v.c2};
|
||||
|
||||
SlashV2Q v q = (insertExtrapos (\\_ => q.s ! QIndir) (UseV v)) ** {needAgr = False ; c2 = v.c2 } ;
|
||||
|
||||
|
||||
|
||||
-- more usually the adverbial form is used, hence no agreement
|
||||
|
||||
SlashV2A v ap =
|
||||
(insertSimpObj (\\a => v.c3.s ++ ap.s ! (AF Masc Sg Indef (convCase v.c3.c)))
|
||||
(UseV v)) ** {needAgr = False ;c2 = v.c2} ;
|
||||
|
||||
ComplSlash vp np = let s1 = vp.c2.s ++(np.s ! (vp.c2.c)).comp ;
|
||||
ss = if_then_Str np.hasRef (vp.c2.prepDir ++ s1) s1 ;
|
||||
sir = if_then_Str np.isPronoun "" ss ;
|
||||
vcDa = if_then_else VClit np.hasRef (nextClit vp.nrClit PDat) vp.nrClit;
|
||||
vcAc = if_then_else VClit np.hasRef (nextClit vp.nrClit PAcc) vp.nrClit;
|
||||
vpp = case vp.c2.isDir of
|
||||
{Dir PAcc => insertObje (\\_ => sir) (clitFromNoun np Ac) RNoAg (isAgrFSg np.a) vcAc vp ;
|
||||
Dir PDat => insertObje (\\_ => sir) RNoAg (clitFromNoun np Da) False vcDa vp;
|
||||
_ => insertSimpObj (\\_ => ss) vp
|
||||
}
|
||||
in
|
||||
{isRefl = vpp.isRefl;
|
||||
s = vpp.s ; isFemSg = vpp.isFemSg ;
|
||||
nrClit = vpp.nrClit; clAcc = vpp.clAcc ;
|
||||
clDat = vpp.clDat ; neg = vpp.neg ;
|
||||
comp = case vp.needAgr of
|
||||
{True => \\a => vpp.comp ! (np.a);
|
||||
_ => \\a => vpp.comp ! a
|
||||
};
|
||||
ext = vpp.ext ;
|
||||
lock_VP = <> };
|
||||
|
||||
|
||||
|
||||
|
||||
--add reflexive clitics
|
||||
ReflVP v = {isRefl = case v.c2.c of
|
||||
{Da => \\a => dRefl a;
|
||||
_ => \\a => aRefl a
|
||||
};
|
||||
s = v.s ; isFemSg = v.isFemSg ;
|
||||
nrClit = case v.nrClit of
|
||||
{VNone => VRefl;
|
||||
_ => VMany };
|
||||
clAcc = v.clAcc ;
|
||||
clDat = v.clDat ;
|
||||
neg = v.neg ;
|
||||
comp = v.comp ;
|
||||
ext = v.ext ;
|
||||
lock_VP = <>
|
||||
};
|
||||
|
||||
|
||||
SlashVV v vp =
|
||||
insertObjc (\\a => "sã" ++ (flattenSimpleClitics vp.nrClit vp.clAcc vp.clDat (vp.isRefl ! a)) ++ conjVP vp a ++ vp.comp ! a ++ vp.ext ! Pos) ((UseV v) **{c2=vp.c2; needAgr= vp.needAgr ; lock_VPSlash = <>}) ;
|
||||
{-
|
||||
SlashV2VNP v np vp = let s1 = v.c2.s ++(np.s ! (v.c2.c)).comp ;
|
||||
ss = if_then_Str np.hasRef (v.c2.prepDir ++ s1) s1;
|
||||
sir = if_then_Str np.isPronoun "" ss ;
|
||||
vcDa = if_then_else VClit np.hasRef (nextClit v.nrClit PDat) v.nrClit;
|
||||
vcAc = if_then_else VClit np.hasRef (nextClit v.nrClit PAcc) v.nrClit ;
|
||||
vcomp = (getConjComp vp np.a).s
|
||||
in
|
||||
case v.c2.isDir of
|
||||
{Dir PAcc => (insertObje (\\a => sir ++ vcomp ! a) (clitFromNoun np Ac) RNoAg (isAgrFSg np.a) vcAc (UseV v)) ** {needAgr = vp.needAgr ; c2 = vp.c2} ;
|
||||
|
||||
Dir PDat => (insertObje (\\a => sir ++ vcomp ! a) RNoAg (clitFromNoun np Da) False vcDa (UseV v)) ** {needAgr = vp.needAgr ; c2 = vp.c2};
|
||||
|
||||
_ => (insertSimpObj (\\a => ss ++ vcomp ! a) (UseV v)) ** {needAgr = vp.needAgr ; c2 = vp.c2}
|
||||
};
|
||||
|
||||
-}
|
||||
UseComp comp = insertSimpObj comp.s (UseV copula) ;
|
||||
|
||||
CompAP ap = {s = \\ag => ap.s ! AF ag.g ag.n Indef ANomAcc} ;
|
||||
CompNP np = {s = \\_ => (np.s ! No).comp} ;
|
||||
CompAdv a = {s = \\_ => a.s} ;
|
||||
|
||||
|
||||
AdvVP vp adv = insertAdv adv.s vp ;
|
||||
AdVVP adv vp = insertAdv adv.s vp ;
|
||||
|
||||
PassV2 v = insertSimpObj (\\a => v.s ! PPasse a.g a.n Indef ANomAcc) (UseV auxPassive) ;
|
||||
|
||||
|
||||
|
||||
|
||||
oper conjVP : VP -> Agr -> Str = \vp,agr ->
|
||||
let
|
||||
inf = vp.s ! Subjo SPres agr.n agr.p ;
|
||||
neg = vp.neg ! Pos ;
|
||||
in
|
||||
neg ++ inf ;
|
||||
|
||||
insertAdv : Str -> VP -> VP = \co,vp -> {
|
||||
s = vp.s ;
|
||||
isRefl = vp.isRefl;
|
||||
isFemSg = vp.isFemSg ;
|
||||
clAcc = vp.clAcc ; nrClit = vp.nrClit ;
|
||||
clDat = vp.clDat ;
|
||||
neg = vp.neg ;
|
||||
comp = \\a => vp.comp ! a ++ co ;
|
||||
ext = vp.ext ;
|
||||
lock_VP = <>
|
||||
} ;
|
||||
|
||||
oper copula : V =
|
||||
let t = table {Inf => "fi" ;
|
||||
Indi Presn Sg P1 => "sunt" ; Indi Presn Sg P2 => "eºti" ; Indi Presn Sg P3 => "este" ;
|
||||
Indi Presn Pl P1 => "suntem" ; Indi Presn Pl P2 => "sunteþi" ; Indi Presn Pl P3 => "sunt" ;
|
||||
Indi PSimple Sg P1 => "fusei" ; Indi PSimple Sg P2 => "fuseºi" ; Indi PSimple Sg P3 => "fuse" ;
|
||||
Indi PSimple Pl P1 => "fuserãm" ; Indi PSimple Pl P2 => "fuserãþi" ; Indi PSimple Pl P3 => "fuserã" ;
|
||||
Indi Imparf Sg P1 => "eram" ; Indi Imparf Sg P2 => "erai" ; Indi Imparf Sg P3 => "era" ;
|
||||
Indi Imparf Pl P1 => "eram" ; Indi Imparf Pl P2 => "eraþi" ; Indi Imparf Pl P3 => "erau" ;
|
||||
Indi PPerfect Sg P1 => "fusesem" ; Indi PPerfect Sg P2 => "fuseseºi" ; Indi PPerfect Sg P3 => "fusese" ;
|
||||
Indi PPerfect Pl P1 => "fusesem" ; Indi PPerfect Pl P2 => "fuseseþi" ; Indi PPerfect Pl P3 => "fuseserã" ;
|
||||
Subjo SPres Sg P1 => "fiu" ; Subjo SPres Sg P2 => "fii" ; Subjo SPres Sg P3 => "fie" ;
|
||||
Subjo SPres Pl P1 => "fim" ; Subjo SPres Pl P2 => "fiþi" ; Subjo SPres Pl P3 => "fie" ;
|
||||
Imper SgP2 => "fii" ; Imper PlP2 => "fiþi" ; Imper PlP1 => "fim" ;
|
||||
Ger => "fiind";
|
||||
PPasse g n a d => (mkAdjReg "fost"). s ! (AF g n a d)
|
||||
} in
|
||||
{s = t; isRefl = \\_ => RNoAg; nrClit = VNone ; lock_V = <>} ;
|
||||
|
||||
predV : V -> VP = \verb ->
|
||||
{
|
||||
s = verb.s ;
|
||||
isRefl = verb.isRefl;
|
||||
isFemSg = False ;
|
||||
nrClit = verb.nrClit ;
|
||||
neg = table {Pos => ""; Neg => "nu"} ;
|
||||
clAcc = RNoAg ;
|
||||
clDat = RNoAg ;
|
||||
comp = \\a => [] ;
|
||||
ext = \\p => [] ; lock_VP = <>
|
||||
} ;
|
||||
|
||||
useVP : VP -> VPC = \vp ->
|
||||
let
|
||||
verb = vp.s ;
|
||||
vinf : Bool -> Str = \b -> verb ! Inf ;
|
||||
vger = verb ! Ger ;
|
||||
|
||||
vimp : Agr -> Str = \a -> case <a.n,a.p> of
|
||||
{<Sg,P2> => verb ! Imper SgP2 ;
|
||||
<Pl,P2> => verb ! Imper PlP2 ;
|
||||
_ => verb ! Subjo SPres a.n a.p
|
||||
} ;
|
||||
vf : Str -> (Agr -> Str) -> {
|
||||
sa : Str ;
|
||||
sv : Agr => Str
|
||||
} =
|
||||
\fin,inf -> {
|
||||
sa = fin ;
|
||||
sv = \\a => inf a
|
||||
} ;
|
||||
|
||||
|
||||
in {
|
||||
s = table {
|
||||
VPFinite tm Simul => case tm of
|
||||
{VPres Indic => vf "" (\a -> verb ! Indi Presn a.n a.p) ;
|
||||
VPres Conjunct => vf "sã" (\a -> verb ! Subjo SPres a.n a.p) ;
|
||||
VImperff => vf "" (\a -> verb ! Indi Imparf a.n a.p) ;
|
||||
VPasse Indic => vf "" (\a -> pComp ! a.n ! a.p ++ verb ! PPasse Masc Sg Indef ANomAcc) ;
|
||||
VPasse Conjunct => vf "sã" (\a -> copula.s! Inf ++ verb ! PPasse Masc Sg Indef ANomAcc) ;
|
||||
VFut => vf "" (\a -> pFut ! a.n ! a.p ++ verb ! Inf) ;
|
||||
VCondit => vf "" (\a -> pCond ! a.n ! a.p ++ verb ! Inf)
|
||||
} ;
|
||||
VPFinite tm Anter => case tm of
|
||||
{VPres Indic => vf "" (\a -> pComp ! a.n ! a.p ++ verb ! PPasse Masc Sg Indef ANomAcc) ;
|
||||
(VPres Conjunct | VPasse Conjunct) => vf "sã" (\a -> copula.s! Inf ++ verb ! PPasse Masc Sg Indef ANomAcc) ;
|
||||
VFut => vf "" (\a -> pFut !a.n ! a.p ++ copula.s! Inf ++ verb ! PPasse Masc Sg Indef ANomAcc) ;
|
||||
VCondit => vf "" (\a -> pCond ! a.n ! a.p ++ copula.s ! Inf ++ verb ! PPasse Masc Sg Indef ANomAcc);
|
||||
_ => vf "" (\a -> verb ! Indi PPerfect a.n a.p)
|
||||
};
|
||||
VPInfinit Anter b=> vf "a" (\a -> copula.s ! Inf ++ verb ! PPasse Masc Sg Indef ANomAcc);
|
||||
VPImperat => vf "sã" (\a -> verb ! Subjo SPres a.n a.p) ; -- fix it later !
|
||||
VPGerund => vf "" (\a -> vger) ;
|
||||
VPInfinit Simul b => vf "a" (\a -> verb ! Inf)
|
||||
} ;
|
||||
agr = vp.agr ;
|
||||
neg = vp.neg ;
|
||||
clitAc = vp.clAcc ;
|
||||
clitDa = vp.clDat ;
|
||||
clitRe = RNoAg ;
|
||||
nrClit = vp.nrClit ;
|
||||
comp = vp.comp ;
|
||||
ext = vp.ext
|
||||
} ;
|
||||
|
||||
mkClause : Str -> Bool -> Agr -> VP ->
|
||||
{s : Direct => RTense => Anteriority => Polarity => Mood => Str} =
|
||||
\subj,hasClit,agr,vpr -> {
|
||||
s = \\d,t,a,b,m =>
|
||||
let
|
||||
tm = case t of {
|
||||
RPast => VPasse m ;
|
||||
RFut => VFut ;
|
||||
RCond => VCondit ;
|
||||
RPres => VPres m
|
||||
} ;
|
||||
cmp = case <t,a,m> of
|
||||
{<RPast,Simul,Indic> | <RPres, Anter,Indic> => True ;
|
||||
<RCond, _, _> => True;
|
||||
_ => False
|
||||
} ;
|
||||
vp = useVP vpr ;
|
||||
vps = (vp.s ! VPFinite tm a).sv ;
|
||||
sa = (vp.s ! VPFinite tm a ).sa ;
|
||||
verb = vps ! agr ;
|
||||
neg = vp.neg ! b ;
|
||||
clpr = flattenClitics vpr.nrClit vpr.clAcc vpr.clDat (vpr.isRefl ! agr) (andB vpr.isFemSg cmp) cmp;
|
||||
compl = vp.comp ! agr ++ vp.ext ! b
|
||||
in
|
||||
case d of {
|
||||
DDir =>
|
||||
subj ++ sa ++ neg ++ clpr.s1 ++ verb ++ clpr.s2;
|
||||
DInv =>
|
||||
sa ++ neg ++ clpr.s1 ++verb ++ clpr.s2 ++subj
|
||||
}
|
||||
++ compl
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
oper auxPassive = copula ;
|
||||
|
||||
mkVPSlash : Compl -> VP -> VP ** {c2 : Compl} = \c,vp -> vp ** {c2 = c; needAgr = False} ;
|
||||
|
||||
|
||||
insertObje : (Agr => Str) -> RAgr -> RAgr -> Bool -> VClit -> VP -> VP = \obj,clA, clD, agg, vc, vp -> {
|
||||
s = vp.s ; isRefl = vp.isRefl;
|
||||
isFemSg= orB agg vp.isFemSg ;
|
||||
nrClit = vc;
|
||||
neg = table {Pos => ""; Neg => "nu"} ;
|
||||
clAcc = {s = \\cs => vp.clAcc.s ! cs ++ clA.s ! cs };
|
||||
clDat = {s = \\cs => vp.clDat.s ! cs ++ clD.s ! cs };
|
||||
comp = \\a => vp.comp ! a ++ obj ! a ;
|
||||
ext = vp.ext ; lock_VP = <>
|
||||
};
|
||||
|
||||
insertSimpObj : (Agr => Str) -> VP -> VP = \obj,vp -> {
|
||||
s = vp.s ; isRefl = vp.isRefl; isFemSg = vp.isFemSg ; neg = vp.neg ;
|
||||
clAcc = vp.clAcc ; clDat = vp.clDat ;
|
||||
nrClit = vp.nrClit ;
|
||||
comp = \\a => vp.comp ! a ++ obj ! a ;
|
||||
ext = vp.ext ; lock_VP = <>
|
||||
};
|
||||
|
||||
|
||||
insertObjc : (Agr => Str) -> VPSlash -> VPSlash = \obj,vp ->
|
||||
insertSimpObj obj vp ** {c2 = vp.c2; needAgr = False ; lock_VPSlash = <>} ;
|
||||
|
||||
insertExtrapos : (Polarity => Str) -> VP -> VP = \co,vp -> {
|
||||
s = vp.s ;
|
||||
isFemSg = vp.isFemSg ;
|
||||
clAcc = vp.clAcc ; isRefl = vp.isRefl;
|
||||
clDat = vp.clDat ;
|
||||
neg = vp.neg ;
|
||||
comp = vp.comp ; nrClit = vp.nrClit ;
|
||||
ext = \\p => vp.ext ! p ++ co ! p ;
|
||||
lock_VP =<>
|
||||
} ;
|
||||
|
||||
clitFromNoun : NP -> NCase -> RAgr = \np,nc ->
|
||||
{s = (np.s ! nc).clit; hasClit = True};
|
||||
|
||||
isAgrFSg : Agr -> Bool = \ag ->
|
||||
case <ag.n,ag.g,ag.p> of
|
||||
{<Sg,Fem,P3> => True ;
|
||||
_ => False
|
||||
};
|
||||
|
||||
|
||||
getConjComp : VP -> Agr -> {s: Agr => Str} = \vp,ag ->
|
||||
{s = \\a => "sã" ++ (flattenSimpleClitics vp.nrClit vp.clAcc vp.clDat (vp.isRefl ! a)) ++ conjVP vp ag ++ vp.comp ! a ++ vp.ext ! Pos};
|
||||
|
||||
oper nextClit : VClit -> ParClit -> VClit = \vc,pc ->
|
||||
case vc of
|
||||
{ VNone => VOne pc;
|
||||
_ => VMany
|
||||
};
|
||||
|
||||
-- discuss example
|
||||
-- l -table (ComplSlash (Slash3V3 sell_V3 (UsePN john_PN)) (UsePN paris_PN))
|
||||
-- in English the direct object always comes first, which could lead to incorrect longer examples
|
||||
-- while in French it always comes last
|
||||
-- ?!?
|
||||
};
|
||||
Reference in New Issue
Block a user