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 PlP2 => amar.s ! VP (Imp Pl P2) ;
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
VImper np => aller ! Imper np ;
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 ;

View File

@@ -6502,7 +6502,8 @@ oper venire_110 : Str -> Verbo = \venire ->
VFin VCondit n p => amare.s ! Cond n p ; --# notpresent
VImper np => amare.s ! Imper np ;
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
| VPart Gender Number
| VGer
| VPresPart --- = VGer except in Italian
;
TMood =

View File

@@ -276,18 +276,26 @@ oper
--- have a "-" with possibly a special verb form with "t":
--- "comment fera-t-il" vs. "comment fera Pierre"
infVP : VP -> Agr -> Str = \vp,agr ->
infVP : VP -> Agr -> Str = \vp ->
let
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
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 {
True => reflPron agr.n agr.p Acc ; ---- case ?
_ => []
} ;
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 PlP2 => amar.s ! VPB (Imper Pl P2) ;
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
} ;
{-
GerundN v = {
s = \\n,c => v.s ! VPresPart ;
g = Neutr
} ;
GerundAP v = {
s = \\agr => v.s ! VPresPart ;
isPre = True
} ;
-- }
GerundNP vp =
let a = agrP3 Masc Sg ---- agr
in
heavyNP {s = \\c => prepCase c ++ infVP vp a ; a = a} ; -- parlare tedesco non è facile
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 {
AF g n => v.s ! VPart g n ;
_ => v.s ! VPart Masc Sg ---- the adverb form
AF g n => nominalVP VPresPart True vp (agrP3 g n) ;
_ => nominalVP VPresPart True vp (agrP3 Masc Sg) ---- the adverb form
} ;
isPre = True
} ;
isPre = False
} ;
--{-
OrdCompar a = {s = \\c => a.s ! AAdj Compar c } ;
-}
PastPartAP vp = {
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} ;

View File

@@ -78,22 +78,46 @@ lin
isPre = True
} ;
GerundN v = { -- parsing
s = \\n,c => v.s ! VInf False ; --- formalisieren, not formalisierung
g = Neutr
} ;
GerundNP vp = { -- infinitive: Bier zu trinken
s = \\c => (prepC c).s ++ useInfVP False vp ;
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
PositAdVAdj a = {s = a.s ! AAdv} ; -- really

View File

@@ -58,31 +58,43 @@ lin
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
{-
GerundN v = {
s = \\n,c => v.s ! VPresPart ;
g = Neutr
} ;
GerundAP v = {
s = \\agr => v.s ! VPresPart ;
isPre = True
} ;
-- }
GerundAdv vp =
let a = agrP3 Masc Sg
in
{s = gerVP vp a} ; -- dormendo
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 {
AF g n => v.s ! VPart g n ;
_ => v.s ! VPart Masc Sg ---- the adverb form
AF g n => nominalVP VPresPart True vp (agrP3 g n) ;
_ => nominalVP VPresPart True vp (agrP3 Masc Sg) ---- the adverb form
} ;
isPre = True
} ;
isPre = False
} ;
--{-
OrdCompar a = {s = \\c => a.s ! AAdj Compar c } ;
-}
PastPartAP vp = {
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} ;

View File

@@ -58,29 +58,44 @@ lin
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 {
AF g n => v.s ! VPart g n ;
_ => v.s ! VPart Masc Sg ---- the adverb form
AF g n => nominalVP VPresPart True vp (agrP3 g n) ;
_ => nominalVP VPresPart True vp (agrP3 Masc Sg) ---- the adverb form
} ;
isPre = True
} ;
isPre = False
} ;
--{-
OrdCompar a = {s = \\c => a.s ! AAdj Compar c } ;
-}
PastPartAP vp = {
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} ;

View File

@@ -25,7 +25,11 @@ concrete TranslateFre of Translate =
DocumentationFre,
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 **
open PhonoFre, MorphoFre, ResFre, CommonRomance, ParadigmsFre, SyntaxFre, Prelude, (G = GrammarFre) in {

View File

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

View File

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

View File

@@ -25,7 +25,11 @@ concrete TranslateSpa of Translate =
DocumentationSpa,
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 **
open MorphoSpa, ResSpa, ParadigmsSpa, SyntaxSpa, (E = ExtraSpa), (G = GrammarSpa), Prelude in {