1
0
forked from GitHub/gf-core

gerund and participle translations for Fre,Ita,Spa and Ger. Some a bit questionable.

This commit is contained in:
aarne
2014-09-26 13:26:01 +00:00
parent 56c50bfb39
commit 38ae2430b5
14 changed files with 171 additions and 85 deletions

View File

@@ -6041,7 +6041,7 @@ VP (Imp Sg P1) => variants {}
VImper PlP1 => amar.s ! VP (Imp Pl P1) ; VImper PlP1 => amar.s ! VP (Imp Pl P1) ;
VImper PlP2 => amar.s ! VP (Imp Pl P2) ; VImper PlP2 => amar.s ! VP (Imp Pl P2) ;
VPart g n => amar.s ! VP (Pass n g) ; VPart g n => amar.s ! VP (Pass n g) ;
VGer => amar.s ! VI Ger VGer | VPresPart => amar.s ! VI Ger
} }
} ; } ;

View File

@@ -244,7 +244,7 @@ oper
VFin VCondit n p => aller ! Condi n p ; --# notpresent VFin VCondit n p => aller ! Condi n p ; --# notpresent
VImper np => aller ! Imper np ; VImper np => aller ! Imper np ;
VPart g n => aller ! Part (PPasse g n) ; VPart g n => aller ! Part (PPasse g n) ;
VGer => aller ! Part PPres -- *en* allant VGer | VPresPart => aller ! Part PPres -- *en* allant
} ; } ;
Verbe : Type = VForm => Str ; Verbe : Type = VForm => Str ;

View File

@@ -6502,7 +6502,8 @@ oper venire_110 : Str -> Verbo = \venire ->
VFin VCondit n p => amare.s ! Cond n p ; --# notpresent VFin VCondit n p => amare.s ! Cond n p ; --# notpresent
VImper np => amare.s ! Imper np ; VImper np => amare.s ! Imper np ;
VPart g n => amare.s ! Part PassP g n ; VPart g n => amare.s ! Part PassP g n ;
VGer => amare.s ! Ger VGer => amare.s ! Ger ;
VPresPart => Predef.tk 2 (amare.s ! Ger) + "te"
} }
} ; } ;

View File

@@ -87,6 +87,7 @@ param
| VImper NumPersI | VImper NumPersI
| VPart Gender Number | VPart Gender Number
| VGer | VGer
| VPresPart --- = VGer except in Italian
; ;
TMood = TMood =

View File

@@ -276,18 +276,26 @@ oper
--- have a "-" with possibly a special verb form with "t": --- have a "-" with possibly a special verb form with "t":
--- "comment fera-t-il" vs. "comment fera Pierre" --- "comment fera-t-il" vs. "comment fera Pierre"
infVP : VP -> Agr -> Str = \vp,agr -> infVP : VP -> Agr -> Str = \vp ->
let let
iform = orB vp.clit3.hasClit (isVRefl vp.s.vtyp) ; iform = orB vp.clit3.hasClit (isVRefl vp.s.vtyp) ;
inf = vp.s.s ! VInfin iform ; vf = VInfin iform ;
in
nominalVP vf iform vp ;
gerVP : VP -> Agr -> Str = nominalVP VGer True ;
nominalVP : VF -> Bool -> VP -> Agr -> Str = \vf,iform,vp,agr ->
let
inf = vp.s.s ! vf ;
neg = vp.neg ! RPos ; --- Neg not in API neg = vp.neg ! RPos ; --- Neg not in API
obj = neg.p2 ++ vp.s.p ++ vp.comp ! agr ++ vp.ext ! RPos ; ---- pol obj = vp.s.p ++ vp.comp ! agr ++ vp.ext ! RPos ; ---- pol
refl = case isVRefl vp.s.vtyp of { refl = case isVRefl vp.s.vtyp of {
True => reflPron agr.n agr.p Acc ; ---- case ? True => reflPron agr.n agr.p Acc ; ---- case ?
_ => [] _ => []
} ; } ;
in in
neg.p1 ++ clitInf iform (refl ++ vp.clit1 ++ vp.clit2 ++ vp.clit3.s) inf ++ obj ; neg.p1 ++ neg.p2 ++ clitInf iform (refl ++ vp.clit1 ++ vp.clit2 ++ vp.clit3.s) inf ++ obj ; -- ne pas dormant
} }

View File

@@ -6471,7 +6471,7 @@ oper llover_89 : Str -> Verbum = \llover ->
VImper PlP1 => amar.s ! VPB (Imper Pl P1) ; VImper PlP1 => amar.s ! VPB (Imper Pl P1) ;
VImper PlP2 => amar.s ! VPB (Imper Pl P2) ; VImper PlP2 => amar.s ! VPB (Imper Pl P2) ;
VPart g n => amar.s ! VPB (Pass n g) ; VPart g n => amar.s ! VPB (Pass n g) ;
VGer => amar.s ! VI Ger VGer | VPresPart => amar.s ! VI Ger
} }
} ; } ;

View File

@@ -59,29 +59,43 @@ lin
} ; } ;
{- GerundNP vp =
GerundN v = { let a = agrP3 Masc Sg ---- agr
s = \\n,c => v.s ! VPresPart ; in
g = Neutr heavyNP {s = \\c => prepCase c ++ infVP vp a ; a = a} ; -- parlare tedesco non è facile
} ;
GerundAP v = {
s = \\agr => v.s ! VPresPart ;
isPre = True
} ;
-- }
PastPartAP v = { GerundAdv vp =
let a = agrP3 Masc Sg
in
{s = gerVP vp a} | {s = "en" ++ gerVP vp a} ;
WithoutVP vp = SyntaxFre.mkAdv without_Prep (lin NP (GerundNP (lin VP vp))) ; -- senza dormire
InOrderToVP vp = SyntaxFre.mkAdv for_Prep (lin NP (GerundNP (lin VP vp))) ; -- per dormire
ByVP vp = GerundAdv (lin VP vp) ;
PresPartAP vp = {
s = table { s = table {
AF g n => v.s ! VPart g n ; AF g n => nominalVP VPresPart True vp (agrP3 g n) ;
_ => v.s ! VPart Masc Sg ---- the adverb form _ => nominalVP VPresPart True vp (agrP3 Masc Sg) ---- the adverb form
} ; } ;
isPre = True isPre = False
} ; } ;
--{- PastPartAP vp = {
OrdCompar a = {s = \\c => a.s ! AAdj Compar c } ; s = table {
-} AF g n => nominalVP (VPart g n) True vp (agrP3 g n) ;
_ => nominalVP (VPart Masc Sg) True vp (agrP3 Masc Sg) ---- the adverb form
} ;
isPre = False
} ;
PastPartAgentAP vp np =
let part = PastPartAP (lin VP vp)
in part ** {
s = \\a => part.s ! a ++ (SyntaxFre.mkAdv (mkPrep "par") (lin NP np)).s
} ;
PositAdVAdj a = {s = a.s ! Posit ! AA} ; PositAdVAdj a = {s = a.s ! Posit ! AA} ;

View File

@@ -78,22 +78,46 @@ lin
isPre = True isPre = True
} ; } ;
GerundN v = { -- parsing GerundNP vp = { -- infinitive: Bier zu trinken
s = \\n,c => v.s ! VInf False ; --- formalisieren, not formalisierung s = \\c => (prepC c).s ++ useInfVP False vp ;
g = Neutr a = Ag Neutr Sg P3 ;
} ; isPron = False
} ;
GerundAdv vp = { -- Bier trinkend
s = (vp.nn ! agrP3 Sg).p1 ++ (vp.nn ! agrP3 Sg).p2 ++ vp.a2 ++ vp.inf ++ vp.ext ++ vp.infExt ++ vp.s.s ! VPresPart APred
} ;
WithoutVP vp = { -- ohne Bier zu trinken
s = "ohne" ++ useInfVP False vp
} ;
InOrderToVP vp = { -- um Bier zu trinken
s = "um" ++ useInfVP False vp
} ;
ByVP vp = { ---- durch Bier zu drinken
s = "durch" ++ useInfVP False vp ----
} ;
PresPartAP vp = {
s = \\af => (vp.nn ! agrP3 Sg).p1 ++ (vp.nn ! agrP3 Sg).p2 ++ vp.a2 ++ vp.inf ++ vp.ext ++ vp.infExt ++ vp.s.s ! VPresPart af ;
isPre = True
} ;
PastPartAP vp = {
s = \\af => (vp.nn ! agrP3 Sg).p1 ++ (vp.nn ! agrP3 Sg).p2 ++ vp.a2 ++ vp.inf ++ vp.ext ++ vp.infExt ++ vp.s.s ! VPastPart af ;
isPre = True
} ;
PastPartAgentAP vp np =
let agent = (SyntaxGer.mkAdv von_Prep (lin NP np)).s
in {
s = \\af => (vp.nn ! agrP3 Sg).p1 ++ (vp.nn ! agrP3 Sg).p2 ++ vp.a2 ++ agent ++ vp.inf ++ vp.ext ++ vp.infExt ++ vp.s.s ! VPastPart af ;
isPre = True
} ;
{- {-
GerundAP v = { -- beckoning
s = \\agr => v.s ! VPresPart ;
isPre = True
} ;
PastPartAP v = { -- broken
s = \\agr => v.s ! VPPart ;
isPre = True
} ;
OrdCompar a = {s = \\c => a.s ! AAdj Compar c } ; -- higher OrdCompar a = {s = \\c => a.s ! AAdj Compar c } ; -- higher
PositAdVAdj a = {s = a.s ! AAdv} ; -- really PositAdVAdj a = {s = a.s ! AAdv} ; -- really

View File

@@ -58,31 +58,43 @@ lin
isPre = False isPre = False
} ; } ;
-- infVP : VP -> Agr -> Str = \vp,agr -> GerundNP vp =
let a = agrP3 Masc Sg ---- agr
in
heavyNP {s = \\c => prepCase c ++ infVP vp a ; a = a} ; -- parlare tedesco non è facile
{- GerundAdv vp =
GerundN v = { let a = agrP3 Masc Sg
s = \\n,c => v.s ! VPresPart ; in
g = Neutr {s = gerVP vp a} ; -- dormendo
} ;
GerundAP v = {
s = \\agr => v.s ! VPresPart ;
isPre = True
} ;
-- }
PastPartAP v = { WithoutVP vp = SyntaxIta.mkAdv without_Prep (lin NP (GerundNP (lin VP vp))) ; -- senza dormire
InOrderToVP vp = SyntaxIta.mkAdv for_Prep (lin NP (GerundNP (lin VP vp))) ; -- per dormire
ByVP vp = GerundAdv (lin VP vp) ;
PresPartAP vp = {
s = table { s = table {
AF g n => v.s ! VPart g n ; AF g n => nominalVP VPresPart True vp (agrP3 g n) ;
_ => v.s ! VPart Masc Sg ---- the adverb form _ => nominalVP VPresPart True vp (agrP3 Masc Sg) ---- the adverb form
} ; } ;
isPre = True isPre = False
} ; } ;
--{- PastPartAP vp = {
OrdCompar a = {s = \\c => a.s ! AAdj Compar c } ; s = table {
-} AF g n => nominalVP (VPart g n) True vp (agrP3 g n) ;
_ => nominalVP (VPart Masc Sg) True vp (agrP3 Masc Sg) ---- the adverb form
} ;
isPre = False
} ;
PastPartAgentAP vp np =
let part = PastPartAP (lin VP vp)
in part ** {
s = \\a => part.s ! a ++ (SyntaxIta.mkAdv da_Prep (lin NP np)).s
} ;
PositAdVAdj a = {s = a.s ! Posit ! AA} ; PositAdVAdj a = {s = a.s ! Posit ! AA} ;

View File

@@ -58,29 +58,44 @@ lin
isPre = False isPre = False
} ; } ;
{-
GerundN v = {
s = \\n,c => v.s ! VPresPart ;
g = Neutr
} ;
GerundAP v = {
s = \\agr => v.s ! VPresPart ;
isPre = True
} ;
-- }
PastPartAP v = { GerundNP vp =
let a = agrP3 Masc Sg ---- agr
in
heavyNP {s = \\c => prepCase c ++ infVP vp a ; a = a} ; -- parlare tedesco non è facile
GerundAdv vp =
let a = agrP3 Masc Sg
in
{s = gerVP vp a} ; -- dormendo
WithoutVP vp = SyntaxSpa.mkAdv without_Prep (lin NP (GerundNP (lin VP vp))) ; -- senza dormire
InOrderToVP vp = SyntaxSpa.mkAdv for_Prep (lin NP (GerundNP (lin VP vp))) ; -- per dormire
ByVP vp = GerundAdv (lin VP vp) ;
PresPartAP vp = {
s = table { s = table {
AF g n => v.s ! VPart g n ; AF g n => nominalVP VPresPart True vp (agrP3 g n) ;
_ => v.s ! VPart Masc Sg ---- the adverb form _ => nominalVP VPresPart True vp (agrP3 Masc Sg) ---- the adverb form
} ; } ;
isPre = True isPre = False
} ; } ;
--{- PastPartAP vp = {
OrdCompar a = {s = \\c => a.s ! AAdj Compar c } ; s = table {
-} AF g n => nominalVP (VPart g n) True vp (agrP3 g n) ;
_ => nominalVP (VPart Masc Sg) True vp (agrP3 Masc Sg) ---- the adverb form
} ;
isPre = False
} ;
PastPartAgentAP vp np =
let part = PastPartAP (lin VP vp)
in part ** {
s = \\a => part.s ! a ++ (SyntaxSpa.mkAdv (mkPrep "por") (lin NP np)).s
} ;
PositAdVAdj a = {s = a.s ! Posit ! AA} ; PositAdVAdj a = {s = a.s ! Posit ! AA} ;

View File

@@ -25,7 +25,11 @@ concrete TranslateFre of Translate =
DocumentationFre, DocumentationFre,
ChunkFre, ChunkFre,
ExtensionsFre [CompoundN,AdAdV,UttAdV,ApposNP,MkVPI, MkVPS, PredVPS, PassVPSlash, PassAgentVPSlash, CompoundAP], ExtensionsFre [
CompoundN,AdAdV,UttAdV,ApposNP,MkVPI, MkVPS, PredVPS, PassVPSlash, PassAgentVPSlash, CompoundAP
, PastPartAP, PastPartAgentAP, PresPartAP, GerundNP, GerundAdv
, WithoutVP, InOrderToVP, ByVP
],
DictionaryFre ** DictionaryFre **
open PhonoFre, MorphoFre, ResFre, CommonRomance, ParadigmsFre, SyntaxFre, Prelude, (G = GrammarFre) in { open PhonoFre, MorphoFre, ResFre, CommonRomance, ParadigmsFre, SyntaxFre, Prelude, (G = GrammarFre) in {

View File

@@ -23,8 +23,11 @@ concrete TranslateGer of Translate =
DocumentationGer, DocumentationGer,
ChunkGer, ChunkGer,
ExtensionsGer [CompoundN,AdAdV,UttAdV,ApposNP,MkVPI, MkVPS, PredVPS, PassVPSlash, PassAgentVPSlash, CompoundAP, ExtensionsGer [
DirectComplVS, DirectComplVQ, FocusObjS], CompoundN,AdAdV,UttAdV,ApposNP,MkVPI, MkVPS, PredVPS, PassVPSlash, PassAgentVPSlash, CompoundAP
, PastPartAP, PastPartAgentAP, PresPartAP, GerundNP, GerundAdv
, WithoutVP, InOrderToVP, ByVP
],
DictionaryGer ** DictionaryGer **
open MorphoGer, ResGer, ParadigmsGer, SyntaxGer, CommonScand, (E = ExtraGer), Prelude in { open MorphoGer, ResGer, ParadigmsGer, SyntaxGer, CommonScand, (E = ExtraGer), Prelude in {

View File

@@ -28,7 +28,7 @@ concrete TranslateIta of Translate =
ExtensionsIta [ ExtensionsIta [
CompoundN,AdAdV,UttAdV,ApposNP,MkVPI, MkVPS, PredVPS, PassVPSlash, PassAgentVPSlash, CompoundAP CompoundN,AdAdV,UttAdV,ApposNP,MkVPI, MkVPS, PredVPS, PassVPSlash, PassAgentVPSlash, CompoundAP
, PastPartAP, PastPartAgentAP, PresPartAP, GerundNP, GerundAdv , PastPartAP, PastPartAgentAP, PresPartAP, GerundNP, GerundAdv
---- , WithoutVP, InOrderToVP, ByVP , WithoutVP, InOrderToVP, ByVP
], ],
DictionaryIta ** DictionaryIta **

View File

@@ -25,7 +25,11 @@ concrete TranslateSpa of Translate =
DocumentationSpa, DocumentationSpa,
ChunkSpa, ChunkSpa,
ExtensionsSpa [CompoundN,AdAdV,UttAdV,ApposNP,MkVPI, MkVPS, PredVPS, PassVPSlash, PassAgentVPSlash, CompoundAP], ExtensionsSpa [
CompoundN,AdAdV,UttAdV,ApposNP,MkVPI, MkVPS, PredVPS, PassVPSlash, PassAgentVPSlash, CompoundAP
, PastPartAP, PastPartAgentAP, PresPartAP, GerundNP, GerundAdv
, WithoutVP, InOrderToVP, ByVP
],
DictionarySpa ** DictionarySpa **
open MorphoSpa, ResSpa, ParadigmsSpa, SyntaxSpa, (E = ExtraSpa), (G = GrammarSpa), Prelude in { open MorphoSpa, ResSpa, ParadigmsSpa, SyntaxSpa, (E = ExtraSpa), (G = GrammarSpa), Prelude in {