Romance languages for the new API.

This commit is contained in:
aarne
2003-12-16 11:38:55 +00:00
parent 054ef0a1ac
commit 06936f0f18
16 changed files with 1253 additions and 89 deletions

View File

@@ -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") ;

View File

@@ -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" ;
}

View File

@@ -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!

View File

@@ -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" ;

View File

@@ -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$: