forked from GitHub/gf-rgl
(Fre) Update A,A2 to not have Degree
This commit is contained in:
@@ -4,14 +4,16 @@ instance DiffFre of DiffRomance - [
|
||||
imperClit,
|
||||
invertedClause,
|
||||
verbHyphen,
|
||||
iAdvQuestionInv
|
||||
]
|
||||
iAdvQuestionInv,
|
||||
-- for comparative forms
|
||||
ComparAgr, af2compar, aagr2compar
|
||||
]
|
||||
= open CommonRomance, PhonoFre, Prelude in {
|
||||
|
||||
flags optimize=noexpand ; coding=utf8 ;
|
||||
-- flags optimize=all ;
|
||||
|
||||
param
|
||||
param
|
||||
Prepos = P_de | P_a | PNul ;
|
||||
VType = VTyp VAux VBool ; -- True means that -t- is required as in va-t-il, alla-t-il
|
||||
VAux = VHabere | VEsse | VRefl ;
|
||||
@@ -23,7 +25,7 @@ instance DiffFre of DiffRomance - [
|
||||
|
||||
prepCase : Case -> Str = \c -> case c of {
|
||||
Nom => [] ;
|
||||
Acc => [] ;
|
||||
Acc => [] ;
|
||||
CPrep P_a => "à" ;
|
||||
CPrep P_de => elisDe ;
|
||||
CPrep PNul => []
|
||||
@@ -73,9 +75,9 @@ instance DiffFre of DiffRomance - [
|
||||
|
||||
---- pronArg = pronArgGen Neg ; --- takes more space and time
|
||||
|
||||
pronArg : Number -> Person -> CAgr -> CAgr -> Str * Str * Bool =
|
||||
pronArg : Number -> Person -> CAgr -> CAgr -> Str * Str * Bool =
|
||||
\n,p,acc,dat ->
|
||||
let
|
||||
let
|
||||
pacc = case acc of {
|
||||
CRefl => <case p of {
|
||||
P3 => elision "s" ; --- use of reflPron incred. expensive
|
||||
@@ -98,9 +100,9 @@ instance DiffFre of DiffRomance - [
|
||||
-- Positive polarity is used in the imperative: stressed for 1st and
|
||||
-- 2nd persons.
|
||||
|
||||
pronArgGen : RPolarity -> Number -> Person -> CAgr -> CAgr -> Str * Str =
|
||||
pronArgGen : RPolarity -> Number -> Person -> CAgr -> CAgr -> Str * Str =
|
||||
\b,n,p,acc,dat ->
|
||||
let
|
||||
let
|
||||
cas : Person -> Case -> Case = \pr,c -> case <pr,b> of {
|
||||
<P1 | P2, RPos> => CPrep P_de ; --- encoding in argPron
|
||||
_ => c
|
||||
@@ -123,9 +125,9 @@ instance DiffFre of DiffRomance - [
|
||||
_ => <pdat ++ pacc, []>
|
||||
} ;
|
||||
|
||||
mkImperative b p vp =
|
||||
\\pol,g,n =>
|
||||
let
|
||||
mkImperative b p vp =
|
||||
\\pol,g,n =>
|
||||
let
|
||||
agr = Ag g n p ;
|
||||
num = if_then_else Number b Pl n ;
|
||||
verb = vp.s.s ! vImper num p ;
|
||||
@@ -135,14 +137,14 @@ instance DiffFre of DiffRomance - [
|
||||
<Sg,False> => <"toi",elision "t",True> ;
|
||||
_ => <"vous","vous",True>
|
||||
} ;
|
||||
_ => <[],[],False>
|
||||
_ => <[],[],False>
|
||||
} ;
|
||||
clpr = <vp.clit1 ++ vp.clit2, vp.clit3.hasClit> ;
|
||||
compl = vp.comp ! agr ++ vp.ext ! pol
|
||||
in
|
||||
case pol of {
|
||||
RPos => verb ++ if_then_Str refl.p3 bindHyphen [] ++ refl.p1 ++
|
||||
if_then_Str clpr.p2 bindHyphen [] ++ vp.clit3.imp ++
|
||||
RPos => verb ++ if_then_Str refl.p3 bindHyphen [] ++ refl.p1 ++
|
||||
if_then_Str clpr.p2 bindHyphen [] ++ vp.clit3.imp ++
|
||||
compl ;
|
||||
RNeg _ => neg.p1 ++ refl.p2 ++ clpr.p1 ++ verb ++ neg.p2 ++ compl
|
||||
} ;
|
||||
@@ -157,6 +159,11 @@ instance DiffFre of DiffRomance - [
|
||||
|
||||
bindHyphen : Str = BIND ++ "-" ++ BIND ;
|
||||
|
||||
piuComp = "plus" ;
|
||||
ComparAgr = AAgr ;
|
||||
af2compar = aform2aagr ;
|
||||
aagr2compar = id AAgr ;
|
||||
|
||||
CopulaType = {} ;
|
||||
selectCopula = \isEstar -> copula ;
|
||||
serCopula = <> ;
|
||||
@@ -175,7 +182,7 @@ instance DiffFre of DiffRomance - [
|
||||
|
||||
clitInf _ cli inf = cli ++ inf ;
|
||||
|
||||
relPron : Bool => AAgr => Case => Str = \\b,a,c =>
|
||||
relPron : Bool => AAgr => Case => Str = \\b,a,c =>
|
||||
let
|
||||
lequel = case <a.g,a.n,c> of {
|
||||
<Masc,Sg, CPrep P_de> => "duquel" ;
|
||||
@@ -215,8 +222,8 @@ instance DiffFre of DiffRomance - [
|
||||
_ => pron
|
||||
} ;
|
||||
|
||||
argPron : Gender -> Number -> Person -> Case -> Str =
|
||||
let
|
||||
argPron : Gender -> Number -> Person -> Case -> Str =
|
||||
let
|
||||
cases : (x,y : Str) -> Case -> Str = \me,moi,c -> case c of {
|
||||
Acc | CPrep P_a => me ;
|
||||
_ => moi
|
||||
@@ -226,8 +233,8 @@ instance DiffFre of DiffRomance - [
|
||||
CPrep P_a => leur ;
|
||||
_ => eux
|
||||
} ;
|
||||
in
|
||||
\g,n,p -> case <g,n,p> of {
|
||||
in
|
||||
\g,n,p -> case <g,n,p> of {
|
||||
<_,Sg,P1> => cases (elision "m") "moi" ;
|
||||
<_,Sg,P2> => cases (elision "t") "toi" ;
|
||||
<_,Pl,P1> => \_ -> "nous" ;
|
||||
@@ -280,7 +287,7 @@ instance DiffFre of DiffRomance - [
|
||||
|
||||
polNegDirSubj = RNeg True ;
|
||||
|
||||
invertedClause :
|
||||
invertedClause :
|
||||
VType -> (RTense * Anteriority * Number * Person) -> Bool -> (Str * Str) -> Str -> (clit,fin,inf,compl,subj,ext : Str) -> Str =
|
||||
\vtyp,vform,hasClit,neg,bindHyph,clit,fin,inf,compl,subj,ext -> case <vtyp,vform,hasClit> of {
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--# -path=.:../abstract:../common
|
||||
|
||||
incomplete concrete DocumentationFreFunctor of Documentation = CatFre ** open
|
||||
incomplete concrete DocumentationFreFunctor of Documentation = CatFre ** open
|
||||
Terminology, -- the interface to be instantiated
|
||||
ResFre,
|
||||
CommonRomance,
|
||||
@@ -19,22 +19,22 @@ lincat
|
||||
Definition = {s : Str} ;
|
||||
Document = {s : Str} ;
|
||||
Tag = {s : Str} ;
|
||||
|
||||
|
||||
{-
|
||||
-} --# notpresent
|
||||
|
||||
oper
|
||||
heading : N -> Str = \n -> (nounHeading n).s ;
|
||||
|
||||
|
||||
lin
|
||||
InflectionN, InflectionN3, InflectionN3 = \noun -> {
|
||||
t = "n" ;
|
||||
s1 = heading1 (heading noun_Category ++
|
||||
s1 = heading1 (heading noun_Category ++
|
||||
case noun.g of {
|
||||
Masc => "("+heading masculine_Parameter+")" ;
|
||||
Masc => "("+heading masculine_Parameter+")" ;
|
||||
Fem => "("+heading feminine_Parameter+")"
|
||||
}) ;
|
||||
s2 = frameTable (
|
||||
s2 = frameTable (
|
||||
tr (th (heading singular_Parameter) ++ th (heading plural_Parameter)) ++
|
||||
tr (td (noun.s ! Sg) ++ td (noun.s ! Pl))
|
||||
)
|
||||
@@ -45,8 +45,8 @@ lin
|
||||
s1 = heading1 (nounHeading adjective_Category).s ;
|
||||
s2 = frameTable (
|
||||
tr (th "" ++ th (heading singular_Parameter) ++ th (heading plural_Parameter)) ++
|
||||
tr (th (heading masculine_Parameter) ++ td (adj.s ! Posit ! (genNum2Aform Masc Sg)) ++ td (adj.s ! Posit ! (genNum2Aform Masc Pl))) ++
|
||||
tr (th (heading feminine_Parameter) ++ td (adj.s ! Posit ! (genNum2Aform Fem Sg)) ++ td (adj.s ! Posit ! (genNum2Aform Fem Pl)))
|
||||
tr (th (heading masculine_Parameter) ++ td (adj.s ! genNum2Aform Masc Sg) ++ td (adj.s ! genNum2Aform Masc Pl)) ++
|
||||
tr (th (heading feminine_Parameter) ++ td (adj.s ! genNum2Aform Fem Sg) ++ td (adj.s ! genNum2Aform Fem Pl))
|
||||
)
|
||||
} ;
|
||||
|
||||
@@ -141,23 +141,23 @@ lin
|
||||
MkDocument d i e = ss (i.s1 ++ d.s ++ i.s2 ++ paragraph e.s) ; -- explanation appended in a new paragraph
|
||||
MkTag i = ss i.t ;
|
||||
|
||||
oper
|
||||
oper
|
||||
verbExample : CatFre.Cl -> Str = \cl ->
|
||||
(S.mkUtt cl).s
|
||||
(S.mkUtt cl).s
|
||||
++ ";" ++ (S.mkUtt (S.mkS S.anteriorAnt cl)).s --# notpresent
|
||||
;
|
||||
|
||||
inflVerb : Verb -> Str = \verb ->
|
||||
let
|
||||
inflVerb : Verb -> Str = \verb ->
|
||||
let
|
||||
vfin : CommonRomance.VF -> Str = \f ->
|
||||
verb.s ! f ;
|
||||
verb.s ! f ;
|
||||
|
||||
ttable : TMood -> Str = \tense ->
|
||||
frameTable (
|
||||
tr (th "" ++
|
||||
th (heading singular_Parameter) ++
|
||||
th (heading plural_Parameter)) ++
|
||||
tr (th "1.p" ++
|
||||
tr (th "" ++
|
||||
th (heading singular_Parameter) ++
|
||||
th (heading plural_Parameter)) ++
|
||||
tr (th "1.p" ++
|
||||
td (vfin (VFin tense Sg P1)) ++
|
||||
td (vfin (VFin tense Pl P1))) ++
|
||||
tr (th "2.p" ++
|
||||
@@ -170,11 +170,11 @@ oper
|
||||
|
||||
ttable2 : (Mood -> TMood) -> Str = \f ->
|
||||
frameTable (
|
||||
tr (intagAttr "th" "colspan=2" "" ++
|
||||
th (heading indicative_Parameter) ++
|
||||
th (heading conjunctive_Parameter)) ++
|
||||
tr (intagAttr "th" "colspan=2" "" ++
|
||||
th (heading indicative_Parameter) ++
|
||||
th (heading conjunctive_Parameter)) ++
|
||||
tr (intagAttr "th" "rowspan=3" (heading singular_Parameter) ++
|
||||
th "1.p" ++
|
||||
th "1.p" ++
|
||||
td (vfin (VFin (f Indic) Sg P1)) ++
|
||||
td (vfin (VFin (f Conjunct) Sg P1))) ++
|
||||
tr (th "2.p" ++
|
||||
@@ -182,7 +182,7 @@ oper
|
||||
td (vfin (VFin (f Conjunct) Sg P2))) ++
|
||||
tr (th "3.p" ++
|
||||
td (vfin (VFin (f Indic) Sg P3)) ++
|
||||
td (vfin (VFin (f Conjunct) Sg P3))) ++
|
||||
td (vfin (VFin (f Conjunct) Sg P3))) ++
|
||||
tr (intagAttr "th" "rowspan=3" (heading plural_Parameter) ++
|
||||
th "1.p" ++
|
||||
td (vfin (VFin (f Indic) Pl P1)) ++
|
||||
@@ -190,7 +190,7 @@ oper
|
||||
tr (th "2.p" ++
|
||||
td (vfin (VFin (f Indic) Pl P2)) ++
|
||||
td (vfin (VFin (f Conjunct) Pl P2))) ++
|
||||
tr (th "3.p" ++
|
||||
tr (th "3.p" ++
|
||||
td (vfin (VFin (f Indic) Pl P3)) ++
|
||||
td (vfin (VFin (f Conjunct) Pl P3)))
|
||||
) ;
|
||||
@@ -209,17 +209,17 @@ oper
|
||||
paragraph (vfin (VInfin False)) ++
|
||||
heading2 (heading imperative_Parameter) ++
|
||||
frameTable (
|
||||
tr (th "sg.2.p" ++ td (vfin (VImper SgP2))) ++
|
||||
tr (th "pl.1.p" ++ td (vfin (VImper PlP1))) ++
|
||||
tr (th "sg.2.p" ++ td (vfin (VImper SgP2))) ++
|
||||
tr (th "pl.1.p" ++ td (vfin (VImper PlP1))) ++
|
||||
tr (th "pl.2.p" ++ td (vfin (VImper PlP2)))
|
||||
) ++
|
||||
heading2 (heading participle_Parameter) ++
|
||||
frameTable (
|
||||
tr (th (heading past_Parameter) ++ td (vfin (VPart Masc Sg))) ++
|
||||
tr (th (heading present_Parameter) ++ td (vfin VGer))
|
||||
) ;
|
||||
) ;
|
||||
|
||||
{- --# notpresent
|
||||
-}
|
||||
-}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
--# -path=.:../romance:../common:../abstract:../../prelude
|
||||
|
||||
concrete LexiconFre of Lexicon = CatFre **
|
||||
concrete LexiconFre of Lexicon = CatFre **
|
||||
open (M = MorphoFre), PhonoFre, ParadigmsFre, IrregFre in {
|
||||
|
||||
flags
|
||||
flags
|
||||
coding=utf8 ;
|
||||
optimize=values ;
|
||||
optimize=values ;
|
||||
|
||||
lin
|
||||
airplane_N = regGenN "avion" masculine ;
|
||||
@@ -17,8 +17,8 @@ lin
|
||||
baby_N = regGenN "bébé" masculine ;
|
||||
bad_A = prefA (mkADeg (regA "mauvais") (regA "pire")) ;
|
||||
bank_N = regGenN "banque" feminine ;
|
||||
beautiful_A =
|
||||
prefA (compADeg (mkA "beau" "bel" "belle" "beaux" "bellement")) ;
|
||||
beautiful_A =
|
||||
prefA (mkA "beau" "bel" "belle" "beaux" "bellement") ;
|
||||
become_VA = mkVA devenir_V ;
|
||||
beer_N = regGenN "bière" feminine ;
|
||||
beg_V2V = mkV2V (regV "demander") accusative dative ;
|
||||
@@ -87,7 +87,7 @@ lin
|
||||
girl_N = regGenN "fille" feminine ;
|
||||
glove_N = regGenN "gant" masculine ;
|
||||
gold_N = regGenN "or" masculine ;
|
||||
good_A = prefA (mkADeg (mkA "bon" "bonne" "bons" "bien")
|
||||
good_A = prefA (mkADeg (mkA "bon" "bonne" "bons" "bien")
|
||||
(mkA "meilleur" "meilleure" "meilleurs" "mieux")) ;
|
||||
go_V = aller_V ;
|
||||
green_A = regA "vert" ;
|
||||
@@ -104,7 +104,7 @@ lin
|
||||
industry_N = regGenN "industrie" feminine ;
|
||||
iron_N = regGenN "fer" masculine ;
|
||||
king_N = regGenN "roi" masculine ;
|
||||
know_V2 = connaître_V2 ;
|
||||
know_V2 = connaître_V2 ;
|
||||
know_VQ = mkVQ (lin V savoir_V2) ;
|
||||
know_VS = mkVS (lin V savoir_V2) ;
|
||||
lake_N = regGenN "lac" masculine ;
|
||||
@@ -115,7 +115,7 @@ lin
|
||||
like_V2 = dirV2 (regV "aimer") ;
|
||||
listen_V2 = dirV2 (regV "écouter") ;
|
||||
live_V = v2V vivre_V2 ;
|
||||
long_A = compADeg (mkA "long" "longue" "longs" "longuement") ;
|
||||
long_A = mkA "long" "longue" "longs" "longuement" ;
|
||||
lose_V2 = perdre_V2 ;
|
||||
love_N = regGenN "amour" masculine ;
|
||||
love_V2 = dirV2 (regV "aimer") ;
|
||||
@@ -128,12 +128,12 @@ lin
|
||||
mountain_N = regGenN "montagne" feminine ;
|
||||
music_N = regGenN "musique" feminine ;
|
||||
narrow_A = regA "étroit" ;
|
||||
new_A =
|
||||
prefA (compADeg (mkA "nouveau" "nouvel" "nouvelle" "nouveaux" "nouvellement")) ;
|
||||
new_A =
|
||||
prefA (mkA "nouveau" "nouvel" "nouvelle" "nouveaux" "nouvellement") ;
|
||||
newspaper_N = regGenN "journal" masculine ;
|
||||
oil_N = regGenN "huile" feminine ;
|
||||
old_A =
|
||||
prefA (compADeg (mkA "vieux" "vieil" "vieille" "vieux" "vieillement")) ;
|
||||
old_A =
|
||||
prefA (mkA "vieux" "vieil" "vieille" "vieux" "vieillement") ;
|
||||
open_V2 = ouvrir_V2 ;
|
||||
paint_V2A = mkV2A (v2V peindre_V2) accusative (mkPrep "en") ;
|
||||
paper_N = regGenN "papier" masculine ;
|
||||
@@ -193,7 +193,7 @@ lin
|
||||
teacher_N = regGenN "professeur" masculine ;
|
||||
teach_V2 = dirV2 (regV "enseigner") ;
|
||||
television_N = regGenN "télévision" feminine ;
|
||||
thick_A = compADeg (mkA "épais" "épaisse" "épais" "épaissement") ;
|
||||
thick_A = mkA "épais" "épaisse" "épais" "épaissement" ;
|
||||
thin_A = regA "fin" ;
|
||||
train_N = regGenN "train" masculine ;
|
||||
travel_V = regV "voyager" ;
|
||||
@@ -203,13 +203,13 @@ lin
|
||||
understand_V2 = comprendre_V2 ;
|
||||
university_N = regGenN "université" feminine ;
|
||||
village_N = regGenN "village" masculine ;
|
||||
wait_V2 = attendre_V2 ;
|
||||
wait_V2 = attendre_V2 ;
|
||||
walk_V = regV "marcher" ;
|
||||
warm_A = regA "chaud" ;
|
||||
war_N = regGenN "guerre" masculine ;
|
||||
watch_V2 = dirV2 (regV "regarder") ;
|
||||
water_N = regGenN "eau" feminine ;
|
||||
white_A = compADeg (mkA "blanc" "blanche" "blancs" "blanchement") ;
|
||||
white_A = mkA "blanc" "blanche" "blancs" "blanchement" ;
|
||||
window_N = regGenN "fenêtre" feminine ;
|
||||
wine_N = regGenN "vin" masculine ;
|
||||
win_V2 = dirV2 (regV "gagner") ; ---- vaincre
|
||||
@@ -309,7 +309,7 @@ lin
|
||||
wing_N = regN "aile" ;
|
||||
worm_N = regN "ver" ;
|
||||
year_N = regN "an" ; --- année
|
||||
bite_V2 = mordre_V2 ;
|
||||
bite_V2 = mordre_V2 ;
|
||||
blow_V = regV "souffler" ;
|
||||
breathe_V = regV "respirer" ;
|
||||
burn_V = regV "brûler" ;
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
--
|
||||
-- Aarne Ranta 2001 - 2006
|
||||
--
|
||||
-- This is an API for the user of the resource grammar
|
||||
-- This is an API for the user of the resource grammar
|
||||
-- for adding lexical items. It gives functions for forming
|
||||
-- expressions of open categories: nouns, adjectives, verbs.
|
||||
--
|
||||
--
|
||||
-- Closed categories (determiners, pronouns, conjunctions) are
|
||||
-- accessed through the resource syntax API, $Structural.gf$.
|
||||
-- accessed through the resource syntax API, $Structural.gf$.
|
||||
--
|
||||
-- The main difference with $MorphoFre.gf$ is that the types
|
||||
-- referred to are compiled resource grammar types. We have moreover
|
||||
@@ -24,23 +24,23 @@
|
||||
-- separate module [``IrregFre`` ../../french/IrregFre.gf],
|
||||
-- which covers all irregularly inflected verbs.
|
||||
|
||||
resource ParadigmsFre =
|
||||
open
|
||||
(Predef=Predef),
|
||||
Prelude,
|
||||
MorphoFre,
|
||||
resource ParadigmsFre =
|
||||
open
|
||||
(Predef=Predef),
|
||||
Prelude,
|
||||
MorphoFre,
|
||||
BeschFre,
|
||||
CatFre in {
|
||||
|
||||
flags optimize=all ;
|
||||
coding=utf8 ;
|
||||
|
||||
--2 Parameters
|
||||
--2 Parameters
|
||||
--
|
||||
-- To abstract over gender names, we define the following identifiers.
|
||||
|
||||
oper
|
||||
Gender : Type ;
|
||||
Gender : Type ;
|
||||
|
||||
masculine : Gender ;
|
||||
feminine : Gender ;
|
||||
@@ -72,9 +72,9 @@ oper
|
||||
mkN : overload {
|
||||
|
||||
-- The regular function uses heuristics to compute the
|
||||
-- plural and the gender from the singular. The plural
|
||||
-- plural and the gender from the singular. The plural
|
||||
-- heuristic currently
|
||||
-- covers the cases "pas-pas", "prix-prix", "nez-nez",
|
||||
-- covers the cases "pas-pas", "prix-prix", "nez-nez",
|
||||
-- "bijou-bijoux", "cheveu-cheveux", "plateau-plateaux", "cheval-chevaux".
|
||||
-- The gender heuristic is less reliable: it treats as feminine all
|
||||
-- nouns ending with "e" and "ion", all others as masculine.
|
||||
@@ -85,30 +85,30 @@ oper
|
||||
|
||||
mkN : (foie : Str) -> Gender -> N ; --%
|
||||
|
||||
-- In the worst case, both singular and plural forms and the gender are needed.
|
||||
-- In the worst case, both singular and plural forms and the gender are needed.
|
||||
|
||||
mkN : (oeil,yeux : Str) -> Gender -> N ; -- worst-case noun
|
||||
|
||||
--3 Compound nouns
|
||||
--3 Compound nouns
|
||||
--
|
||||
-- Some nouns are ones where the first part is inflected as a noun but
|
||||
-- the second part is not inflected. e.g. "numéro de téléphone".
|
||||
-- the second part is not inflected. e.g. "numéro de téléphone".
|
||||
-- They could be formed in syntax, but we give a shortcut here since
|
||||
-- they are frequent in lexica.
|
||||
|
||||
mkN : N -> Str -> N -- compound noun, e.g. numéro + de téléphone
|
||||
} ;
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
|
||||
--3 Relational nouns
|
||||
--
|
||||
-- Relational nouns ("fille de x") need a case and a preposition.
|
||||
--3 Relational nouns
|
||||
--
|
||||
-- Relational nouns ("fille de x") need a case and a preposition.
|
||||
|
||||
mkN2 : N -> Prep -> N2 ; -- e.g. fille + genitive
|
||||
|
||||
-- The most common cases are the genitive "de" and the dative "à",
|
||||
-- The most common cases are the genitive "de" and the dative "à",
|
||||
-- with the empty preposition.
|
||||
|
||||
deN2 : N -> N2 ; --%
|
||||
@@ -126,7 +126,7 @@ oper
|
||||
-- $N3$ are purely lexical categories. But you can use the $AdvCN$
|
||||
-- and $PrepNP$ constructions to build phrases like this.
|
||||
|
||||
--
|
||||
--
|
||||
--3 Proper names and noun phrases
|
||||
--
|
||||
-- Proper names need a string and a gender. If no gender is given, the
|
||||
@@ -146,7 +146,7 @@ oper
|
||||
|
||||
-- For regular adjectives, all forms are derived from the
|
||||
-- masculine singular. The heuristic takes into account certain
|
||||
-- deviant endings: "banal-banale-banaux", "chinois-chinoise-chinois",
|
||||
-- deviant endings: "banal-banale-banaux", "chinois-chinoise-chinois",
|
||||
-- "heureux-heureuse-heureux", "italien-italienne", "jeune-jeune",
|
||||
-- "amer-amère", "carré- - -carrément", "joli- - -joliment".
|
||||
|
||||
@@ -174,7 +174,7 @@ oper
|
||||
mkA : A -> A -> A ; -- irregular comparison, e.g. bon-meilleur
|
||||
|
||||
mkA : A -> CopulaType -> A -- force copula type
|
||||
|
||||
|
||||
} ;
|
||||
|
||||
-- The functions create by default postfix adjectives. To switch
|
||||
@@ -195,7 +195,7 @@ oper
|
||||
--2 Adverbs
|
||||
|
||||
-- Adverbs are not inflected. Most lexical ones have position
|
||||
-- after the verb.
|
||||
-- after the verb.
|
||||
|
||||
mkAdv : Str -> Adv ; -- ordinary adverb
|
||||
|
||||
@@ -210,10 +210,10 @@ oper
|
||||
|
||||
--2 Verbs
|
||||
--
|
||||
-- Irregular verbs are given in the module $IrregFre$.
|
||||
-- Irregular verbs are given in the module $IrregFre$.
|
||||
-- If a verb should be missing in that list, the module
|
||||
-- $BeschFre$ gives all the patterns of the "Bescherelle" book.
|
||||
--
|
||||
--
|
||||
-- Regular verbs are ones with the infinitive "er" or "ir", the
|
||||
-- latter with plural present indicative forms as "finissons".
|
||||
-- The regular verb function in the first conjugation recognizes
|
||||
@@ -222,7 +222,7 @@ oper
|
||||
--
|
||||
-- Sometimes, however, it is not predictable which variant of the "er"
|
||||
-- conjugation is to be selected. Then it is better to use the function
|
||||
-- that gives the third person singular present indicative and future
|
||||
-- that gives the third person singular present indicative and future
|
||||
-- (("il") "jette", "jettera") as second argument.
|
||||
|
||||
mkV : overload {
|
||||
@@ -249,7 +249,7 @@ oper
|
||||
} ;
|
||||
|
||||
-- The function $mkV$ gives the default compound auxiliary "avoir".
|
||||
-- To change it to "être", use the following function.
|
||||
-- To change it to "être", use the following function.
|
||||
|
||||
etreV : V -> V ; -- force auxiliary to be être (default avoir)
|
||||
|
||||
@@ -261,13 +261,13 @@ oper
|
||||
--3 Two-place verbs
|
||||
--
|
||||
-- Two-place verbs need a preposition, except the special case with direct object.
|
||||
-- (transitive verbs).
|
||||
-- (transitive verbs).
|
||||
|
||||
mkV2 = overload {
|
||||
mkV2 : Str -> V2 --%
|
||||
= \s -> dirV2 (regV s) ;
|
||||
mkV2 : V -> V2 -- direct transitive
|
||||
= dirV2 ;
|
||||
= dirV2 ;
|
||||
mkV2 : V -> Prep -> V2 -- e.g. se fier + genitive
|
||||
= mmkV2
|
||||
} ;
|
||||
@@ -279,7 +279,7 @@ oper
|
||||
-- the first one or both can be absent.
|
||||
|
||||
mkV3 : overload {
|
||||
mkV3 : V -> V3 ; -- donner (+ accusative + dative)
|
||||
mkV3 : V -> V3 ; -- donner (+ accusative + dative)
|
||||
mkV3 : V -> Prep -> V3 ; -- placer (+ accusative) + dans
|
||||
mkV3 : V -> Prep -> Prep -> V3 -- parler + dative + genitive
|
||||
} ;
|
||||
@@ -319,7 +319,7 @@ oper
|
||||
mkA2V : A -> Prep -> Prep -> A2V ; --%
|
||||
|
||||
-- Notice: categories $AS, A2S, AV, A2V$ are just $A$,
|
||||
-- and the second argument is given as an adverb. Likewise
|
||||
-- and the second argument is given as an adverb. Likewise
|
||||
-- $V0$ is just $V$.
|
||||
|
||||
V0 : Type ; --%
|
||||
@@ -332,7 +332,7 @@ oper
|
||||
-- hidden from the document.
|
||||
|
||||
|
||||
Gender = MorphoFre.Gender ;
|
||||
Gender = MorphoFre.Gender ;
|
||||
Number = MorphoFre.Number ;
|
||||
masculine = Masc ;
|
||||
feminine = Fem ;
|
||||
@@ -361,7 +361,7 @@ oper
|
||||
g = case <x : Str> of {
|
||||
_ + ("e" | "ion") => Fem ;
|
||||
_ => Masc
|
||||
}
|
||||
}
|
||||
} ;
|
||||
regGenN x g = mkNomReg x g ** {lock_N = <>} ;
|
||||
compN : N -> Str -> N ;
|
||||
@@ -369,10 +369,10 @@ oper
|
||||
|
||||
mkN = overload {
|
||||
mkN : Str -> N = regN ;
|
||||
mkN : Str -> Gender -> N = regGenN ;
|
||||
mkN : Str -> Gender -> N = regGenN ;
|
||||
mkN : (oeil,yeux : Str) -> Gender -> N = mk2N ;
|
||||
mkN : N -> Str -> N = compN
|
||||
} ;
|
||||
mkN : N -> Str -> N = compN
|
||||
} ;
|
||||
|
||||
|
||||
mkN2 = \n,p -> n ** {lock_N2 = <> ; c2 = p} ;
|
||||
@@ -394,24 +394,24 @@ oper
|
||||
} ;
|
||||
|
||||
mk4A masc fem mascpl aa = mk5A masc masc fem mascpl aa ;
|
||||
mk5A masc mascv fem mascpl aa = compADeg {s = \\_ => (mkAdj' masc mascv fem mascpl aa).s ; isPre = False ; copTyp = serCopula ; lock_A = <>} ;
|
||||
regA a = compADeg {s = \\_ => (mkAdjReg a).s ; isPre = False ; copTyp = serCopula ; lock_A = <>} ;
|
||||
prefA a = {s = a.s ; isPre = True ; copTyp = a.copTyp ; lock_A = <>} ;
|
||||
mk5A masc mascv fem mascpl aa = compADeg (mkAdj' masc mascv fem mascpl aa) ;
|
||||
regA a = compADeg (mkAdjReg a);
|
||||
prefA a = a ** {isPre = True} ;
|
||||
adjCopula a cop = a ** {copTyp = cop} ;
|
||||
|
||||
mkA2 a p = a ** {c2 = p ; lock_A2 = <>} ;
|
||||
|
||||
mkA = overload {
|
||||
mkA : Str -> A = regA ;
|
||||
mkA : (sec,seche : Str) -> A = \sec,seche -> mk4A sec seche (sec + "s") (seche + "ment") ;
|
||||
mkA : (banal,banale,banaux : Str) -> A = \sec,seche,secs -> mk4A sec seche secs (seche + "ment") ;
|
||||
mkA : (sec,seche : Str) -> A = \sec,seche -> mk4A sec seche (sec + "s") (seche + "ment") ;
|
||||
mkA : (banal,banale,banaux : Str) -> A = \sec,seche,secs -> mk4A sec seche secs (seche + "ment") ;
|
||||
mkA : (banal,banale,banaux,banalement : Str) -> A = mk4A ;
|
||||
mkA : (vieux,vieil,vieille,vieuxs,vieuxment : Str) -> A = mk5A ;
|
||||
mkA : A -> A -> A = mkADeg ;
|
||||
mkA : A -> CopulaType -> A = adjCopula ;
|
||||
};
|
||||
|
||||
prefixA a = {s = a.s ; isPre = True ; copTyp = a.copTyp ; lock_A = <>} ;
|
||||
prefixA = prefA ;
|
||||
|
||||
mkAdv x = ss x ** {lock_Adv = <>} ;
|
||||
mkAdV x = ss x ** {lock_AdV = <>} ;
|
||||
@@ -437,7 +437,7 @@ oper
|
||||
A2S, A2V : Type = A2 ;
|
||||
|
||||
mkV0 v = v ** {lock_V0 = <>} ;
|
||||
mkVS v = v ** {m = \\_ => Indic ; lock_VS = <>} ;
|
||||
mkVS v = v ** {m = \\_ => Indic ; lock_VS = <>} ;
|
||||
subjVS v = v ** {m = \\_ => Conjunct ; lock_VS = <>} ;
|
||||
|
||||
mkV2S = overload {
|
||||
@@ -471,13 +471,13 @@ oper
|
||||
|
||||
--------------------------- obsolete
|
||||
|
||||
makeNP : Str -> Gender -> Number -> NP ;
|
||||
makeNP : Str -> Gender -> Number -> NP ;
|
||||
makeNP x g n = {s = (pn2np {s=x;g= g}).s; a = agrP3 g n ; hasClit = False ; isPol = False ; isNeg = False ; lock_NP = <>} ;
|
||||
regPN : Str -> PN ;
|
||||
regPN : Str -> PN ;
|
||||
mk2PN : Str -> Gender -> PN = \x,g -> {s = x ; g = g} ** {lock_PN = <>} ;
|
||||
|
||||
mkADeg : A -> A -> A ;
|
||||
compADeg : A -> A ;
|
||||
compADeg : Adj -> A ;
|
||||
|
||||
regA : Str -> A ;
|
||||
mk4A : (banal,banale,banaux,banalement : Str) -> A ;
|
||||
@@ -486,31 +486,34 @@ oper
|
||||
prefA : A -> A ;
|
||||
adjCopula : A -> CopulaType -> A ;
|
||||
|
||||
mkADeg a b =
|
||||
{s = table {Posit => a.s ! Posit ; _ => b.s ! Posit} ; isPre = a.isPre ; copTyp = a.copTyp ; lock_A = <>} ;
|
||||
compADeg a =
|
||||
{s = table {Posit => a.s ! Posit ; _ => \\f => "plus" ++ a.s ! Posit ! f} ;
|
||||
isPre = a.isPre ;
|
||||
copTyp = a.copTyp ;
|
||||
lock_A = <>} ;
|
||||
mkADeg a b = a ** {
|
||||
compar = \\aagr => b.s ! aagr2aform aagr ; -- meilleur, meilleure, meilleurs, meilleures
|
||||
isDeg = True } ;
|
||||
compADeg a = lin A
|
||||
{s = a.s ;
|
||||
compar = \\_ => nonExist ; --
|
||||
isPre = False ; -- default values
|
||||
copTyp = <> ;
|
||||
isDeg = False
|
||||
} ;
|
||||
|
||||
mkV = overload {
|
||||
mkV : Str -> V = regV ;
|
||||
mkV : (jeter,jette : Str) -> V =
|
||||
mkV : (jeter,jette : Str) -> V =
|
||||
\x,y -> let v = vvf (mkVerb2Reg x y) in {s = v ; vtyp = VTyp VHabere (getVerbT v) ; lock_V = <> ; p = []} ;
|
||||
mkV : (jeter,jette,jettera : Str) -> V = reg3V ;
|
||||
mkV : V2 -> V = v2V ;
|
||||
mkV : (tenir,tiens,tenons,tiennent,tint,tiendra,tenu : Str) -> V
|
||||
= \tenir,tiens,tenons,tiennent,tint,tiendra,tenu ->
|
||||
= \tenir,tiens,tenons,tiennent,tint,tiendra,tenu ->
|
||||
let v = vvf (mkVerb7 tenir tiens tenons tiennent tint tiendra tenu) in
|
||||
{s = v ; vtyp = VTyp VHabere (getVerbT v) ; lock_V = <> ; p = []} ;
|
||||
mkV : (tenir,tiens,tient,tenons,tenez,tiennent,tienne,tenions,tiensI,tint,tiendra,tenu : Str) -> V
|
||||
= \tenir,tiens,tient,tenons,tenez,tiennent,tienne,tenions,tiensI,tint,tiendra,tenu ->
|
||||
= \tenir,tiens,tient,tenons,tenez,tiennent,tienne,tenions,tiensI,tint,tiendra,tenu ->
|
||||
let v = vvf (mkVerb12 tenir tiens tient tenons tenez tiennent tienne tenions tiensI tint tiendra tenu) in
|
||||
{s = v ; vtyp = VTyp VHabere (getVerbT v) ; lock_V = <> ; p = []} ;
|
||||
mkV : V -> V
|
||||
= \v -> v ;
|
||||
mkV : V -> Str -> V
|
||||
mkV : V -> Str -> V
|
||||
= \v,p -> v ** {p = p} ; ---- to recognize particles in dict, not yet in lincat V
|
||||
} ;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user