1
0
forked from GitHub/gf-rgl

Merge pull request #225 from inariksit/spanish

Small fixes and additions in Spanish + Persian
This commit is contained in:
Inari Listenmaa
2019-04-17 15:10:24 +02:00
committed by GitHub
9 changed files with 31 additions and 8 deletions

View File

@@ -138,13 +138,20 @@ abstract Extend = Cat ** {
-- proper structure of "it is AP to VP" -- proper structure of "it is AP to VP"
PredAPVP : AP -> VP -> Cl ; -- it is good to walk PredAPVP : AP -> VP -> Cl ; -- it is good to walk
PredIAdvVP : IAdv -> VP -> QCl ; -- how to walk?
-- to use an AP as CN or NP without CN -- to use an AP as CN or NP without CN
AdjAsCN : AP -> CN ; -- a green one ; en grön (Swe) AdjAsCN : AP -> CN ; -- a green one ; en grön (Swe)
AdjAsNP : AP -> NP ; -- green (is good) AdjAsNP : AP -> NP ; -- green (is good)
-- infinitive complement for IAdv
PredIAdvVP : IAdv -> VP -> QCl ; -- how to walk?
-- alternative SC, with "what"
WhatSSC : S -> SC ; -- what we did (was fun)
-- reflexive noun phrases: a generalization of Verb.ReflVP, which covers just reflexive pronouns -- reflexive noun phrases: a generalization of Verb.ReflVP, which covers just reflexive pronouns
-- This is necessary in languages like Swedish, which have special reflexive possessives. -- This is necessary in languages like Swedish, which have special reflexive possessives.
-- However, it is also needed in application grammars that want to treat "brush one's teeth" as a one-place predicate. -- However, it is also needed in application grammars that want to treat "brush one's teeth" as a one-place predicate.

View File

@@ -64,6 +64,7 @@ lin
FrontComplDirectVQ = variants {} ; -- NP -> VQ -> Utt -> Cl ; -- "where", she asked FrontComplDirectVQ = variants {} ; -- NP -> VQ -> Utt -> Cl ; -- "where", she asked
PredAPVP ap vp = ImpersCl (UseComp (CompAP (SentAP ap (EmbedVP vp)))) ; -- DEFAULT it is (good to walk) PredAPVP ap vp = ImpersCl (UseComp (CompAP (SentAP ap (EmbedVP vp)))) ; -- DEFAULT it is (good to walk)
PredIAdvVP iadv vp = QuestIAdv iadv (GenericCl vp) ; -- DEFAULT how does one walk PredIAdvVP iadv vp = QuestIAdv iadv (GenericCl vp) ; -- DEFAULT how does one walk
WhatSSC = EmbedS ; -- DEFAULT that we did (was fun)
AdjAsCN = variants {} ; -- AP -> CN ; -- a green one ; en grön (Swe) AdjAsCN = variants {} ; -- AP -> CN ; -- a green one ; en grön (Swe)
AdjAsNP = variants {} ; -- AP -> NP ; -- green (is good) AdjAsNP = variants {} ; -- AP -> NP ; -- green (is good)
ReflRNP = variants {} ; -- VPSlash -> RNP -> VP ; -- love my family and myself ReflRNP = variants {} ; -- VPSlash -> RNP -> VP ; -- love my family and myself

View File

@@ -15,7 +15,7 @@ concrete ExtendEng of Extend =
FocusAP, FocusAdV, FocusAdv, FocusObj, GenIP, GenModIP, GenModNP, GenNP, GenRP, FocusAP, FocusAdV, FocusAdv, FocusObj, GenIP, GenModIP, GenModNP, GenNP, GenRP,
GerundAdv, GerundCN, GerundNP, IAdvAdv, ICompAP, InOrderToVP, MkVPS, NominalizeVPSlashNP, GerundAdv, GerundCN, GerundNP, IAdvAdv, ICompAP, InOrderToVP, MkVPS, NominalizeVPSlashNP,
PassAgentVPSlash, PassVPSlash, PastPartAP, PastPartAgentAP, PositAdVAdj, PredVPS, PredVPSVV, PredetRNP, PrepCN, PassAgentVPSlash, PassVPSlash, PastPartAP, PastPartAgentAP, PositAdVAdj, PredVPS, PredVPSVV, PredetRNP, PrepCN,
PredIAdvVP, PresPartAP, PurposeVP, ReflPoss, ReflPron, ReflRNP, SlashBareV2S, SlashV2V, StrandQuestSlash, StrandRelSlash, WhatSSC, PredIAdvVP, PresPartAP, PurposeVP, ReflPoss, ReflPron, ReflRNP, SlashBareV2S, SlashV2V, StrandQuestSlash, StrandRelSlash,
UncontractedNeg, UttAccIP, UttAccNP, UttAdV, UttDatIP, UttDatNP, UttVPShort, WithoutVP, BaseVPS2, ConsVPS2, ConjVPS2, ComplVPS2, MkVPS2 UncontractedNeg, UttAccIP, UttAccNP, UttAdV, UttDatIP, UttDatNP, UttVPShort, WithoutVP, BaseVPS2, ConsVPS2, ConjVPS2, ComplVPS2, MkVPS2
] ]
with with
@@ -193,6 +193,8 @@ concrete ExtendEng of Extend =
PredIAdvVP iadv vp = {s = \\t,a,p,q => iadv.s ++ infVP VVInf vp False Simul CPos (agrP3 Sg)} ; PredIAdvVP iadv vp = {s = \\t,a,p,q => iadv.s ++ infVP VVInf vp False Simul CPos (agrP3 Sg)} ;
WhatSSC s = {s = \\_ => "what" ++ s.s} ;
NominalizeVPSlashNP vpslash np = NominalizeVPSlashNP vpslash np =
let vp : ResEng.VP = insertObjPre (\\_ => vpslash.c2 ++ np.s ! NPAcc) vpslash ; let vp : ResEng.VP = insertObjPre (\\_ => vpslash.c2 ++ np.s ! NPAcc) vpslash ;
a = AgP3Sg Neutr a = AgP3Sg Neutr

View File

@@ -315,7 +315,8 @@ oper
haveVerb : Verb = haveRegV ** {s = table { haveVerb : Verb = haveRegV ** {s = table {
ImpPrefix _ => [] ; ImpPrefix _ => [] ;
VAor Neg agr => imperfectSuffix agr (addN "دار") ; VAor Neg agr => imperfectSuffix agr (addN "دار") ;
VSubj pol agr => haveRegV.s ! VPerf pol agr ;
vf => haveRegV.s ! vf } vf => haveRegV.s ! vf }
} where { haveRegV = mkVerb "داشتن" "دار" } ; } where { haveRegV = mkVerb "داشتن" "دار" } ;

View File

@@ -185,7 +185,7 @@ oper
mkPrep = overload { mkPrep = overload {
mkPrep : Str -> Prep -- Takes a string, returns a preposition. mkPrep : Str -> Prep -- Takes a string, returns a preposition.
= \str -> lin Prep {s = str ; ra = [] ; mod = Bare} ; = \str -> lin Prep (prepOrRa str) ;
mkPrep : Str -> Mod -> Prep -- Takes a string and Mod (so far only option is ezafe), returns a preposition. mkPrep : Str -> Mod -> Prep -- Takes a string and Mod (so far only option is ezafe), returns a preposition.
= \str,m -> lin Prep {s = str ; ra = [] ; mod=m} = \str,m -> lin Prep {s = str ; ra = [] ; mod=m}
} ; } ;

View File

@@ -223,7 +223,15 @@ incomplete concrete ExtendRomanceFunctor of Extend =
lin lin
DetNPMasc = DetNP ; DetNPMasc = DetNP ;
DetNPFem = DetNP ; DetNPFem det =
let
g = Fem ;
n = det.n
in heavyNPpol det.isNeg {
s = det.sp ! g ;
a = agrP3 g n ;
hasClit = False
} ;
lin lin
iFem_Pron = i_Pron ; -- DEFAULT I (masc) iFem_Pron = i_Pron ; -- DEFAULT I (masc)

View File

@@ -158,8 +158,8 @@ instance DiffSpa of DiffRomance - [iAdvQuestionInv,otherInv,partAgr,stare_V,vpAg
relPron : Bool => AAgr => Case => Str = \\b,a,c => relPron : Bool => AAgr => Case => Str = \\b,a,c =>
case c of { case c of {
Nom | Acc => "que" ; Nom | Acc => "que" ;
CPrep P_a => "cuyo" ; CPrep P_de => "cuyo" ;
_ => prepCase c ++ "cuyo" _ => prepCase c ++ "que"
} ; } ;
pronSuch : AAgr => Str = aagrForms "tál" "tál" "tales" "tales" ; pronSuch : AAgr => Str = aagrForms "tál" "tál" "tales" "tales" ;

View File

@@ -61,6 +61,8 @@ concrete ExtendSpa of Extend = CatSpa ** ExtendRomanceFunctor -
s = "qué tan" ++ adv.s s = "qué tan" ++ adv.s
} ; } ;
WhatSSC s = {s = \\_ => "lo que" ++ s.s ! Indic} ; --- mood
ExistsNP np = ExistsNP np =
mkClause [] True False np.a mkClause [] True False np.a
(insertComplement (\\_ => (np.s ! Nom).ton) (insertComplement (\\_ => (np.s ! Nom).ton)

View File

@@ -8,7 +8,7 @@ concrete ExtendSwe of Extend = CatSwe **
PassVPSlash, PassAgentVPSlash, UttVPShort, ByVP, InOrderToVP, PassVPSlash, PassAgentVPSlash, UttVPShort, ByVP, InOrderToVP,
MkVPI, BaseVPI, ConsVPI, ConjVPI, ComplVPIVV, MkVPI, BaseVPI, ConsVPI, ConjVPI, ComplVPIVV,
MkVPS, BaseVPS, ConsVPS, ConjVPS, PredVPS, MkVPS, BaseVPS, ConsVPS, ConjVPS, PredVPS,
ICompAP,ProDrop, ICompAP,ProDrop,WhatSSC,
AdAdV, PositAdVAdj, GerundCN, GerundNP, GerundAdv, PresPartAP, PastPartAP, PastPartAgentAP, AdAdV, PositAdVAdj, GerundCN, GerundNP, GerundAdv, PresPartAP, PastPartAP, PastPartAgentAP,
RNP, RNPList, ReflRNP, ReflPron, ReflPoss, PredetRNP, ConjRNP, RNP, RNPList, ReflRNP, ReflPron, ReflPoss, PredetRNP, ConjRNP,
Base_rr_RNP, Base_nr_RNP, Base_rn_RNP, Cons_rr_RNP, Cons_nr_RNP, Base_rr_RNP, Base_nr_RNP, Base_rn_RNP, Cons_rr_RNP, Cons_nr_RNP,
@@ -230,4 +230,6 @@ concrete ExtendSwe of Extend = CatSwe **
} ; } ;
AdvIsNP adv np = PredVP {s = \\_ => adv.s ; a = np.a ; isPron = False} (UseComp (CompNP np)) ; AdvIsNP adv np = PredVP {s = \\_ => adv.s ; a = np.a ; isPron = False} (UseComp (CompNP np)) ;
WhatSSC s = {s = "det" ++ s.s ! Main} ;
} }