mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-10-30 18:43:17 -06:00
extensions by Codex
This commit is contained in:
1 parent
bd11a65fd5
commit
970860d11a
12 files changed
+270
-7
No files matched your search
@@ -49,6 +49,11 @@ concrete AdjectiveIna of Adjective = CatIna ** open ResIna, Prelude in {
|
|||||||
isPre = ap.isPre
|
isPre = ap.isPre
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
AdvAP ap adv = {
|
||||||
|
s = \\a => ap.s ! a ++ adv.s ;
|
||||||
|
isPre = False
|
||||||
|
} ;
|
||||||
|
|
||||||
UseA2 a = {
|
UseA2 a = {
|
||||||
s = \\_ => a.s ! AAdj Posit ;
|
s = \\_ => a.s ! AAdj Posit ;
|
||||||
-- isPre = a.isPre -- TODO: support adjectives that can be optionally placed before.
|
-- isPre = a.isPre -- TODO: support adjectives that can be optionally placed before.
|
||||||
|
|||||||
@@ -2,7 +2,8 @@ concrete AdverbIna of Adverb = CatIna ** open ResIna, Prelude in {
|
|||||||
|
|
||||||
lin
|
lin
|
||||||
PositAdvAdj a = {s = a.s ! AAdv} ;
|
PositAdvAdj a = {s = a.s ! AAdv} ;
|
||||||
PrepNP prep np = {s = prep.s ++ np.s ! Acc} ;
|
PositAdAAdj a = {s = a.s ! AAdv} ;
|
||||||
|
PrepNP prep np = {s = prep.s ++ np.s ! prep.c} ;
|
||||||
|
|
||||||
ComparAdvAdj cadv a np = {
|
ComparAdvAdj cadv a np = {
|
||||||
s = cadv.s ++ a.s ! AAdv ++ "que" ++ np.s ! Nom
|
s = cadv.s ++ a.s ! AAdv ++ "que" ++ np.s ! Nom
|
||||||
|
|||||||
@@ -48,8 +48,10 @@ concrete CatIna of Cat = CommonX ** open ResIna, Prelude in {
|
|||||||
Det = {s : Case => Str ; n : Number} ;
|
Det = {s : Case => Str ; n : Number} ;
|
||||||
Predet, Ord = {s : Str};
|
Predet, Ord = {s : Str};
|
||||||
Card = {s : Str; n : Number } ;
|
Card = {s : Str; n : Number } ;
|
||||||
|
ACard = {s : Str} ;
|
||||||
Num = {s : Str; n : Number } ;
|
Num = {s : Str; n : Number } ;
|
||||||
Quant = {s : Number => Case => Str} ;
|
Quant = {s : Number => Case => Str} ;
|
||||||
|
DAP = {s : Case => Str ; n : Number} ;
|
||||||
|
|
||||||
-- Numeral
|
-- Numeral
|
||||||
|
|
||||||
|
|||||||
@@ -20,6 +20,8 @@ concrete ConjunctionIna of Conjunction =
|
|||||||
|
|
||||||
ConjRS = conjunctDistrTable Agr ;
|
ConjRS = conjunctDistrTable Agr ;
|
||||||
|
|
||||||
|
ConjCN = conjunctDistrTable Number ;
|
||||||
|
|
||||||
-- These fun's are generated from the list cat's.
|
-- These fun's are generated from the list cat's.
|
||||||
|
|
||||||
BaseS = twoSS ;
|
BaseS = twoSS ;
|
||||||
@@ -32,6 +34,8 @@ concrete ConjunctionIna of Conjunction =
|
|||||||
ConsAP xs x = consrTable Agr comma xs x ** {isPre = andB xs.isPre x.isPre} ;
|
ConsAP xs x = consrTable Agr comma xs x ** {isPre = andB xs.isPre x.isPre} ;
|
||||||
BaseRS x y = twoTable Agr x y ;
|
BaseRS x y = twoTable Agr x y ;
|
||||||
ConsRS xs x = consrTable Agr comma xs x ;
|
ConsRS xs x = consrTable Agr comma xs x ;
|
||||||
|
BaseCN x y = twoTable Number x y ;
|
||||||
|
ConsCN xs x = consrTable Number comma xs x ;
|
||||||
|
|
||||||
lincat
|
lincat
|
||||||
[S] = {s1,s2 : Str} ;
|
[S] = {s1,s2 : Str} ;
|
||||||
@@ -39,5 +43,6 @@ concrete ConjunctionIna of Conjunction =
|
|||||||
[NP] = {s1,s2 : Case => Str ; a : Agr} ;
|
[NP] = {s1,s2 : Case => Str ; a : Agr} ;
|
||||||
[AP] = {s1,s2 : Agr => Str ; isPre : Bool} ;
|
[AP] = {s1,s2 : Agr => Str ; isPre : Bool} ;
|
||||||
[RS] = {s1,s2 : Agr => Str} ;
|
[RS] = {s1,s2 : Agr => Str} ;
|
||||||
|
[CN] = {s1,s2 : Number => Str} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,9 +1,175 @@
|
|||||||
--# -path=.:../abstract:../common:prelude
|
--# -path=.:../abstract:../common:../prelude
|
||||||
|
|
||||||
concrete ExtendIna of Extend = CatIna **
|
concrete ExtendIna of Extend = CatIna **
|
||||||
ExtendFunctor
|
ExtendFunctor - [
|
||||||
with (Grammar = GrammarIna)
|
VPS, BaseVPS, ConsVPS, MkVPS, ConjVPS, PredVPS,
|
||||||
** {
|
VPI, BaseVPI, ConsVPI, MkVPI, ConjVPI, ComplVPIVV,
|
||||||
|
BaseComp, ConsComp, ConjComp, BaseImp, ConsImp, ConjImp,
|
||||||
|
PassVPSlash, PassAgentVPSlash, PresPartAP, PastPartAP,
|
||||||
|
PastPartAgentAP, ProgrVPSlash,
|
||||||
|
RNP, RNPList, ReflRNP, ReflPron, ReflPoss, PredetRNP,
|
||||||
|
AdvRNP, AdvRVP, AdvRAP, ReflA2RNP, PossPronRNP,
|
||||||
|
ConjRNP, Base_rr_RNP, Base_nr_RNP, Base_rn_RNP,
|
||||||
|
Cons_rr_RNP, Cons_nr_RNP,
|
||||||
|
CompoundN, CompoundAP, GerundCN, GerundNP, GerundAdv,
|
||||||
|
ByVP, InOrderToVP, ApposNP, PositAdVAdj, UttVPShort,
|
||||||
|
ComplSlashPartLast, UseDAP, UseDAPMasc, UseDAPFem
|
||||||
|
]
|
||||||
|
with (Grammar = GrammarIna) **
|
||||||
|
open GrammarIna, ResIna, Coordination, Prelude in {
|
||||||
|
|
||||||
flags coding=utf8 ;
|
flags coding=utf8 ;
|
||||||
|
|
||||||
|
lincat
|
||||||
|
VPS = {s : Agr => Str} ;
|
||||||
|
[VPS] = {s1,s2 : Agr => Str} ;
|
||||||
|
VPI = {s : Agr => Str} ;
|
||||||
|
[VPI] = {s1,s2 : Agr => Str} ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
MkVPS temp pol vp = {
|
||||||
|
s = \\a => (mkClause [] a vp).s ! variants {True;False}
|
||||||
|
! temp.t ! temp.a ! pol.p ! ODir
|
||||||
|
} ;
|
||||||
|
BaseVPS = twoTable Agr ;
|
||||||
|
ConsVPS = consrTable Agr comma ;
|
||||||
|
ConjVPS = conjunctDistrTable Agr ;
|
||||||
|
PredVPS np vps = {s = np.s ! Nom ++ vps.s ! np.a} ;
|
||||||
|
|
||||||
|
MkVPI vp = {s = \\a => infVPAg vp a} ;
|
||||||
|
BaseVPI = twoTable Agr ;
|
||||||
|
ConsVPI = consrTable Agr comma ;
|
||||||
|
ConjVPI = conjunctDistrTable Agr ;
|
||||||
|
ComplVPIVV vv vpi = insertInvarObj (vpi.s ! Sp3) (predV vv) ;
|
||||||
|
|
||||||
|
lincat
|
||||||
|
[Comp] = {s1,s2 : Agr => Str} ;
|
||||||
|
[Imp] = {s1,s2 : Polarity => Number => Str} ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
BaseComp = twoTable Agr ;
|
||||||
|
ConsComp = consrTable Agr comma ;
|
||||||
|
ConjComp = conjunctDistrTable Agr ;
|
||||||
|
|
||||||
|
BaseImp = twoTable2 Polarity Number ;
|
||||||
|
ConsImp = consrTable2 Polarity Number comma ;
|
||||||
|
ConjImp = conjunctDistrTable2 Polarity Number ;
|
||||||
|
|
||||||
|
PassVPSlash vps =
|
||||||
|
insertInvarObj (partVP vps Sp3) (predV_ esserV) ;
|
||||||
|
PassAgentVPSlash vps np =
|
||||||
|
insertInvarObj (partVP vps Sp3 ++ "per" ++ np.s ! Acc)
|
||||||
|
(predV_ esserV) ;
|
||||||
|
|
||||||
|
PresPartAP vp = {
|
||||||
|
s = \\a => vp.prp ++ vp.clitics ! a ++ vp.rest ! a ;
|
||||||
|
isPre = False
|
||||||
|
} ;
|
||||||
|
PastPartAP vps = {
|
||||||
|
s = \\a => partVP vps a ;
|
||||||
|
isPre = False
|
||||||
|
} ;
|
||||||
|
PastPartAgentAP vps np = {
|
||||||
|
s = \\a => partVP vps a ++ "per" ++ np.s ! Acc ;
|
||||||
|
isPre = False
|
||||||
|
} ;
|
||||||
|
ProgrVPSlash vps = vps ;
|
||||||
|
|
||||||
|
lincat
|
||||||
|
RNP = {s : Agr => Case => Str ; isPronoun : Bool} ;
|
||||||
|
RNPList = {s1,s2 : Agr => Case => Str} ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
ReflRNP vps rnp = insertReflObj vps.p2 vps.c2 rnp vps ;
|
||||||
|
ReflPron = {
|
||||||
|
s = \\a,c => casePrep [] c ++ reflPron ! a ;
|
||||||
|
isPronoun = True
|
||||||
|
} ;
|
||||||
|
ReflPoss num cn = {
|
||||||
|
s = \\a,c => casePrep [] c ++ reflPoss a ++ cn.s ! num.n ;
|
||||||
|
isPronoun = False
|
||||||
|
} ;
|
||||||
|
PredetRNP pred rnp = {
|
||||||
|
s = \\a,c => pred.s ++ rnp.s ! a ! c ;
|
||||||
|
isPronoun = False
|
||||||
|
} ;
|
||||||
|
AdvRNP np prep rnp = {
|
||||||
|
s = \\a,c => np.s ! c ++ prep.s ++ rnp.s ! a ! prep.c ;
|
||||||
|
isPronoun = False
|
||||||
|
} ;
|
||||||
|
AdvRVP vp prep rnp = vp ** {
|
||||||
|
rest = \\a => vp.rest ! a ++ prep.s ++ rnp.s ! a ! prep.c
|
||||||
|
} ;
|
||||||
|
AdvRAP ap prep rnp = {
|
||||||
|
s = \\a => ap.s ! a ++ prep.s ++ rnp.s ! a ! prep.c ;
|
||||||
|
isPre = False
|
||||||
|
} ;
|
||||||
|
ReflA2RNP a rnp = {
|
||||||
|
s = \\agr => a.s ! AAdj Posit ++ a.c2 ++ rnp.s ! agr ! Acc ;
|
||||||
|
isPre = False
|
||||||
|
} ;
|
||||||
|
PossPronRNP pron num cn rnp = {
|
||||||
|
s = \\c => casePrep [] c ++ pron.possForm ++ cn.s ! num.n ++
|
||||||
|
rnp.s ! pron.a ! Gen ;
|
||||||
|
a = agrP3 num.n ;
|
||||||
|
isPronoun = False
|
||||||
|
} ;
|
||||||
|
ConjRNP conj rnps = conjunctDistrTable2 Agr Case conj rnps ** {
|
||||||
|
isPronoun = False
|
||||||
|
} ;
|
||||||
|
Base_rr_RNP = twoTable2 Agr Case ;
|
||||||
|
Base_nr_RNP np rnp = twoTable2 Agr Case
|
||||||
|
{s = \\_,c => np.s ! c} rnp ;
|
||||||
|
Base_rn_RNP rnp np = twoTable2 Agr Case
|
||||||
|
rnp {s = \\_,c => np.s ! c} ;
|
||||||
|
Cons_rr_RNP = consrTable2 Agr Case comma ;
|
||||||
|
Cons_nr_RNP np rnps = consrTable2 Agr Case comma
|
||||||
|
{s = \\_,c => np.s ! c} rnps ;
|
||||||
|
|
||||||
|
CompoundN n1 n2 = {
|
||||||
|
s = \\n => n2.s ! n ++ "de" ++ n1.s ! Sg
|
||||||
|
} ;
|
||||||
|
CompoundAP noun adj = {
|
||||||
|
s = \\a => adj.s ! AAdj Posit ++ "de" ++ noun.s ! Sg ;
|
||||||
|
isPre = False
|
||||||
|
} ;
|
||||||
|
GerundCN vp = {s = \\_ => infVPAg vp Sp3} ;
|
||||||
|
GerundNP vp = {
|
||||||
|
s = \\_ => infVPAg vp Sp3 ;
|
||||||
|
a = Sp3 ;
|
||||||
|
isPronoun = False
|
||||||
|
} ;
|
||||||
|
GerundAdv vp = {s = vp.prp ++ vp.clitics ! Sp3 ++ vp.rest ! Sp3} ;
|
||||||
|
ByVP vp = {s = "per" ++ infVPAg vp Sp3} ;
|
||||||
|
InOrderToVP vp = {s = "pro" ++ infVPAg vp Sp3} ;
|
||||||
|
ApposNP np1 np2 = {
|
||||||
|
s = \\c => np1.s ! c ++ comma ++ np2.s ! c ;
|
||||||
|
a = np1.a ;
|
||||||
|
isPronoun = False
|
||||||
|
} ;
|
||||||
|
PositAdVAdj a = {s = a.s ! AAdv} ;
|
||||||
|
UttVPShort vp = {s = infVPAg vp Sp3} ;
|
||||||
|
ComplSlashPartLast vps np = insertObj vps.p2 vps.c2 np vps ;
|
||||||
|
|
||||||
|
UseDAP dap = {
|
||||||
|
s = dap.s ;
|
||||||
|
a = agrP3 dap.n ;
|
||||||
|
isPronoun = False
|
||||||
|
} ;
|
||||||
|
UseDAPMasc = UseDAP ;
|
||||||
|
UseDAPFem = UseDAP ;
|
||||||
|
|
||||||
|
oper
|
||||||
|
infVPAg : ResIna.VP -> Agr -> Str = \vp,a -> variants {
|
||||||
|
vp.clitics ! a ++ vp.inf ++ vp.rest ! a ;
|
||||||
|
vp.inf ++ vp.clitics ! a ++ vp.rest ! a
|
||||||
|
} ;
|
||||||
|
|
||||||
|
partVP : ResIna.VP -> Agr -> Str = \vp,a ->
|
||||||
|
vp.part ++ vp.clitics ! a ++ vp.rest ! a ;
|
||||||
|
|
||||||
|
reflPoss : Agr -> Str = \a -> case <a.n,a.p> of {
|
||||||
|
<Sg,P1> => "mi" ; <Sg,P2> => "tu" ; <Sg,P3> => "su" ;
|
||||||
|
<Pl,P1> => "nostre" ; <Pl,P2> => "vostre" ; <Pl,P3> => "lor"
|
||||||
|
} ;
|
||||||
}
|
}
|
||||||
@@ -19,6 +19,10 @@ concrete IdiomIna of Idiom = CatIna ** open Prelude, ResIna in {
|
|||||||
|
|
||||||
ExistNP np =
|
ExistNP np =
|
||||||
mkClause "il" Sp3 ((insertObj "" Acc np) (predV_ haberV)) ;
|
mkClause "il" Sp3 ((insertObj "" Acc np) (predV_ haberV)) ;
|
||||||
|
|
||||||
|
ExistNPAdv np adv =
|
||||||
|
mkClause "il" Sp3 (insertInvarObj adv.s
|
||||||
|
((insertObj "" Acc np) (predV_ haberV))) ;
|
||||||
-- Il ha colonias que non pote reclamar mesmo un tal origine. (sample text 3)
|
-- Il ha colonias que non pote reclamar mesmo un tal origine. (sample text 3)
|
||||||
|
|
||||||
ExistIP ip = mkQuestion {s=ip.s ! Acc} (mkClause "il" Sp3 (predV_ haberV)) ;
|
ExistIP ip = mkQuestion {s=ip.s ! Acc} (mkClause "il" Sp3 (predV_ haberV)) ;
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ oper
|
|||||||
-- However, most adjectives can be inflected using the final character.
|
-- However, most adjectives can be inflected using the final character.
|
||||||
|
|
||||||
regAdjective : Str -> Adjective = \clar ->
|
regAdjective : Str -> Adjective = \clar ->
|
||||||
mkAdjective clar ("plus" ++ clar) ("le" ++ "plus" ++ clar) ;
|
mkAdjective clar ("plus" ++ clar) ("plus" ++ clar) ;
|
||||||
|
|
||||||
--3 Verbs
|
--3 Verbs
|
||||||
|
|
||||||
|
|||||||
@@ -35,6 +35,12 @@ concrete NounIna of Noun = CatIna ** open ResIna, Prelude in {
|
|||||||
a = Sp3;
|
a = Sp3;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
ExtAdvNP np adv = {
|
||||||
|
isPronoun = False ;
|
||||||
|
s = \\c => np.s ! c ++ "," ++ adv.s ;
|
||||||
|
a = np.a
|
||||||
|
} ;
|
||||||
|
|
||||||
-- version 1.4 changes by AR 16/6/2008
|
-- version 1.4 changes by AR 16/6/2008
|
||||||
|
|
||||||
DetNP det = {
|
DetNP det = {
|
||||||
@@ -72,6 +78,10 @@ concrete NounIna of Noun = CatIna ** open ResIna, Prelude in {
|
|||||||
|
|
||||||
OrdSuperl a = {s = a.s ! AAdj Superl} ;
|
OrdSuperl a = {s = a.s ! AAdj Superl} ;
|
||||||
|
|
||||||
|
OrdNumeralSuperl numeral a = {
|
||||||
|
s = numeral.s ! NOrd ++ a.s ! AAdj Superl
|
||||||
|
} ;
|
||||||
|
|
||||||
DefArt = {s = \\_ => table {
|
DefArt = {s = \\_ => table {
|
||||||
Dat => "al";
|
Dat => "al";
|
||||||
Gen | Abl => "del";
|
Gen | Abl => "del";
|
||||||
@@ -118,6 +128,21 @@ concrete NounIna of Noun = CatIna ** open ResIna, Prelude in {
|
|||||||
isPronoun = np.isPronoun ---- ?? AR
|
isPronoun = np.isPronoun ---- ?? AR
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
PossNP cn np = {s = \\n => cn.s ! n ++ "de" ++ np.s ! Acc} ;
|
||||||
|
PartNP cn np = {s = \\n => cn.s ! n ++ "de" ++ np.s ! Acc} ;
|
||||||
|
|
||||||
|
CountNP det np = {
|
||||||
|
s = \\c => det.s ! c ++ "de" ++ np.s ! c ;
|
||||||
|
a = agrP3 det.n ;
|
||||||
|
isPronoun = False
|
||||||
|
} ;
|
||||||
|
|
||||||
|
DetDAP det = det ;
|
||||||
|
AdjDAP dap ap = {
|
||||||
|
s = \\c => dap.s ! c ++ ap.s ! agrP3 dap.n ;
|
||||||
|
n = dap.n
|
||||||
|
} ;
|
||||||
|
|
||||||
QuantityNP n m = {
|
QuantityNP n m = {
|
||||||
s = \\c => preOrPost m.isPre m.s (n.s ! NCard) ;
|
s = \\c => preOrPost m.isPre m.s (n.s ! NCard) ;
|
||||||
a = agrP3 n.n ;
|
a = agrP3 n.n ;
|
||||||
|
|||||||
@@ -5,7 +5,8 @@ concrete NumeralIna of Numeral = CatIna [Numeral,Digits,Decimal] ** open ResIna,
|
|||||||
Sub10 = {s : DForm => CardOrd => Str ; n : Number} ;
|
Sub10 = {s : DForm => CardOrd => Str ; n : Number} ;
|
||||||
Sub100 = {s : CardOrd => Str ; n : Number} ;
|
Sub100 = {s : CardOrd => Str ; n : Number} ;
|
||||||
Sub1000 = {s : CardOrd => Str ; n : Number} ;
|
Sub1000 = {s : CardOrd => Str ; n : Number} ;
|
||||||
Sub1000000 = {s : CardOrd => Str ; n : Number} ;
|
Sub1000000, Sub1000000000, Sub1000000000000 =
|
||||||
|
{s : CardOrd => Str ; n : Number} ;
|
||||||
|
|
||||||
lin num x = x ;
|
lin num x = x ;
|
||||||
|
|
||||||
@@ -32,11 +33,37 @@ concrete NumeralIna of Numeral = CatIna [Numeral,Digits,Decimal] ** open ResIna,
|
|||||||
lin pot2plus d e = {
|
lin pot2plus d e = {
|
||||||
s = \\c => d.s ! unit ! NCard ++ "cento" ++ e.s ! c ; n = Pl} ;
|
s = \\c => d.s ! unit ! NCard ++ "cento" ++ e.s ! c ; n = Pl} ;
|
||||||
lin pot2as3 n = n ;
|
lin pot2as3 n = n ;
|
||||||
|
lin pot21 = regCardOrd "cento" ** {n = Pl} ;
|
||||||
lin pot3 n = {
|
lin pot3 n = {
|
||||||
s = \\c => n.s ! NCard ++ mkCard c "mille" ; n = Pl} ;
|
s = \\c => n.s ! NCard ++ mkCard c "mille" ; n = Pl} ;
|
||||||
lin pot3plus n m = {
|
lin pot3plus n m = {
|
||||||
s = \\c => n.s ! NCard ++ "mille" ++ m.s ! c ; n = Pl} ;
|
s = \\c => n.s ! NCard ++ "mille" ++ m.s ! c ; n = Pl} ;
|
||||||
|
|
||||||
|
lin pot31 = regCardOrd "mille" ** {n = Pl} ;
|
||||||
|
lin pot3as4 n = n ;
|
||||||
|
lin pot3decimal d = d ;
|
||||||
|
lin pot41 = regCardOrd "un million" ** {n = Pl} ;
|
||||||
|
lin pot4 n = {
|
||||||
|
s = \\c => n.s ! NCard ++ mkCard c "million" ; n = Pl
|
||||||
|
} ;
|
||||||
|
lin pot4plus n m = {
|
||||||
|
s = \\c => n.s ! NCard ++ "million" ++ m.s ! c ; n = Pl
|
||||||
|
} ;
|
||||||
|
lin pot4as5 n = n ;
|
||||||
|
lin pot4decimal d = {
|
||||||
|
s = \\c => d.s ! NCard ++ mkCard c "million" ; n = Pl
|
||||||
|
} ;
|
||||||
|
lin pot51 = regCardOrd "un milliardo" ** {n = Pl} ;
|
||||||
|
lin pot5 n = {
|
||||||
|
s = \\c => n.s ! NCard ++ mkCard c "milliardo" ; n = Pl
|
||||||
|
} ;
|
||||||
|
lin pot5plus n m = {
|
||||||
|
s = \\c => n.s ! NCard ++ "milliardo" ++ m.s ! c ; n = Pl
|
||||||
|
} ;
|
||||||
|
lin pot5decimal d = {
|
||||||
|
s = \\c => d.s ! NCard ++ mkCard c "milliardo" ; n = Pl
|
||||||
|
} ;
|
||||||
|
|
||||||
-- numerals as sequences of digits
|
-- numerals as sequences of digits
|
||||||
|
|
||||||
lincat
|
lincat
|
||||||
|
|||||||
@@ -216,6 +216,7 @@ resource ResIna = ParamX ** open Prelude in {
|
|||||||
rest : Agr => Str; -- comes after the infinite part
|
rest : Agr => Str; -- comes after the infinite part
|
||||||
clitics : Agr => Str; -- can be placed just before the finite or right after the infinite
|
clitics : Agr => Str; -- can be placed just before the finite or right after the infinite
|
||||||
prp : Str ; -- present participle (unused at the moment ???)
|
prp : Str ; -- present participle (unused at the moment ???)
|
||||||
|
part : Str ; -- past participle, needed by passive constructions
|
||||||
inf : Str ; -- the infinitive form ; VerbForms would be the logical place
|
inf : Str ; -- the infinitive form ; VerbForms would be the logical place
|
||||||
} ;
|
} ;
|
||||||
NP : Type = {
|
NP : Type = {
|
||||||
@@ -238,6 +239,7 @@ resource ResIna = ParamX ** open Prelude in {
|
|||||||
Anter => \\t,use_irreg => {fin = (haberV!use_irreg).s ! (tenseToVFrom!t); inf = (verb!use_irreg).s!VPPart} --# notpresent
|
Anter => \\t,use_irreg => {fin = (haberV!use_irreg).s ! (tenseToVFrom!t); inf = (verb!use_irreg).s!VPPart} --# notpresent
|
||||||
};
|
};
|
||||||
prp = (verb!False).s ! VPresPart;
|
prp = (verb!False).s ! VPresPart;
|
||||||
|
part = (verb!False).s ! VPPart;
|
||||||
inf = (verb!False).s ! VInf;
|
inf = (verb!False).s ! VInf;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -263,12 +265,14 @@ resource ResIna = ParamX ** open Prelude in {
|
|||||||
True => {
|
True => {
|
||||||
inf = vp.inf;
|
inf = vp.inf;
|
||||||
prp = vp.prp;
|
prp = vp.prp;
|
||||||
|
part = vp.part;
|
||||||
s = vp.s;
|
s = vp.s;
|
||||||
clitics = \\agr => obj.s!agr!c ++ vp.clitics!agr; -- clitics are inserted in reverse order.
|
clitics = \\agr => obj.s!agr!c ++ vp.clitics!agr; -- clitics are inserted in reverse order.
|
||||||
rest = vp.rest};
|
rest = vp.rest};
|
||||||
False => {
|
False => {
|
||||||
inf = vp.inf;
|
inf = vp.inf;
|
||||||
prp = vp.prp;
|
prp = vp.prp;
|
||||||
|
part = vp.part;
|
||||||
s = vp.s;
|
s = vp.s;
|
||||||
clitics = vp.clitics;
|
clitics = vp.clitics;
|
||||||
rest = \\agr => vp.rest!agr ++ prep ++ obj.s!agr!c;
|
rest = \\agr => vp.rest!agr ++ prep ++ obj.s!agr!c;
|
||||||
|
|||||||
@@ -40,6 +40,14 @@ lin
|
|||||||
|
|
||||||
AdvS a s = {s = a.s ++ "," ++ s.s} ;
|
AdvS a s = {s = a.s ++ "," ++ s.s} ;
|
||||||
|
|
||||||
|
ExtAdvS a s = {s = a.s ++ "," ++ s.s} ;
|
||||||
|
|
||||||
|
SSubjS s1 subj s2 = {s = s1.s ++ subj.s ++ s2.s} ;
|
||||||
|
|
||||||
|
AdvImp adv imp = {
|
||||||
|
s = \\p,n => imp.s ! p ! n ++ adv.s
|
||||||
|
} ;
|
||||||
|
|
||||||
RelS s r = {s = s.s ++ "," ++ r.s ! agrP3 Sg} ;
|
RelS s r = {s = s.s ++ "," ++ r.s ! agrP3 Sg} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -57,6 +57,22 @@ concrete VerbIna of Verb = CatIna ** open ResIna, Prelude in {
|
|||||||
ReflVP vp = insertReflObj vp.p2 vp.c2
|
ReflVP vp = insertReflObj vp.p2 vp.c2
|
||||||
{isPronoun = True; s = \\agr,c => reflPron!agr} vp ;
|
{isPronoun = True; s = \\agr,c => reflPron!agr} vp ;
|
||||||
|
|
||||||
|
AdvVPSlash vp adv = vp ** {
|
||||||
|
rest = \\a => vp.rest ! a ++ adv.s
|
||||||
|
} ;
|
||||||
|
|
||||||
|
AdVVPSlash adv vp = vp ** {
|
||||||
|
rest = \\a => adv.s ++ vp.rest ! a
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ExtAdvVP vp adv = vp ** {
|
||||||
|
rest = \\a => vp.rest ! a ++ "," ++ adv.s
|
||||||
|
} ;
|
||||||
|
|
||||||
|
VPSlashPrep vp prep = vp ** {p2 = prep.s ; c2 = prep.c} ;
|
||||||
|
|
||||||
|
UseCopula = predV_ esserV ;
|
||||||
|
|
||||||
PassV2 v = insertInvarObj (v.s ! VPPart) (predV_ esserV);
|
PassV2 v = insertInvarObj (v.s ! VPPart) (predV_ esserV);
|
||||||
|
|
||||||
CompAP ap = ap ;
|
CompAP ap = ap ;
|
||||||
|
|||||||
Reference in new issue
Block a user