mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-26 11:18:55 -06:00
Romance languages for the new API.
This commit is contained in:
@@ -80,10 +80,11 @@ oper
|
||||
-- Adjectives are conveniently seen as gender-dependent nouns.
|
||||
-- Here are some patterns. First one that describes the worst case.
|
||||
|
||||
mkAdj : (_,_,_ : Str) -> Adj = \vieux,vieuxs,vieille ->
|
||||
mkAdj : (_,_,_,_ : Str) -> Adj = \vieux,vieuxs,vieille,vieillement ->
|
||||
{s = table {
|
||||
Masc => numForms vieux vieuxs ;
|
||||
Fem => nomReg vieille
|
||||
AF Masc n => numForms vieux vieuxs ! n ;
|
||||
AF Fem n => nomReg vieille ! n ;
|
||||
AA => vieillement
|
||||
}
|
||||
} ;
|
||||
|
||||
@@ -100,24 +101,29 @@ oper
|
||||
-- Adjectives themselves are records. Here the most common cases:
|
||||
|
||||
adjGrand : Str -> Adj = \grand ->
|
||||
{s = adjReg grand} ;
|
||||
mkAdj grand (grand + "s") (grand + "e") (grand + "ement") ;
|
||||
|
||||
-- Masculine form used for adverbial; also covers "carré".
|
||||
|
||||
adjJoli : Str -> Adj = \joli ->
|
||||
mkAdj joli (joli + "s") (joli + "e") (joli + "ment") ;
|
||||
|
||||
adjHeureux : Str -> Adj = \heureux ->
|
||||
let {heureu = Predef.tk 1 heureux} in
|
||||
mkAdj heureux heureu (heureu+"se") ;
|
||||
mkAdj heureux heureu (heureu+"se") (heureu+"sement") ;
|
||||
|
||||
adjJeune : Str -> Adj = \jeune ->
|
||||
mkAdj jeune (jeune+"s") jeune ;
|
||||
mkAdj jeune (jeune+"s") jeune (jeune+"ment") ;
|
||||
|
||||
adjIndien : Str -> Adj = \indien ->
|
||||
mkAdj indien (indien+"s") (indien+"ne") ;
|
||||
mkAdj indien (indien+"s") (indien+"ne") (indien+"nement") ;
|
||||
|
||||
adjFrancais : Str -> Adj = \francais ->
|
||||
mkAdj francais francais (francais+"e") ;
|
||||
mkAdj francais francais (francais+"e") (francais+"ement") ;
|
||||
|
||||
adjCher : Str -> Adj = \cher ->
|
||||
let {ch = Predef.tk 2 cher} in
|
||||
mkAdj cher (cher + "s") (ch + "ère") ;
|
||||
mkAdj cher (cher + "s") (ch + "ère") (ch + "èrement") ;
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
--# -path=.:../romance:../abstract:../../prelude
|
||||
|
||||
concrete StructuralFre of Structural = CombinationsFre ** open SyntaxFre in {
|
||||
concrete StructuralFre of Structural = CombinationsFre **
|
||||
open SyntaxFre, MorphoFre, Prelude in {
|
||||
|
||||
lin
|
||||
INP = pronNounPhrase pronJe ;
|
||||
@@ -18,10 +19,32 @@ lin
|
||||
|
||||
--- TheyNP = pronNounPhrase (variants {pronIls ; pronElles}) ;
|
||||
|
||||
ThisNP = mkNameNounPhrase ["ceci"] Masc ;
|
||||
ThatNP = mkNameNounPhrase ["ça"] Masc ;
|
||||
TheseNP n = mkNameNounPhrase ("ceux" ++ n.s ! Masc ++ "ci") Masc ;
|
||||
ThoseNP n = mkNameNounPhrase ("ceux" ++ n.s ! Masc ++ "là") Masc ;
|
||||
|
||||
ItNP = pronNounPhrase pronIl ;
|
||||
|
||||
EveryDet = chaqueDet ;
|
||||
---- AllDet = tousDet ;
|
||||
AllDet = toutDet ;
|
||||
AllsDet = tousDet ;
|
||||
WhichDet = quelDet ;
|
||||
MostDet = plupartDet ;
|
||||
WhichsDet = mkDeterminerNum plural "quels" "quelles" ;
|
||||
MostsDet = plupartDet ;
|
||||
MostDet = mkDeterminer1 singular (["la plupart"] ++ elisDe) ; --- de
|
||||
SomeDet = mkDeterminer1 singular "quelque" ;
|
||||
SomesDet = mkDeterminerNum plural "quelques" "quelques" ;
|
||||
NoDet = mkDeterminer singular "aucun" "aucune" ; --- ne
|
||||
NosDet = mkDeterminerNum plural ("aucun" ++ "des") ("aucune" ++ "des") ; --- ne
|
||||
AnyDet = mkDeterminer1 singular "quelque" ; ---
|
||||
AnysDet = mkDeterminerNum plural "quelques" "quelques" ; ---
|
||||
ManyDet = mkDeterminer1 plural "plusieurs" ;
|
||||
MuchDet = mkDeterminer1 singular ("beaucoup" ++ elisDe) ; --- de
|
||||
ThisDet = mkDeterminer singular (pre {"ce" ; "cet" / voyelle}) "cette" ; --- ci
|
||||
ThatDet = mkDeterminer singular (pre {"ce" ; "cet" / voyelle}) "cette" ; --- là
|
||||
TheseDet = mkDeterminerNum plural "ces" "ces" ; --- ci
|
||||
ThoseDet = mkDeterminerNum plural "ces" "ces" ; --- là
|
||||
|
||||
HowIAdv = commentAdv ;
|
||||
WhenIAdv = quandAdv ;
|
||||
@@ -38,4 +61,50 @@ lin
|
||||
|
||||
PhrYes = ouiPhr ;
|
||||
PhrNo = nonPhr ; --- and also Si!
|
||||
|
||||
VeryAdv = ss "très" ;
|
||||
TooAdv = ss "trop" ;
|
||||
OtherwiseAdv = ss "autrement" ;
|
||||
ThereforeAdv = ss "donc" ;
|
||||
|
||||
EverybodyNP = mkNameNounPhrase ["tout le monde"] Masc ;
|
||||
SomebodyNP = mkNameNounPhrase ["quelqu'un"] Masc ;
|
||||
NobodyNP = mkNameNounPhrase ["personne"] Masc ; --- ne
|
||||
EverythingNP = mkNameNounPhrase ["tout"] Masc ;
|
||||
SomethingNP = mkNameNounPhrase ["quelque chose"] Masc ;
|
||||
NothingNP = mkNameNounPhrase ["rien"] Masc ; --- ne
|
||||
|
||||
CanVV = mkVerbVerbDir (verbPres (conj3pouvoir "pouvoir")) ;
|
||||
CanKnowVV = mkVerbVerbDir (verbPres (conj3savoir "savoir")) ;
|
||||
MustVV = mkVerbVerbDir (verbPres (conj3devoir "devoir")) ;
|
||||
WantVV = mkVerbVerbDir (verbPres (conj3vouloir "vouloir")) ;
|
||||
|
||||
EverywhereNP = ss "partout" ;
|
||||
SomewhereNP = ss ["quelque part"] ; --- ne - pas
|
||||
NowhereNP = ss ["nulle part"] ;
|
||||
|
||||
AlthoughSubj = ss ("bien" ++ elisQue) ** {m = Con} ;
|
||||
|
||||
AlmostAdv = ss "presque" ;
|
||||
QuiteAdv = ss "assez" ;
|
||||
|
||||
InPrep = justPrep "dans" ;
|
||||
OnPrep = justPrep "sur" ;
|
||||
ToPrep = justCase dative ; ---
|
||||
ThroughPrep = justPrep "par" ;
|
||||
AbovePrep = {s = ["au dessus"] ; c = genitive} ;
|
||||
UnderPrep = justPrep "sous" ;
|
||||
InFrontPrep = justPrep "devant" ;
|
||||
BehindPrep = justPrep "derrière" ;
|
||||
BetweenPrep = justPrep "entre" ;
|
||||
FromPrep = justCase genitive ; ---
|
||||
BeforePrep = justPrep "avant" ;
|
||||
DuringPrep = justPrep "pendant" ;
|
||||
AfterPrep = justPrep "après" ;
|
||||
WithPrep = justPrep "avec" ;
|
||||
WithoutPrep = justPrep "sans" ;
|
||||
ByMeansPrep = justPrep "par" ;
|
||||
PartPrep = justCase genitive ; ---
|
||||
AgentPrep = justPrep "par" ;
|
||||
|
||||
}
|
||||
|
||||
@@ -9,8 +9,27 @@ oper
|
||||
jean.g
|
||||
Sg ;
|
||||
|
||||
partitiveNounPhrase = \n,vin ->
|
||||
normalNounPhrase
|
||||
(table {
|
||||
Gen => elisDe ++ vin.s ! n ;
|
||||
c => prepCase c ++ artDef vin.g n Gen ++ vin.s ! n
|
||||
}
|
||||
)
|
||||
vin.g
|
||||
n ;
|
||||
|
||||
chaqueDet = mkDeterminer1 Sg "chaque" ;
|
||||
tousDet = mkDeterminer Pl ["tous les"] ["toutes les"] ;
|
||||
|
||||
toutDet : Determiner =
|
||||
{s = \\g => genForms "tout" "toute" ! g ++ artDef g Sg nominative ;
|
||||
n = Pl
|
||||
} ;
|
||||
tousDet : Numeral -> Determiner = \nu ->
|
||||
{s = \\g => genForms "tous" "toutes" ! g ++ artDef g Pl nominative ++ nu.s ! g ;
|
||||
n = Pl
|
||||
} ;
|
||||
|
||||
plupartDet = mkDeterminer1 Pl ["la plupart des"] ;
|
||||
unDet = mkDeterminer Sg "un" "une" ;
|
||||
plDet = mkDeterminer1 Pl "des" ; ---
|
||||
@@ -21,6 +40,17 @@ oper
|
||||
npGenPoss = \n,ton,mec ->
|
||||
\\c => prepCase c ++ ton.s ! Poss n mec.g ++ mec.s ! n ;
|
||||
|
||||
npGenPossNum = \nu,ton,mec ->
|
||||
\\c => prepCase c ++ ton.s ! Poss Pl mec.g ++ nu.s ! mec.g ++ mec.s ! Pl ;
|
||||
|
||||
existNounPhrase = \duvin -> {
|
||||
s = \\m =>
|
||||
case m of {
|
||||
Ind => ["il y a"] ;
|
||||
Con => ["il y ait"]
|
||||
} ++ duvin.s ! stressed accusative --- il y en a ; have to define "y"
|
||||
} ;
|
||||
|
||||
mkAdjReg : Str -> Bool -> Adjective = \adj,p ->
|
||||
mkAdjective (adjGrand adj) p ;
|
||||
|
||||
@@ -130,6 +160,15 @@ oper
|
||||
}
|
||||
} ;
|
||||
|
||||
existNounPhraseQuest = \duvin -> {
|
||||
s = \\m =>
|
||||
case m of {
|
||||
DirQ => optStr (estCeQue Acc) ++ ["il y a"] ;
|
||||
IndirQ => elisSi ++ ["il y a"]
|
||||
}
|
||||
++ duvin.s ! stressed accusative --- il y en a ; have to define "y"
|
||||
} ;
|
||||
|
||||
intVerbPhrase = \qui, dort ->
|
||||
{s = table {
|
||||
DirQ => qui.s ! Nom ++ optStr (estCeQue Nom) ++
|
||||
@@ -283,8 +322,8 @@ oper
|
||||
etetConj = sd2 "et" "et" ** {n = Pl} ;
|
||||
ououConj = sd2 "ou" "ou" ** {n = Sg} ;
|
||||
niniConj = sd2 "ni" "ni" ** {n = Sg} ; --- requires ne !
|
||||
siSubj = ss elisSi ;
|
||||
quandSubj = ss "quand" ;
|
||||
siSubj = ss elisSi ** {m = Ind} ;
|
||||
quandSubj = ss "quand" ** {m = Ind} ;
|
||||
|
||||
ouiPhr = ss ["Oui ."] ;
|
||||
nonPhr = ss ["Non ."] ; --- and also Si!
|
||||
|
||||
@@ -6,25 +6,37 @@ flags startcat=Phr ; lexer=text ; parser=chart ; unlexer=text ;
|
||||
|
||||
lin
|
||||
Big = mkAdjDegrReg "grand" adjPre ;
|
||||
American = mkAdjective (adjGrand "américain") adjPost ;
|
||||
Finnish = mkAdjective (adjGrand "finlandais") adjPost ;
|
||||
Married = mkAdjCompl (adjJoli "marié") adjPost (complementCas dative) ;
|
||||
Small = mkAdjDegrReg "petit" adjPre ;
|
||||
Old = mkAdjDegrLong (mkAdj "vieux" "vieux" "vieille") adjPre ;
|
||||
Old = mkAdjDegrLong (mkAdj "vieux" "vieux" "vieille" "vieillement") adjPre ;
|
||||
Young = mkAdjDegrLong (adjJeune "jeune") adjPre ;
|
||||
Happy = mkAdjDegrLong (adjHeureux "heureux") adjPre ;
|
||||
Wine = mkCNomReg "vin" Masc ;
|
||||
Bar = mkCNomReg "bar" Masc ;
|
||||
Man = mkCNomReg "homme" Masc ;
|
||||
Woman = mkCNomReg "femme" Fem ;
|
||||
Car = mkCNomReg "voiture" Fem ;
|
||||
Light = mkCNomReg "lumière" Fem ;
|
||||
House = mkCNomReg "maison" Fem ;
|
||||
Bottle = mkCNomReg "bouteille" Fem ;
|
||||
Walk = verbPres (conj1aimer "marcher") ;
|
||||
Run = verbPres (conj3courir "courir") ;
|
||||
Send = mkTransVerbDir (verbPres (conj1envoyer "envoyer")) ;
|
||||
Love = mkTransVerbDir (verbPres (conj1aimer "aimer")) ;
|
||||
Drink = mkTransVerbDir (verbPres (conj3boire "boire")) ;
|
||||
Wait = mkTransVerbDir (verbPres (conj3rendre "attendre")) ;
|
||||
Give = mkDitransVerb (verbPres (conj1aimer "donner")) [] dative [] accusative ;
|
||||
Prefer = mkDitransVerb (verbPres (conj1aimer "preférer")) [] accusative [] dative ;
|
||||
Say = verbSent (verbPres (conj3dire "dire")) Ind Ind ;
|
||||
Prove = verbSent (verbPres (conj1aimer "démontrer")) Ind Ind ;
|
||||
SwitchOn = mkTransVerbDir (verbPres (conj1aimer "allumer")) ;
|
||||
SwitchOff = mkTransVerbDir (verbPres (conj3peindre "éteindre")) ;
|
||||
Mother = funDe (mkCNomReg "mère" Fem) ;
|
||||
Uncle = funDe (mkCNomReg "oncle" Masc) ;
|
||||
Connection = mkCNomReg "connection" Fem **
|
||||
{s2 = [] ; c = genitive ; s3 = [] ; c3 = dative} ;
|
||||
|
||||
Well = ss "bien" ;
|
||||
Always = ss "toujours" ;
|
||||
|
||||
@@ -24,6 +24,7 @@ oper
|
||||
accusative = Acc ;
|
||||
genitive = Gen ;
|
||||
dative = Dat ;
|
||||
prepositional = accusative ;
|
||||
|
||||
stressed = Ton ;
|
||||
unstressed = Aton ;
|
||||
@@ -91,12 +92,12 @@ oper
|
||||
adjCompLong : Adj -> AdjComp = \cher ->
|
||||
mkAdjComp
|
||||
cher.s
|
||||
(\\g,n => "plus" ++ cher.s ! g ! n) ;
|
||||
(\\a => "plus" ++ cher.s ! a) ;
|
||||
|
||||
-- Comparative adjectives are only sometimes formed morphologically
|
||||
-- (actually: by different morphemes).
|
||||
|
||||
mkAdjComp : (_,_ : Gender => Number => Str) -> AdjComp =
|
||||
mkAdjComp : (_,_ : AForm => Str) -> AdjComp =
|
||||
\bon, meilleur ->
|
||||
{s = table {Pos => bon ; _ => meilleur}} ;
|
||||
|
||||
@@ -137,7 +138,8 @@ oper
|
||||
VInfin => aller ! Inf ;
|
||||
VFin Ind n p => aller ! Indic Pres n p ;
|
||||
VFin Sub n p => aller ! Subjo SPres n p ;
|
||||
VImper np => aller ! Imper np
|
||||
VImper np => aller ! Imper np ;
|
||||
VPart g n => aller ! Part (PPasse g n)
|
||||
}} ;
|
||||
|
||||
-- The full conjunction is a table on $VForm$:
|
||||
|
||||
Reference in New Issue
Block a user