remove some more independent keywords from Romanian and import the right version of NumeralRon.gf

This commit is contained in:
krasimir
2009-09-14 07:49:08 +00:00
parent 18d01be869
commit 4ef98f44d2
6 changed files with 126 additions and 128 deletions

View File

@@ -1,4 +1,4 @@
incomplete concrete AdjectiveRon of Adjective = concrete AdjectiveRon of Adjective =
CatRon ** open ResRon, Prelude in { CatRon ** open ResRon, Prelude in {
lin lin
@@ -8,7 +8,7 @@ incomplete concrete AdjectiveRon of Adjective =
isPre = a.isPre isPre = a.isPre
} ; } ;
ComparA a np = { ComparA a np = {
s = \\af => more_CAdv.s ++ a.s ! af ++ conjThan ++ (np.s ! Ac).comp ; s = \\af => "mai" ++ a.s ! af ++ conjThan ++ (np.s ! Ac).comp ;
isPre = False isPre = False
} ; } ;
@@ -21,7 +21,7 @@ incomplete concrete AdjectiveRon of Adjective =
} ; } ;
UseComparA a = { UseComparA a = {
s = \\af => more_CAdv.s ++ a.s ! af ; s = \\af => "mai" ++ a.s ! af ;
isPre = False isPre = False
} ; } ;

View File

@@ -1,4 +1,4 @@
incomplete concrete AdverbRon of Adverb = concrete AdverbRon of Adverb =
CatRon ** open ResRon, Prelude in { CatRon ** open ResRon, Prelude in {
lin lin

View File

@@ -1,4 +1,4 @@
incomplete concrete ConjunctionRon of Conjunction = concrete ConjunctionRon of Conjunction =
CatRon ** open ResRon, Coordination, Prelude in { CatRon ** open ResRon, Coordination, Prelude in {
flags optimize=all_subs ; flags optimize=all_subs ;

View File

@@ -1,11 +1,11 @@
--# -path=.:../romance:../abstract:../common:prelude --# -path=.:../abstract:../common:../prelude
concrete GrammarRon of Grammar = concrete GrammarRon of Grammar =
NounRon, NounRon,
VerbRon, VerbRon,
AdjectiveRon, AdjectiveRon,
AdverbRon, AdverbRon,
NumeralRonn, NumeralRon,
SentenceRon, SentenceRon,
IdiomRon, IdiomRon,
QuestionRon, QuestionRon,

View File

@@ -1,4 +1,4 @@
--# -path=.:../romance:../abstract:../common --# -path=.:../abstract:../common:../prelude
concrete LangRon of Lang = concrete LangRon of Lang =
GrammarRon, GrammarRon,

View File

@@ -1,14 +1,14 @@
concrete NumeralRon of Numeral = CatRon ** concrete NumeralRon of Numeral = CatRon **
open MorphoRon, CatRon, Prelude in { open MorphoRon, CatRon, Prelude in {
param DForm = unit | teen | ten | attr ; param DForm = unit | teen | ten | teen_inf ;
param Place = indep | attr ;
lincat Digit = {s : CardOrd => DForm => Str ; size : Size} ;
lincat Digit = {s : NumF => CardOrd => DForm => Str ; size : Size} ; lincat Sub10 = {s : CardOrd => DForm => Place => Str ; size : Size} ;
lincat Sub10 = {s : NumF => CardOrd => DForm => Str ; size : Size} ; lincat Sub100 = {s : CardOrd => NumF => Place => Str ; size : Size} ;
lincat Sub100 = {s : NumF => CardOrd => Str ; size : Size} ; lincat Sub1000 = {s : CardOrd => NumF => Place => Str ; size : Size} ;
lincat Sub1000 = {s : NumF => CardOrd => Str ; size : Size} ; lincat Sub1000000 = { s : CardOrd => NumF => Place => Str; size : Size } ;
lincat Sub1000000 = { s : NumF => CardOrd => Str; size : Size } ;
@@ -21,9 +21,9 @@ oper mkOrdinalForm : Str -> Gender -> Str =
}; };
Fem => case two of Fem => case two of
{ x + ("ã"|"u") => x +"a"; { x + ("ã"|"u") => x +"a";
x + "ie" => x +"ia"; x + "ei" => two + "a";
x + ("ii"|"îi") => x + "a" ; x + "ii" => x + "ia" ;
x + "i" => two + "a"; x + "i" => x + "ea";
x + "ie" => x +"a" ; x + "ie" => x +"a" ;
_ => two +"a" _ => two +"a"
} }
@@ -34,9 +34,8 @@ oper mkOrdinal : Str -> Gender -> ACase -> Str =
\two, g, fl -> mkOrd (mkOrdinalForm two g) g fl; \two, g, fl -> mkOrd (mkOrdinalForm two g) g fl;
oper mkOrd : Str -> Gender -> ACase -> Str = oper mkOrd : Str -> Gender -> ACase -> Str =
\two, g, fl -> let cc = variants{(artPos g Sg ANomAcc)++ two ; \two, g, fl -> let cc = (artPos g Sg ANomAcc) ++ two
(artDem g Sg ANomAcc) ++ "de-"+(artPos g Sg ANomAcc) ++ two in
} in
case fl of case fl of
{ ANomAcc => cc ; { ANomAcc => cc ;
AGenDat => (artDem g Sg AGenDat)++"de-"+(artPos g Sg ANomAcc)++ two ; AGenDat => (artDem g Sg AGenDat)++"de-"+(artPos g Sg ANomAcc)++ two ;
@@ -45,49 +44,29 @@ oper mkOrd : Str -> Gender -> ACase -> Str =
oper mkNum : Str -> Str -> Str -> Str -> Digit = oper mkNum : Str -> Str -> Str -> Str -> Digit =
\two -> \twelve -> \twenty -> \doispe -> mkNumVSpc two twelve twelve twenty two doispe doispe two (mkOrdinalForm two Fem); \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 -> Digit = oper mkNumVSpc : Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> Digit =
\two -> \twelve -> \douasprezece -> \twenty -> \doua -> \doispe -> \douaspe -> \o -> \una-> \two -> \twelve -> \douasprezece -> \twenty -> \dou -> \doispe -> \douaspe -> \doilea -> \doua ->
{s = table { Formal => table { {s = table {
NCard Masc => table {unit => two ; teen => twelve ; NCard Masc => table {unit => two ; teen => twelve ;
ten => twenty ; attr => two ten => twenty ; teen_inf => doispe
} ; } ;
NCard Fem => table {unit => doua ; teen => douasprezece ; NCard Fem => table {unit => dou ; teen => douasprezece ;
ten => twenty ; attr => o ten => twenty ; teen_inf => douaspe
} ; } ;
NOrd Masc => table {unit => mkOrdinalForm two Masc ; NOrd Masc => table {unit => doilea ;
teen => mkOrdinalForm twelve Masc ; teen => mkOrdinalForm twelve Masc ;
ten => mkOrdinalForm twenty Masc ; ten => mkOrdinalForm twenty Masc ;
attr => mkOrdinalForm two Masc teen_inf => mkOrdinalForm doispe Masc
} ; } ;
NOrd Fem => table {unit => mkOrdinalForm doua Fem ; NOrd Fem => table {unit => doua ;
teen => mkOrdinalForm douasprezece Fem ; teen => mkOrdinalForm douasprezece Fem ;
ten => mkOrdinalForm twenty Fem ; ten => mkOrdinalForm twenty Fem ;
attr => una teen_inf => mkOrdinalForm douaspe Fem
} }
} ; } ;
Informal => table {
NCard Masc => table {unit => two ; teen => doispe ;
ten => twenty ; attr => two
} ;
NCard Fem => table {unit => doua ; teen => douaspe ;
ten => twenty ; attr => o
} ;
NOrd Masc => table {unit => mkOrdinalForm two Masc ;
teen => mkOrdinalForm doispe Masc ;
ten => mkOrdinalForm twenty Masc ;
attr => mkOrdinalForm two Masc
} ;
NOrd Fem => table {unit => mkOrdinalForm doua Fem ;
teen => mkOrdinalForm douaspe Fem ;
ten => mkOrdinalForm twenty Fem ;
attr => una
}
}
};
size = less20 ; size = less20 ;
lock_Digit = <> lock_Digit = <>
} ; } ;
@@ -98,35 +77,41 @@ oper regNum : Str -> Digit =
oper mkMidF : Str -> Str -> Sub100 = oper mkMidF : Str -> Str -> Sub100 =
\unsprezece, unspe -> \unsprezece, unspe ->
{ s = table { Formal =>table { { s = table {NCard g => table { Formal => \\_ => unsprezece ;
NCard g => unsprezece ; Informal => \\_ => unspe
NOrd g => mkOrdinalForm unsprezece g };
}; NOrd g => table {Formal => \\_ => mkOrdinalForm unsprezece g;
Informal => table{ Informal => \\_ => mkOrdinalForm unspe g
NCard g => unspe; }
NOrd g => mkOrdinalForm unspe g };
}
} ;
size = less20 ;
lock_Sub100 = <>
};
size = less20 ;
lock_Sub100 = <>
};
lin num = \d -> lin num = \d ->
{ s = \\o => \\c => table { NCard g => d.s ! o ! (NCard g) ; { s = \\cse => table { NCard g => \\f => d.s ! (NCard g) ! f ! indep ;
NOrd g => let ss = d.s ! o ! (NOrd g) NOrd g => \\f => let ss = d.s ! (NOrd g) ! f ! indep
in in
case d.size of case d.size of
{ sg => (artDem g Sg c) ++ ss ; { sg => (artDem g Sg cse) ++ ss ;
_ => mkOrd ss g c _ => 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 size = d.size
} ; } ;
-- Latin A Supplement chars -- Latin A Supplement chars
lin n2 = mkNumVSpc "doi" "doispreze" "douãsprezece" "douãzeci" "douã" "doiºpe" "douãºpe" "do" "doua"; lin n2 = mkNumVSpc "doi" "doispreze" "douãsprezece" "douãzeci" "douã" "doiºpe" "douãºpe" "doilea" "doua";
lin n3 = regNum "trei"; lin n3 = regNum "trei";
lin n4 = mkNum "patru" "paisprezece" "patruzeci" "paiºpe"; lin n4 = mkNum "patru" "paisprezece" "patruzeci" "paiºpe";
lin n5 = mkNum "cinci" "cinsprezece" "cincizeci" "cinºpe"; lin n5 = mkNum "cinci" "cinsprezece" "cincizeci" "cinºpe";
@@ -135,70 +120,78 @@ lin n7 = mkNum "
lin n8 = mkNum "opt" "optsprezece" "optzeci" "optiºpe"; lin n8 = mkNum "opt" "optsprezece" "optzeci" "optiºpe";
lin n9 = regNum "nouã"; lin n9 = regNum "nouã";
lin pot01 = let num = mkNumVSpc "unu" "unsprezece" "unsprezece" "zece" "o" "unºpe" "unºpe" "una" "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 in
{ s = num.s ; { s = \\o,c => table {indep => num.s ! o ! c ;
attr => dep.s ! o ! c
} ;
size = sg size = sg
}; };
lin pot0 d = d ; lin pot0 d = { s = \\o, c => \\_ => d.s ! o ! c ;
size = less20
};
lin pot110 = mkMidF "zece" "zece" ; lin pot110 = mkMidF "zece" "zece" ;
lin pot111 = mkMidF "unsprezece" "unºpe" ; lin pot111 = mkMidF "unsprezece" "unºpe" ;
lin pot1to19 = \d -> lin pot1to19 = \d ->
{s = \\o,c => d.s ! o ! c ! teen ; {s = \\c => table { Formal => \\_ => d.s ! c ! teen ;
size = less20} ; Informal => \\_ => d.s ! c ! teen_inf
};
size = less20
};
lin pot0as1 = \d -> lin pot0as1 = \d ->
{s = \\o,c => d.s ! o ! c ! unit; {s = \\c,_,p => d.s ! c ! unit ! p ;
size = d.size} ; size = d.size
};
lin pot1 = \d -> lin pot1 = \d ->
{s = \\o,c => d.s ! o ! c ! ten ; {s = \\c => \\_,_ => d.s ! c ! ten ;
size = pl} ; size = pl
};
lin pot1plus d e = lin pot1plus d e =
{s = \\o => table { {s = table {
NCard g => d.s ! o ! (NCard g) ! ten ++ "ºi" ++ e.s ! o ! (NCard g) ! attr ; NCard g => \\_,_ => d.s ! (NCard g) ! ten ++ "ºi" ++ e.s ! (NCard g) ! unit ! attr ;
NOrd g => d.s ! o ! (NCard g) ! ten ++ "ºi" ++e.s ! o ! (NOrd g) ! attr NOrd g => \\_,_ => d.s ! (NCard g) ! ten ++ "ºi" ++ e.s ! (NOrd g) ! unit ! attr
}; };
size = pl
size = pl} ; };
lin pot1as2 n = n ; lin pot1as2 n = n ;
lin pot2 d = lin pot2 d =
{s = \\o => table { {s = table {
NCard g => d.s ! o ! (NCard Fem) ! unit ++ (mksute d.size) ; NCard g => \\_,_ => d.s ! (NCard Fem) ! unit ! indep ++ (mksute d.size) ;
NOrd g => d.s ! o ! (NCard Fem)! unit ++ (mkSute d.size g) NOrd g => \\_,_ => d.s ! (NCard Fem) ! unit ! indep ++ (mkSute d.size g)
}; };
size = pl} ; size = pl} ;
lin pot2plus d e = lin pot2plus d e =
{s = \\o, c => d.s ! o ! (NCard Fem) ! unit ++ (mksute d.size) ++ e.s ! o ! c ; {s = \\c,f,_ => d.s ! (NCard Fem) ! unit ! indep ++ (mksute d.size) ++ e.s ! c ! f ! attr ;
size = pl} ; size = pl} ;
lin pot2as3 n = lin pot2as3 n = n ;
{s = \\o, c => n.s ! o ! c ;
size = n.size
};
lin pot3 n = lin pot3 n =
{s = \\o => table { {s = table {
NCard g => mkmie n.size (n.s ! o ! (NCard Fem)) (n.s ! o ! (NCard Fem)) ; NCard g => \\f,p => mkmie n.size (n.s ! (NCard Fem) ! f ! indep) ;
NOrd g => mkMie n.size g (n.s ! o ! (NCard Fem)) (n.s ! o ! (NCard Fem)) NOrd g => \\f,p => mkMie n.size g (n.s ! (NCard Fem) ! f ! indep)
}; };
size = n.size size = pl
} ; } ;
lin pot3plus n m = lin pot3plus n m =
{s = \\o, c => (mkmie n.size (n.s ! o ! (NCard Fem)) (n.s ! o ! (NCard Fem))) ++ m.s ! Formal ! c; {s = \\c, f, p => mkmie n.size (n.s ! (NCard Fem) ! f ! indep) ++ m.s ! c ! f ! attr;
size = pl size = pl
}; };
@@ -207,34 +200,38 @@ oper mkSute : Size -> Gender -> Str = \sz, g ->
table {sg => mkOrdinalForm "sutã" g ; table {sg => mkOrdinalForm "sutã" g ;
_ => mkOrdinalForm "sute" g } ! sz ; _ => mkOrdinalForm "sute" g } ! sz ;
oper mkmie : Size -> Str -> Str -> Str = \sz, attr, indep -> oper mkmie : Size -> Str -> Str = \sz, attr ->
table {sg => "o" ++ "mie" ; table {sg => "o" ++ "mie" ;
less20 => attr ++ "mii" ; less20 => attr ++ "mii" ;
pl => indep ++ "de" ++ "mii"} ! sz ; pl => attr ++ "de" ++ "mii"} ! sz ;
oper mkMie : Size -> Gender -> Str -> Str -> Str = \sz, g, attr, indep -> oper mkMie : Size -> Gender -> Str -> Str = \sz, g, attr ->
table { sg => "o" ++ mkOrdinalForm "mie" g ; table { sg => "o" ++ mkOrdinalForm "mie" g ;
less20 => attr ++ mkOrdinalForm "mii" g ; less20 => attr ++ mkOrdinalForm "mii" g ;
pl => indep ++ "de" ++ mkOrdinalForm "mii" g } ! sz ; pl => attr ++ "de" ++ mkOrdinalForm "mii" g } ! sz ;
--numerals as sequences of digits : --numerals as sequences of digits :
lincat lincat
Dig = {s : CardOrd => Str; n : Number} ; Dig = {s : CardOrd => Str; n : Size ; isDig : Bool} ;
lin lin
IDig d = d ; IDig d = d ;
IIDig d i = { IIDig d i = {
s = \\o => d.s ! NCard Masc ++ i.s ! o ; s = \\o => d.s ! NCard Masc ++ i.s ! o ;
n = Pl n = case d.n of
{ sg => if_then_else Size (i.isDig) less20 pl ;
_ => pl
};
isDig = False
} ; } ;
lin lin
D_0 = mkDig "0" ; D_0 = mkDig "0" ;
D_1 = mk3Dig "1" "1ul" "1a" Sg ; ---- gender D_1 = mk3Dig "1" "1ul" "1a" sg ; ---- gender
D_2 = mkDig "2"; D_2 = mkDig "2";
D_3 = mkDig "3" ; D_3 = mkDig "3" ;
D_4 = mkDig "4" ; D_4 = mkDig "4" ;
@@ -245,15 +242,16 @@ lin
D_9 = mkDig "9" ; D_9 = mkDig "9" ;
oper mkDig : Str -> Dig = \c -> mk3Dig c (c + "lea") (c + "a") Pl ; oper mkDig : Str -> Dig = \c -> mk3Dig c (c + "lea") (c + "a") less20 ;
oper mk3Dig : Str -> Str -> Str-> Number -> Dig = \c,u,o,n -> { oper mk3Dig : Str -> Str -> Str-> Size -> Dig = \c,u,o,n -> {
s = table {NCard g => c ; NOrd Masc => u ; NOrd Fem => o } ; s = table {NCard g => c ; NOrd Masc => u ; NOrd Fem => o } ;
n = n; n = n;
isDig = True ;
lock_Dig = <> lock_Dig = <>
} ; } ;
TDigit = {s : CardOrd => Str; n : Number} ; TDigit = {s : CardOrd => Str; n : Size ; isDig : Bool} ;
} }