mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-16 16:29:32 -06:00
79 lines
2.6 KiB
Plaintext
79 lines
2.6 KiB
Plaintext
resource ResFre = {
|
|
param
|
|
Gen = masc | fem ;
|
|
Num = sg | pl ;
|
|
Mod = ind | subj ;
|
|
Cas = nom | aa | dd ;
|
|
|
|
oper
|
|
nomReg : Str -> Num => Str = \str -> table {{sg} => str ; {pl} => str + "s"} ;
|
|
adjReg : Str -> Gen => Num => Str = \str ->
|
|
table {{masc} => nomReg str ; {fem} => nomReg (str + "e")} ;
|
|
adjEl : Str -> Gen => Num => Str = \str ->
|
|
table {{masc} => nomReg str ; {fem} => nomReg (str + "le")} ;
|
|
adjAl : Str -> Gen => Num => Str = \str ->
|
|
table {{masc} => table {{sg} => str + "l" ; {pl} => str + "ux"} ;
|
|
{fem} => nomReg (str + le) } ;
|
|
adjEr : Str -> Gen => Num => Str = \str ->
|
|
table {{masc} => nomReg (str + "er") ; {fem} => nomReg (str + "ère")} ;
|
|
|
|
LinElem = {g : Gen ; s : Cas => Str} ;
|
|
LinProp = {s : Mod => Str} ;
|
|
|
|
voyelle : Strs = strs {"a" ; "e" ; "i" ; "o" ; "u" ; "y" ; "é"} ;
|
|
elision : Str = pre {"e" ; "'" / voyelle} ;
|
|
ne : Str = "n" + elision ;
|
|
de : Str = "d" + elision ;
|
|
le : Str = "l" + elision ;
|
|
que : Str = "qu" + elision ;
|
|
|
|
si : Str = pre {"si" ; "s'" / strs {"il" ; "ils"}} ;
|
|
indef : Gen => Str = table {{masc} => "un" ; _ => "une"} ;
|
|
tel : Gen => Num => Str = adjEl "tel" ;
|
|
tout : Gen => Num => Str =
|
|
table {{masc} => table {{sg} => "tout" ; {pl} => "tous"} ; {fem} => nomReg "toute" } ;
|
|
etre : Num => Mod => Str = formVerbe "est" "soit" "sont" "soient" ;
|
|
|
|
formVerbe : Str -> Str -> Str -> Str -> Num => Mod => Str =
|
|
\sgi -> \sgs -> \pli -> \pls ->
|
|
table {{sg} => table {{ind} => sgi ; {subj} => sgs} ;
|
|
{pl} => table {{ind} => pli ; {subj} => pls}} ;
|
|
prep : Cas => Str =
|
|
table {{nom} => [] ; {aa} => "à" ; {dd} => de} ;
|
|
|
|
defin : Num => Gen => Cas => Str =
|
|
table {
|
|
{sg} => table {
|
|
{masc} => table {
|
|
{dd} => pre {"du" ; "de"++"l'" / voyelle} ;
|
|
{aa} => pre {"au" ; "à"++"l'" / voyelle} ;
|
|
c => prep ! c ++ le
|
|
} ;
|
|
{fem} => table {
|
|
c => prep ! c ++ pre {"la" ; "l'" / voyelle}
|
|
}
|
|
} ;
|
|
{pl} => table {
|
|
_ => table {
|
|
{dd} => "des" ;
|
|
{aa} => "aux" ;
|
|
c => prep ! c ++ "les"
|
|
}
|
|
}
|
|
} ;
|
|
|
|
pronom : Gen => Cas => Str = table {
|
|
masc => table {nom => "il" ; c => prep ! c ++ "lui"} ;
|
|
fem => table {c => prep ! c ++ "elle"}
|
|
} ;
|
|
|
|
mkPropA1 : LinElem -> (Gen => Num => Str) -> LinProp = \elem -> \adj ->
|
|
{s = table {m => elem.s ! nom ++ etre ! sg ! m ++ adj ! elem.g ! sg}} ;
|
|
|
|
mkPropA2 : Cas -> LinElem -> (Gen => Num => Str) -> LinElem -> LinProp =
|
|
\cas -> \elem -> \adj -> \elem2 -> let
|
|
{adjP : Gen => Num => Str = table {g => table {n => adj ! g ! n ++ elem2.s ! cas}}}
|
|
in mkPropA1 elem adjP ;
|
|
|
|
}
|