diff options
| author | aarne <unknown> | 2003-11-14 11:40:48 +0000 |
|---|---|---|
| committer | aarne <unknown> | 2003-11-14 11:40:48 +0000 |
| commit | 13de08f794424515edaf0c0087f32e1dfd7b60f9 (patch) | |
| tree | 236bf39c124fca55b27ca5b1d3662c0729858e04 /grammars/resource/french/ResFra.gf | |
| parent | 309716563c7ed60d06e3bcb3e15e02b7461399f4 (diff) | |
French working, but only in the old size.
Diffstat (limited to 'grammars/resource/french/ResFra.gf')
| -rw-r--r-- | grammars/resource/french/ResFra.gf | 205 |
1 files changed, 205 insertions, 0 deletions
diff --git a/grammars/resource/french/ResFra.gf b/grammars/resource/french/ResFra.gf new file mode 100644 index 000000000..549a12f55 --- /dev/null +++ b/grammars/resource/french/ResFra.gf @@ -0,0 +1,205 @@ +--# -path=.:../abstract:../../prelude + +--1 The Top-Level French Resource Grammar +-- +-- Aarne Ranta 2002 -- 2003 +-- +-- This is the French concrete syntax of the multilingual resource +-- grammar. Most of the work is done in the file +-- $syntax.Romance.gf$, some in $syntax.Fra.gf$. +-- However, for the purpose of documentation, we make here explicit the +-- linearization types of each category, so that their structures and +-- dependencies can be seen. +-- Another substantial part are the linearization rules of some +-- structural words. +-- +-- The users of the resource grammar should not look at this file for the +-- linearization rules, which are in fact hidden in the document version. +-- They should use $resource.Abs.gf$ to access the syntactic rules. +-- This file can be consulted in those, hopefully rare, occasions in which +-- one has to know how the syntactic categories are +-- implemented. Most parameter types are defined in $types.Romance.gf$, some in +-- $types.Fra.gf$. + +concrete ResFra of ResAbs = open Prelude, TypesFra, MorphoFra, SyntaxFra in { + +flags + startcat=Phr ; + parser=chart ; + +lincat + N = CommNoun ; + -- = {s : Number => Str ; g : Gender} ; + CN = CommNoun ; + NP = {s : NPForm => Str ; g : PronGen ; + n : Number ; p : Person ; c : ClitType} ; + PN = {s : Str ; g : Gender} ; + Det = {s : Gender => Str ; n : Number} ; + Adj1 = Adjective ; + -- = {s : Gender => Number => Str ; p : Bool} ; + Adj2 = Adjective ** {s2 : Preposition ; c : Case} ; + AdjDeg = {s : Degree => Gender => Number => Str ; p : Bool} ; + AP = Adjective ; + Fun = CommNoun ** {s2 : Preposition ; c : Case} ; + + V = Verb ; + -- = {s : VF => Str} ; + VP = {s : Gender => VF => Str} ; + TV = Verb ** {s2 : Preposition ; c : Case} ; + VS = Verb ** {mp,mn : Mode} ; + AdV = {s : Str} ; + + S = Sentence ; + -- = {s : Mode => Str} ; + Slash = Sentence ** {s2 : Preposition ; c : Case} ; + + RP = {s : RelForm => Str ; g : RelGen} ; + RC = {s : Mode => Gender => Number => Str} ; + + IP = {s : Case => Str ; g : Gender ; n : Number} ; + Qu = {s : QuestForm => Str} ; + Imp = {s : Gender => Number => Str} ; + Phr = {s : Str} ; + + Conj = {s : Str ; n : Number} ; + ConjD = {s1,s2 : Str ; n : Number} ; + + ListS = {s1,s2 : Mode => Str} ; + ListAP = {s1,s2 : Gender => Number => Str ; p : Bool} ; + ListNP = {s1,s2 : Case => Str ; g : PronGen ; n : Number ; p : Person} ; + +--. + +lin + UseN = noun2CommNounPhrase ; + ModAdj = modCommNounPhrase ; + ModGenOne = npGenDet singular ; + ModGenMany = npGenDet plural ; + UsePN = nameNounPhrase ; + UseFun = funAsCommNounPhrase ; -- [SyntaxFra.noun2CommNounPhrase] + AppFun = appFunComm ; + AdjP1 = adj2adjPhrase ; + ComplAdj = complAdj ; + PositAdjP = positAdjPhrase ; + ComparAdjP = comparAdjPhrase ; + SuperlNP = superlNounPhrase ; + + DetNP = detNounPhrase ; + IndefOneNP = indefNounPhrase singular ; + IndefManyNP = indefNounPhrase plural ; + DefOneNP = defNounPhrase singular ; + DefManyNP = defNounPhrase plural ; + + PredVP = predVerbPhrase ; + PosV = predVerb True ; + NegV = predVerb False ; + PosA = predAdjective True ; + NegA = predAdjective False ; + PosCN = predCommNoun True ; + NegCN = predCommNoun False ; + PosTV = complTransVerb True ; + NegTV = complTransVerb False ; + PosNP = predNounPhrase True ; + NegNP = predNounPhrase False ; + PosVS = complSentVerb True ; + NegVS = complSentVerb False ; + + + AdvVP = adVerbPhrase ; + LocNP = locativeNounPhrase ; + AdvCN = advCommNounPhrase ; + + PosSlashTV = slashTransVerb True ; + NegSlashTV = slashTransVerb False ; + + IdRP = identRelPron ; + FunRP = funRelPron ; + RelVP = relVerbPhrase ; + RelSlash = relSlash ; + ModRC = modRelClause ; + RelSuch = relSuch ; + + WhoOne = intPronWho singular ; + WhoMany = intPronWho plural ; + WhatOne = intPronWhat singular ; + WhatMany = intPronWhat plural ; + FunIP = funIntPron ; + NounIPOne = nounIntPron singular ; + NounIPMany = nounIntPron plural ; + + QuestVP = questVerbPhrase ; + IntVP = intVerbPhrase ; + IntSlash = intSlash ; + QuestAdv = questAdverbial ; + + ImperVP = imperVerbPhrase ; + + IndicPhrase = indicUtt ; + QuestPhrase = interrogUtt ; + ImperOne = imperUtterance singular ; + ImperMany = imperUtterance plural ; + +lin + TwoS = twoSentence ; + ConsS = consSentence ; + ConjS = conjunctSentence ; + ConjDS = conjunctDistrSentence ; -- [Coordination.conjunctDistrTable] + + TwoAP = twoAdjPhrase ; + ConsAP = consAdjPhrase ; + ConjAP = conjunctAdjPhrase ; + ConjDAP = conjunctDistrAdjPhrase ; + + TwoNP = twoNounPhrase ; + ConsNP = consNounPhrase ; + ConjNP = conjunctNounPhrase ; + ConjDNP = conjunctDistrNounPhrase ; + + SubjS = subjunctSentence ; -- stack + SubjImper = subjunctImperative ; + SubjQu = subjunctQuestion ; + + PhrNP = useNounPhrase ; + PhrOneCN = useCommonNounPhrase singular ; + PhrManyCN = useCommonNounPhrase plural ; + PhrIP ip = ip ; + PhrIAdv ia = ia ; + + + INP = pronNounPhrase pronJe ; + ThouNP = pronNounPhrase pronTu ; + HeNP = pronNounPhrase pronIl ; + SheNP = pronNounPhrase pronElle ; + WeNP = pronNounPhrase pronNous ; + YeNP = pronNounPhrase pronVous ; + YouNP = pronNounPhrase pronVous ; + TheyNP = pronNounPhrase pronIls ; + +-- Here is a point where the API is really inadequate for French, +-- which distinguishes between masculine and feminine "they". +-- The following solution is not attractive. + +--- TheyNP = pronNounPhrase (variants {pronIls ; pronElles}) ; + + EveryDet = chaqueDet ; + AllDet = tousDet ; --- expected constr head instead of [SyntaxFra.mkDeterminer] + WhichDet = quelDet ; + MostDet = plupartDet ; + + HowIAdv = ss "comment" ; + WhenIAdv = ss "quand" ; + WhereIAdv = ss "oł" ; + WhyIAdv = ss "pourquoi" ; + + AndConj = ss "et" ** {n = Pl} ; + OrConj = ss "ou" ** {n = Sg} ; + BothAnd = sd2 "et" "et" ** {n = Pl} ; + EitherOr = sd2 "ou" "ou" ** {n = Sg} ; + NeitherNor = sd2 "ni" "ni" ** {n = Sg} ; --- requires ne ! + IfSubj = ss siSubj ; + WhenSubj = ss "quand" ; + + PhrYes = ss "Oui." ; + PhrNo = ss "Non." ; --- and also Si! + +} |
