mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-09-30 14:13:40 -06:00
Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0d3591ca08 |
@@ -4,8 +4,7 @@ concrete AllAfr of AllAfrAbs =
|
||||
LangAfr,
|
||||
IrregAfr,
|
||||
ExtendAfr
|
||||
**
|
||||
{
|
||||
** open ExtraAfr in {
|
||||
--{} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
abstract AllAfrAbs =
|
||||
Lang,
|
||||
IrregAfrAbs,
|
||||
ExtraAfrAbs
|
||||
Extend
|
||||
**
|
||||
{
|
||||
--{} ;
|
||||
|
||||
@@ -92,7 +92,7 @@ concrete CatAfr of Cat =
|
||||
|
||||
lindef
|
||||
VPSlash = \s -> {
|
||||
s = {s = \\_ => s; prefix = ""; aux = VHebben; vtype = VAct} ;
|
||||
s = {s = \\_ => s; prefix = ""; hasPrefix = False; hasPast = False; aux = VHebben; vtype = VAct} ;
|
||||
a1 = \\_ => "" ;
|
||||
n0 = \\_ => "" ;
|
||||
n2 = \\_ => "" ;
|
||||
|
||||
@@ -109,7 +109,7 @@ lin GenModNP num np cn = heavyNP {
|
||||
isPre = True
|
||||
} ;
|
||||
PastPartAgentAP vp np = {
|
||||
s = \\_ => partVP vp (agrP3 Sg) ++ "door" ++ np.s ! NPAcc ;
|
||||
s = \\_ => partVP vp (agrP3 Sg) ++ "deur" ++ np.s ! NPAcc ;
|
||||
isPre = False
|
||||
} ;
|
||||
ProgrVPSlash vp = vp ;
|
||||
@@ -121,12 +121,12 @@ lin GenModNP num np cn = heavyNP {
|
||||
s = \\_ => infVPString vp (agrP3 Sg) ;
|
||||
a = agrP3 Sg
|
||||
} ;
|
||||
GerundAdv vp = {s = "door" ++ infVPString vp (agrP3 Sg)} ;
|
||||
ByVP vp = {s = "door" ++ infVPString vp (agrP3 Sg)} ;
|
||||
InOrderToVP vp = {s = "om" ++ infVPString vp (agrP3 Sg)} ;
|
||||
GerundAdv vp = {s = "deur" ++ infVPBody vp (agrP3 Sg)} ;
|
||||
ByVP vp = {s = "deur" ++ infVPBody vp (agrP3 Sg)} ;
|
||||
InOrderToVP vp = {s = infVPString vp (agrP3 Sg)} ;
|
||||
|
||||
ApposNP np1 np2 = heavyNP {
|
||||
s = \\c => np1.s ! c ++ "," ++ np2.s ! c ;
|
||||
s = \\c => np1.s ! c ++ bindComma ++ np2.s ! c ;
|
||||
a = np1.a
|
||||
} ;
|
||||
PositAdVAdj a = {s = a.s ! Posit ! APred} ;
|
||||
@@ -155,11 +155,14 @@ lin BaseImp = twoTable2 Polarity ImpForm ;
|
||||
lin PassVPSlash vps =
|
||||
insertInf (vps.s.s ! VPerf) (predV word_V) ;
|
||||
PassAgentVPSlash vps np =
|
||||
insertAdv (appPrep "door" np.s) (insertInf (vps.s.s ! VPerf) (predV word_V)) ;
|
||||
insertAdv (appPrep "deur" np.s) (insertInf (vps.s.s ! VPerf) (predV word_V)) ;
|
||||
|
||||
oper
|
||||
infVPString : ResAfr.VP -> Agr -> Str = \vp,a ->
|
||||
"om" ++ vp.n0 ! a ++ vp.n2 ! a ++ vp.a2 ++ "te" ++
|
||||
"om" ++ infVPBody vp a ;
|
||||
|
||||
infVPBody : ResAfr.VP -> Agr -> Str = \vp,a ->
|
||||
vp.n0 ! a ++ vp.n2 ! a ++ vp.a2 ++ vp.s.prefix ++ "te" ++
|
||||
vp.s.s ! VInf ++ vp.inf.p1 ++ vp.ext ;
|
||||
|
||||
partVP : ResAfr.VP -> Agr -> Str = \vp,a ->
|
||||
|
||||
@@ -54,7 +54,8 @@ concrete IdiomAfr of Idiom = CatAfr **
|
||||
a = np.a
|
||||
} ;
|
||||
|
||||
ProgrVP vp = insertAdv ("aan" ++ "die" ++ useInfVP True vp) (predV zijn_V) ; --afr
|
||||
ProgrVP vp = insertExtrapos (useInfVP False vp)
|
||||
(insertObj (\\_ => "besig") (predV zijn_V)) ;
|
||||
|
||||
ImpPl1 vp =
|
||||
let
|
||||
|
||||
@@ -40,7 +40,7 @@ concrete NounAfr of Noun = CatAfr ** open ResAfr, Prelude in {
|
||||
} ;
|
||||
|
||||
ExtAdvNP np adv = heavyNP {
|
||||
s = \\c => np.s ! c ++ "," ++ adv.s ++ "," ;
|
||||
s = \\c => np.s ! c ++ embedInCommas adv.s ;
|
||||
a = np.a
|
||||
} ;
|
||||
|
||||
@@ -163,7 +163,7 @@ concrete NounAfr of Noun = CatAfr ** open ResAfr, Prelude in {
|
||||
} ;
|
||||
|
||||
RelNP np rs = {
|
||||
s = \\c => np.s ! c ++ "," ++ rs.s ! np.a.g ! np.a.n ;
|
||||
s = \\c => np.s ! c ++ bindComma ++ rs.s ! np.a.g ! np.a.n ;
|
||||
a = np.a ;
|
||||
isPron = False
|
||||
} ;
|
||||
|
||||
@@ -243,11 +243,14 @@ oper
|
||||
mkV : (breek,gebreek : Str) -> V =
|
||||
\a,b -> lin V (v2vv (irregVerb a b)) ;
|
||||
mkV : (wil,wou,gewil : Str) -> V =
|
||||
\a,b,c -> lin V (v2vv (mkVerb a a b c)) ;
|
||||
\a,b,c -> lin V (v2vvPast (mkVerb a a b c)) ;
|
||||
mkV : Str -> V -> V = \v,s ->lin V (prefixV v s) ;
|
||||
} ;
|
||||
zijnV v = v ; -- lin V (v2vvAux v VZijn) ;
|
||||
reflV v = lin V {s = v.s ; aux = v.aux ; prefix = v.prefix ; vtype = VRefl} ;
|
||||
reflV v = lin V {
|
||||
s = v.s ; aux = v.aux ; prefix = v.prefix ; hasPrefix = v.hasPrefix ;
|
||||
hasPast = v.hasPast ; vtype = VRefl
|
||||
} ;
|
||||
|
||||
zijn_V : V = lin V ResAfr.zijn_V ;
|
||||
hebben_V : V = lin V ResAfr.hebben_V ;
|
||||
|
||||
@@ -26,6 +26,6 @@ concrete PhraseAfr of Phrase = CatAfr ** open Prelude, ResAfr in
|
||||
PConjConj conj = ss (conj.s2) ;
|
||||
|
||||
NoVoc = {s = []} ;
|
||||
VocNP np = {s = "," ++ np.s ! NPNom} ;
|
||||
VocNP np = {s = bindComma ++ np.s ! NPNom} ;
|
||||
|
||||
}
|
||||
|
||||
+86
-28
@@ -59,6 +59,9 @@ resource ResAfr = ParamX ** open Prelude in {
|
||||
|
||||
_ + ("oir" | "ion" | "je") => mkNoun s (s + "s") Neutr ; --uit Nederlandse reël
|
||||
|
||||
b + "heid" => mkNoun s (b + "hede") Neutr ;
|
||||
_ + "teit" => mkNoun s (s + "e") Neutr ;
|
||||
|
||||
_ + ("rm" | "lm") => mkNoun s (s + "s") Neutr ; --R13.3
|
||||
|
||||
? + ? + ? + _ +
|
||||
@@ -121,7 +124,8 @@ resource ResAfr = ParamX ** open Prelude in {
|
||||
_ + ("agtig"|"ant"|"ent"|"êr"|"ies"|"ig"|"lik"|"matig"|"s") => s + "e" ; --p288
|
||||
b + "ief" => b + "iewe" ; --p288
|
||||
|
||||
--b + ("ei"|"eu"|"oe"|"ou"|"ie"|"y"|"ui") + ? => endCons s + "e" ;
|
||||
_ + "af" => s ; -- compounds such as kortaf
|
||||
|
||||
b + v@("ou"|"y") + "d" => b + v + "e" ; --koud, koue / wyd, wye
|
||||
|
||||
--b + v@("oo"|"ee") + "d" => b + init v + "ë" ; --leeg, leë
|
||||
@@ -132,6 +136,7 @@ resource ResAfr = ParamX ** open Prelude in {
|
||||
|
||||
b + v@("aa"|"ee"|"oo"|"uu") + "r" => s ; --duur, duur
|
||||
b + v@("aa"|"ee"|"oo"|"uu") + c@#cons => b + shortVoc v c + "e" ; --gaaf, gawe
|
||||
b + ("ei"|"eu"|"oe"|"ou"|"ie"|"y"|"ui") + ? => endCons s + "e" ;
|
||||
b + v@("a"|"e"|"i"|"o"|"u" ) + "f" => b + v + "ww" + "e" ; --grof, growwe
|
||||
--b + v@("a"|"e"|"i"|"o"|"u" ) + c@? => b + v + c + c + "e" ; --stom, growwe
|
||||
_ + "d" => s + "e" ; --p286
|
||||
@@ -175,12 +180,19 @@ resource ResAfr = ParamX ** open Prelude in {
|
||||
s = table {
|
||||
VInf => aaien; -- hij/zij/het/wij aaien
|
||||
VPres => aai; -- ik aai
|
||||
VPast => aai; -- ik aaide --# notpresent --!afr! lyk vir nou soos VPres
|
||||
VPast => aaide; --# notpresent
|
||||
VPerf => geaaid -- ik heb geaaid
|
||||
}
|
||||
};
|
||||
|
||||
regVerb : Str -> Verb = \s -> irregVerb s ("ge" + s) ;
|
||||
regVerb : Str -> Verb = \s ->
|
||||
let perf : Str = case s of {
|
||||
("be" | "ge" | "her" | "er" | "ont" | "ver") + _ => s ;
|
||||
"e" + r => "geë" + r ;
|
||||
"i" + r => "geï" + r ;
|
||||
_ => "ge" + s
|
||||
}
|
||||
in irregVerb s perf ;
|
||||
|
||||
irregVerb : (breek, gebreek : Str) -> Verb = \breek,gebreek ->
|
||||
mkVerb breek breek breek gebreek ;
|
||||
@@ -195,10 +207,12 @@ resource ResAfr = ParamX ** open Prelude in {
|
||||
if_then_Str b (ein + geb) geb ;
|
||||
in
|
||||
{s = table {
|
||||
f@(VInf | VPerf) => ein + vs ! f ; ---- TODO: eingegeven
|
||||
VPerf => ein + vs ! VPerf ; ---- TODO: eingegeven
|
||||
f => vs ! f
|
||||
} ;
|
||||
prefix = ein ;
|
||||
hasPrefix = True ;
|
||||
hasPast = verb.hasPast ;
|
||||
aux = verb.aux ;
|
||||
vtype = verb.vtype
|
||||
} ;
|
||||
@@ -211,18 +225,22 @@ resource ResAfr = ParamX ** open Prelude in {
|
||||
} ;
|
||||
aux = VZijn ;
|
||||
prefix = [] ;
|
||||
hasPrefix = False ;
|
||||
hasPast = True ;
|
||||
vtype = VAct ;
|
||||
} ;
|
||||
|
||||
hebben_V : VVerb = {
|
||||
s = table {
|
||||
VInf => "het" ;
|
||||
VInf => "hê" ;
|
||||
VPres => "het" ;
|
||||
VPast => "het" ; --# notpresent
|
||||
VPerf => "gehad"
|
||||
} ;
|
||||
aux = VHebben ;
|
||||
prefix = [] ;
|
||||
hasPrefix = False ;
|
||||
hasPast = False ;
|
||||
vtype = VAct ;
|
||||
} ;
|
||||
|
||||
@@ -241,6 +259,8 @@ resource ResAfr = ParamX ** open Prelude in {
|
||||
} ;
|
||||
aux = VHebben ;
|
||||
prefix = [] ;
|
||||
hasPrefix = False ;
|
||||
hasPast = True ;
|
||||
vtype = VAct ;
|
||||
} ;
|
||||
|
||||
@@ -248,11 +268,13 @@ resource ResAfr = ParamX ** open Prelude in {
|
||||
s = table {
|
||||
VInf => "word" ;
|
||||
VPres => "word" ;
|
||||
VPast => "word" ; --# notpresent
|
||||
VPerf => "geword"
|
||||
VPast => "is" ; --# notpresent
|
||||
VPerf => []
|
||||
} ;
|
||||
aux = VHebben ;
|
||||
aux = VZijn ;
|
||||
prefix = [] ;
|
||||
hasPrefix = False ;
|
||||
hasPast = True ;
|
||||
vtype = VAct ;
|
||||
} ;
|
||||
|
||||
@@ -273,15 +295,18 @@ param
|
||||
Adjf = Strong | Weak ;
|
||||
|
||||
|
||||
oper VVerb = Verb ** {prefix : Str ; aux : VAux ; vtype : VType} ;
|
||||
oper VVerb = Verb ** {
|
||||
prefix : Str ; hasPrefix : Bool ; hasPast : Bool ; aux : VAux ; vtype : VType
|
||||
} ;
|
||||
param VAux = VHebben | VZijn ;
|
||||
|
||||
param VType = VAct | VRefl ;
|
||||
|
||||
oper
|
||||
v2vvAux : Verb -> VAux -> VVerb = \v,a ->
|
||||
{s = v.s ; aux = a ; prefix = [] ; vtype = VAct} ;
|
||||
{s = v.s ; aux = a ; prefix = [] ; hasPrefix = False ; hasPast = False ; vtype = VAct} ;
|
||||
v2vv : Verb -> VVerb = \v -> v2vvAux v VHebben ;
|
||||
v2vvPast : Verb -> VVerb = \v -> (v2vvAux v VHebben) ** {hasPast = True} ;
|
||||
|
||||
|
||||
|
||||
@@ -325,11 +350,10 @@ param
|
||||
|
||||
-- Used in $NounAfr$.
|
||||
|
||||
agrAdj : Gender -> Adjf -> NForm -> AForm = \g,a,n ->
|
||||
case <a,g,n> of {
|
||||
<Strong,Neutr,NF Sg _> => APred ;
|
||||
_ => AAttr
|
||||
} ;
|
||||
-- Afrikaans attributive agreement does not depend on the article in the
|
||||
-- way Dutch/German strong and weak agreement does. The adjective's
|
||||
-- lexical paradigm determines whether its attributive form has -e.
|
||||
agrAdj : Gender -> Adjf -> NForm -> AForm = \_,_,_ -> AAttr ;
|
||||
|
||||
oper VP : Type = {
|
||||
s : VVerb ;
|
||||
@@ -440,30 +464,47 @@ param
|
||||
auxv = (auxVerb vp.s.aux).s ;
|
||||
vperf = vp.s.s ! VPerf ;
|
||||
verb : Str * Str = case <t,a> of {
|
||||
<Fut|Cond,Simul> => <sal_V.s ! vform, vp.s.s ! VInf> ; --# notpresent
|
||||
<Fut|Cond,Simul> => <sal_V.s ! vform, joinPrefix vp.s.hasPrefix vp.s.prefix (vp.s.s ! VInf)> ; --# notpresent
|
||||
<Fut|Cond,Anter> => <sal_V.s ! vform, vperf ++ auxv ! VInf> ; --# notpresent
|
||||
<Past, Simul> => case vp.s.hasPast of {
|
||||
True => <vp.s.s ! VPast, []> ;
|
||||
False => <hebben_V.s ! VPast, vperf>
|
||||
} ;
|
||||
<_, Anter> => <auxv ! vform, vperf> ; --# notpresent
|
||||
<_, Simul> => <vp.s.s ! vform, []>
|
||||
} ;
|
||||
fin = verb.p1 ;
|
||||
fin = case <t,a,o,vp.s.hasPast> of {
|
||||
<Pres,Simul,Sub,_> => joinPrefix vp.s.hasPrefix vp.s.prefix verb.p1 ;
|
||||
<Past,Simul,Sub,True> => joinPrefix vp.s.hasPrefix vp.s.prefix verb.p1 ;
|
||||
_ => verb.p1
|
||||
} ;
|
||||
neg = vp.a1 ! b ;
|
||||
tailNeg = case b of {Pos => [] ; Neg => "nie"} ;
|
||||
obj0 = vp.n0 ! agr ;
|
||||
obj = vp.n2 ! agr ;
|
||||
compl = obj0 ++ neg ++ obj ++ vp.a2 ++ vp.s.prefix ;
|
||||
pref = case <t,a,o,vp.s.hasPast> of {
|
||||
<Pres,Simul,Main|Inv,_> => vp.s.prefix ;
|
||||
<Past,Simul,Main|Inv,True> => vp.s.prefix ;
|
||||
_ => []
|
||||
} ;
|
||||
compl = obj0 ++ neg ++ obj ++ vp.a2 ++ pref ;
|
||||
inf =
|
||||
case <vp.isAux, vp.inf.p2, a> of { --# notpresent
|
||||
<True,True,Anter> => vp.s.s ! VInf ++ vp.inf.p1 ; --# notpresent
|
||||
_ => --# notpresent
|
||||
vp.inf.p1 ++ verb.p2 ++ neg
|
||||
_ => case <t,vp.s.aux,vp.inf.p2,vp.isAux> of {
|
||||
<Fut|Cond,VZijn,True,False> => vp.inf.p1 ++ verb.p2 ++ tailNeg ;
|
||||
_ => verb.p2 ++ vp.inf.p1 ++ tailNeg
|
||||
}
|
||||
} --# notpresent
|
||||
;
|
||||
extra = vp.ext ;
|
||||
inffin =
|
||||
case <a,vp.isAux> of { --# notpresent
|
||||
<Anter,True> => fin ++ inf ; -- double inf --# notpresent
|
||||
_ => --# notpresent
|
||||
inf ++ fin --- or just auxiliary vp
|
||||
} --# notpresent
|
||||
case <t,vp.isAux,vp.inf.p2,vp.s.hasPast> of {
|
||||
<Fut|Cond,_,_,_> => fin ++ inf ;
|
||||
<_,True,_,_> => fin ++ inf ;
|
||||
<Pres,False,True,False> => fin ++ inf ;
|
||||
_ => inf ++ fin
|
||||
}
|
||||
in
|
||||
case o of {
|
||||
Main => subj ++ fin ++ compl ++ inf ++ extra ;
|
||||
@@ -477,17 +518,34 @@ param
|
||||
VZijn => zijn_V
|
||||
} ;
|
||||
|
||||
-- Separable prefixes are joined to the verb in subordinate clauses and
|
||||
-- infinitives. An unconditional BIND is not safe here: with an empty
|
||||
-- prefix it binds the preceding constituent to the verb (e.g. *hy salgaan).
|
||||
joinPrefix : Bool -> Str -> Str -> Str = \has,p,v -> case has of {
|
||||
False => v ;
|
||||
True => p ++ BIND ++ v
|
||||
} ;
|
||||
|
||||
infVP : Bool -> VP -> ((Agr => Str) * Str * Str) = \isAux, vp ->
|
||||
<
|
||||
\\agr => vp.n0 ! agr ++ vp.n2 ! agr ++ vp.a2,
|
||||
vp.a1 ! Pos ++
|
||||
if_then_Str isAux [] "om" ++ "te" ++ vp.s.s ! VInf,
|
||||
case isAux of {
|
||||
True => joinPrefix vp.s.hasPrefix vp.s.prefix (vp.s.s ! VInf) ;
|
||||
False => "om" ++ vp.s.prefix ++ "te" ++ vp.s.s ! VInf
|
||||
},
|
||||
vp.inf.p1 ++ vp.ext
|
||||
> ;
|
||||
|
||||
useInfVP : Bool -> VP -> Str = \isAux,vp ->
|
||||
let vpi = infVP isAux vp in
|
||||
vpi.p1 ! agrP3 Sg ++ vpi.p3 ++ vpi.p2 ;
|
||||
let a = agrP3 Sg ;
|
||||
obj = vp.n0 ! a ++ vp.n2 ! a ++ vp.a2
|
||||
in case isAux of {
|
||||
True => obj ++ joinPrefix vp.s.hasPrefix vp.s.prefix (vp.s.s ! VInf) ++
|
||||
vp.inf.p1 ++ vp.ext ;
|
||||
False => "om" ++ obj ++ vp.s.prefix ++ "te" ++ vp.s.s ! VInf ++
|
||||
vp.inf.p1 ++ vp.ext
|
||||
} ;
|
||||
|
||||
reflPron : Agr => Str = table {
|
||||
{n = Sg ; p = P1} => "my" ; --afr
|
||||
|
||||
@@ -21,7 +21,7 @@ concrete SentenceAfr of Sentence = CatAfr ** open ResAfr, Prelude in {
|
||||
inf = vp.inf.p1 ;
|
||||
in
|
||||
verb ++ ps.p2 ++
|
||||
vp.n2 ! agr ++ vp.a1 ! pol ++ vp.a2 ++ inf ++ vp.ext
|
||||
vp.n2 ! agr ++ vp.a1 ! pol ++ vp.a2 ++ vp.s.prefix ++ inf ++ vp.ext
|
||||
} ;
|
||||
|
||||
SlashVP np vp =
|
||||
@@ -60,18 +60,24 @@ concrete SentenceAfr of Sentence = CatAfr ** open ResAfr, Prelude in {
|
||||
c2 = cl.c2
|
||||
} ;
|
||||
|
||||
AdvS a s = {s = \\o => a.s ++ s.s ! Inv} ;
|
||||
AdvS a s = {s = \\o => a.s ++ s.s ! case o of {
|
||||
Sub => Sub ;
|
||||
_ => Inv
|
||||
}} ;
|
||||
|
||||
ExtAdvS a s = {s = \\o => a.s ++ "," ++ s.s ! Inv} ;
|
||||
ExtAdvS a s = {s = \\o => a.s ++ bindComma ++ s.s ! case o of {
|
||||
Sub => Sub ;
|
||||
_ => Inv
|
||||
}} ;
|
||||
|
||||
SSubjS s1 subj s2 = {
|
||||
s = \\o => s1.s ! o ++ "," ++ subj.s ++ s2.s ! Sub
|
||||
s = \\o => s1.s ! o ++ bindComma ++ subj.s ++ s2.s ! Sub
|
||||
} ;
|
||||
|
||||
AdvImp adv imp = {
|
||||
s = \\p,i => adv.s ++ imp.s ! p ! i
|
||||
} ;
|
||||
|
||||
RelS s r = {s = \\o => s.s ! o ++ "," ++ r.s ! Neutr ! Sg} ;
|
||||
RelS s r = {s = \\o => s.s ! o ++ bindComma ++ r.s ! Neutr ! Sg} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -23,11 +23,11 @@ concrete StructuralAfr of Structural = CatAfr, Prelude **
|
||||
but_PConj = ss "maar" ;
|
||||
by8agent_Prep = mkPrep "deur" ;
|
||||
by8means_Prep = mkPrep "met" ;
|
||||
can8know_VV, can_VV = auxVV (mkV "kan" "kon") ;
|
||||
can8know_VV, can_VV = auxVV (mkV "kan" "kon" "gekon") ;
|
||||
during_Prep = mkPrep "tydens" ;
|
||||
either7or_DConj = {s1 = "òf" ; s2 = "òf" ; n = Pl} ;
|
||||
everybody_NP = mkNP "almal" Neutr Pl ; ----
|
||||
every_Det = mkDet "elke" "elk" Sg ; ----
|
||||
every_Det = mkDet "elke" "elke" Sg ;
|
||||
everything_NP = mkNP "alles" Neutr Sg ; ----
|
||||
everywhere_Adv = ss "oral" ;
|
||||
few_Det = mkDet "min" "min" Pl ;
|
||||
|
||||
@@ -78,7 +78,7 @@ concrete VerbAfr of Verb = CatAfr ** open Prelude, ResAfr in {
|
||||
CompAdv a = {s = \\_ => a.s} ;
|
||||
|
||||
AdvVP vp adv = insertAdv adv.s vp ;
|
||||
ExtAdvVP vp adv = insertAdv ("," ++ adv.s ++ ",") vp ;
|
||||
ExtAdvVP vp adv = insertAdv (embedInCommas adv.s) vp ;
|
||||
AdVVP adv vp = insertAdV adv.s vp ;
|
||||
|
||||
AdvVPSlash vp adv = vp ** {a2 = vp.a2 ++ adv.s} ;
|
||||
@@ -93,6 +93,7 @@ concrete VerbAfr of Verb = CatAfr ** open Prelude, ResAfr in {
|
||||
---- workaround for a subtyping bug
|
||||
oper
|
||||
v2v : VVerb -> VVerb = \v ->
|
||||
{s = v.s ; aux = v.aux ; prefix = v.prefix ; vtype = v.vtype} ;
|
||||
{s = v.s ; aux = v.aux ; prefix = v.prefix ; hasPrefix = v.hasPrefix ;
|
||||
hasPast = v.hasPast ; vtype = v.vtype} ;
|
||||
predVv : VVerb -> ResAfr.VP = \v -> predV (v2v v) ;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user