mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-05-28 01:18:57 -06:00
Merge pull request #266 from inariksit/somali
(Som) Take passive out of Prep + add reflexive as PrepAgr + update tests
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
concrete AdverbSom of Adverb = CatSom ** open ResSom, ParamSom, Prelude in {
|
concrete AdverbSom of Adverb = CatSom ** open ResSom, ParamSom, ParadigmsSom, Prelude in {
|
||||||
|
|
||||||
lin
|
lin
|
||||||
|
|
||||||
@@ -24,15 +24,10 @@ lin
|
|||||||
-- Subordinate clauses can function as adverbs.
|
-- Subordinate clauses can function as adverbs.
|
||||||
|
|
||||||
-- : Subj -> S -> Adv ;
|
-- : Subj -> S -> Adv ;
|
||||||
-- SubjS subj s = {} ;
|
SubjS subj s = mkAdv (subj.s ++ s.s ! True) ;
|
||||||
|
|
||||||
-- Comparison adverbs also work as numeral adverbs.
|
-- Comparison adverbs also work as numeral adverbs.
|
||||||
|
|
||||||
--AdnCAdv : CAdv -> AdN ; -- less (than five)
|
--AdnCAdv : CAdv -> AdN ; -- less (than five)
|
||||||
--AdnCAdv cadv = {s = } ;
|
--AdnCAdv cadv = {s = } ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
{-
|
|
||||||
gt PrepNP in_Prep (DetCN (DetQuant DefArt ?) (UseN ?) | l -bind
|
|
||||||
gt PrepNP from_Prep (DetCN (DetQuant DefArt ?) (UseN ?)) | l -bind
|
|
||||||
-}
|
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ concrete CatSom of Cat = CommonX - [Adv] ** open ResSom, Prelude in {
|
|||||||
-- Constructed in SentenceSom, and also in IdiomSom
|
-- Constructed in SentenceSom, and also in IdiomSom
|
||||||
|
|
||||||
S = ResSom.Sentence ;
|
S = ResSom.Sentence ;
|
||||||
QS = ResSom.Sentence ;
|
QS = SS ;
|
||||||
RS = { s : Agreement => Str } ;
|
RS = {s : {-Agreement =>-} Str} ; -- TODO
|
||||||
-- relative sentence. Tense and polarity fixed,
|
-- relative sentence. Tense and polarity fixed,
|
||||||
-- but agreement may depend on the CN/NP it modifies.
|
-- but agreement may depend on the CN/NP it modifies.
|
||||||
|
|
||||||
@@ -28,11 +28,9 @@ concrete CatSom of Cat = CommonX - [Adv] ** open ResSom, Prelude in {
|
|||||||
IDet = ResSom.Determiner ; -- interrogative determiner e.g. "how many"
|
IDet = ResSom.Determiner ; -- interrogative determiner e.g. "how many"
|
||||||
IQuant = ResSom.Quant ; -- interrogative quantifier e.g. "which"
|
IQuant = ResSom.Quant ; -- interrogative quantifier e.g. "which"
|
||||||
|
|
||||||
--2 Relative clauses and pronouns
|
--2 Subord clauses and pronouns
|
||||||
|
|
||||||
-- Constructed in RelativeSom.
|
RCl = ResSom.QClause ;
|
||||||
|
|
||||||
RCl = ResSom.RClause ;
|
|
||||||
RP = SS ;
|
RP = SS ;
|
||||||
|
|
||||||
--2 Verb phrases
|
--2 Verb phrases
|
||||||
@@ -85,7 +83,7 @@ concrete CatSom of Cat = CommonX - [Adv] ** open ResSom, Prelude in {
|
|||||||
|
|
||||||
-- Constructed in StructuralSom.
|
-- Constructed in StructuralSom.
|
||||||
Conj = { s1,s2 : Str ; n : Number } ;
|
Conj = { s1,s2 : Str ; n : Number } ;
|
||||||
Subj = { s : Str ; isPre : Bool } ; --ba+dut vs. dut+en
|
Subj = SS ;
|
||||||
Prep = ResSom.Prep ** {c2 : Preposition ; berri, sii, dhex : Str} ;
|
Prep = ResSom.Prep ** {c2 : Preposition ; berri, sii, dhex : Str} ;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,15 @@
|
|||||||
--# -path=.:../common:../abstract
|
--# -path=.:../common:../abstract
|
||||||
|
|
||||||
concrete ExtendSom of Extend = {} ;
|
concrete ExtendSom of Extend = CatSom
|
||||||
-- CatSom ** ExtendFunctor
|
-- ** ExtendFunctor -- Add this back when all relevant functions are implemented
|
||||||
-- with (Grammar=GrammarSom)
|
-- with (Grammar=GrammarSom)
|
||||||
-- ** open Prelude, ResSom in {
|
** open Prelude, ResSom in {
|
||||||
-- } ;
|
|
||||||
|
lin
|
||||||
|
-- : NP -> SSlash -> Utt ; -- her I love -- Sayeed p. 189-
|
||||||
|
FocusObj np sslash =
|
||||||
|
|
||||||
|
-- FocusAdv : Adv -> S -> Utt ; -- today I will sleep
|
||||||
|
-- FocusAdV : AdV -> S -> Utt ; -- never will I sleep
|
||||||
|
-- FocusAP : AP -> NP -> Utt ; -- green was the tree
|
||||||
|
} ;
|
||||||
|
|||||||
@@ -69,7 +69,9 @@ concrete NounSom of Noun = CatSom ** open ResSom, Prelude in {
|
|||||||
--AdvNP,ExtAdvNP = \np,adv -> np ** {} ; --adverbs are complicated
|
--AdvNP,ExtAdvNP = \np,adv -> np ** {} ; --adverbs are complicated
|
||||||
|
|
||||||
-- : NP -> RS -> NP ; -- Paris, which is here
|
-- : NP -> RS -> NP ; -- Paris, which is here
|
||||||
-- RelNP np rs = np ** { s = \\c => rs.s ! np.agr ++ np.s ! c } ;
|
RelNP np rs = np ** {
|
||||||
|
s = \\c => np.s ! c ++ rs.s
|
||||||
|
} ;
|
||||||
|
|
||||||
-- Determiners can form noun phrases directly.
|
-- Determiners can form noun phrases directly.
|
||||||
|
|
||||||
@@ -225,11 +227,13 @@ concrete NounSom of Noun = CatSom ** open ResSom, Prelude in {
|
|||||||
hasMod = True
|
hasMod = True
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
{-
|
|
||||||
-- : CN -> RS -> CN ;
|
-- : CN -> RS -> CN ;
|
||||||
RelCN cn rs = cn ** { } ;
|
RelCN cn rs = cn ** {
|
||||||
|
mod = \\n,c => cn.mod ! n ! c ++ rs.s
|
||||||
|
} ;
|
||||||
|
|
||||||
|
{-
|
||||||
-- : CN -> Adv -> CN ;
|
-- : CN -> Adv -> CN ;
|
||||||
AdvCN cn adv = cn ** { } ;
|
AdvCN cn adv = cn ** { } ;
|
||||||
|
|
||||||
|
|||||||
@@ -141,7 +141,7 @@ param
|
|||||||
| Sg2_Prep
|
| Sg2_Prep
|
||||||
| Pl1_Prep Inclusion
|
| Pl1_Prep Inclusion
|
||||||
| Pl2_Prep
|
| Pl2_Prep
|
||||||
| Impers_Prep
|
| Reflexive_Prep
|
||||||
| P3_Prep ;
|
| P3_Prep ;
|
||||||
|
|
||||||
State = Definite | Indefinite ;
|
State = Definite | Indefinite ;
|
||||||
@@ -159,7 +159,6 @@ oper
|
|||||||
agr2pagr : Agreement -> PrepAgr = \a -> case a of {
|
agr2pagr : Agreement -> PrepAgr = \a -> case a of {
|
||||||
Sg1 => Sg1_Prep ;
|
Sg1 => Sg1_Prep ;
|
||||||
Sg2 => Sg2_Prep ;
|
Sg2 => Sg2_Prep ;
|
||||||
Impers => Impers_Prep ;
|
|
||||||
Pl1 i => Pl1_Prep i ;
|
Pl1 i => Pl1_Prep i ;
|
||||||
Pl2 => Pl2_Prep ;
|
Pl2 => Pl2_Prep ;
|
||||||
_ => P3_Prep
|
_ => P3_Prep
|
||||||
@@ -193,41 +192,35 @@ param
|
|||||||
|
|
||||||
param
|
param
|
||||||
Preposition = U | Ku | Ka | La | NoPrep ;
|
Preposition = U | Ku | Ka | La | NoPrep ;
|
||||||
PrepositionPlus = P Preposition
|
|
||||||
| Passive ; -- Hack: RGL only supports V2s as passive, so I can reuse V2's preposition slot for passives as well, and save >200 parameters. (Don't ask.)
|
|
||||||
|
|
||||||
PrepCombination = Ugu | Uga | Ula | Kaga | Kula | Kala
|
PrepCombination = Ugu | Uga | Ula | Kaga | Kula | Kala
|
||||||
| Lagu -- laygu, lagugu, nalagu, laydinku
|
| Passive | Lagu | Laga | Loo | Lala -- TODO all combinations with impersonal la
|
||||||
| Laga -- layga, lagaa, nalaga, laydinka
|
| Single Preposition ;
|
||||||
-- | TODO rest of combinations with impersonal-la
|
|
||||||
-- | TODO incorporate reflexive too
|
|
||||||
| Single PrepositionPlus ;
|
|
||||||
|
|
||||||
oper
|
oper
|
||||||
combine : PrepositionPlus -> Preposition -> PrepCombination = \p1,p2 ->
|
combine : (isPassive : Bool) -> Preposition -> Preposition -> PrepCombination = \isPass,p1,p2 ->
|
||||||
let oneWay : PrepositionPlus => Preposition => PrepCombination =
|
let oneWay : Preposition => Preposition => PrepCombination =
|
||||||
\\x,y => case <x,y> of {
|
\\x,y => case <isPass,x,y> of {
|
||||||
<Passive,NoPrep> => Single Passive ;
|
<True,NoPrep,NoPrep> => Passive ;
|
||||||
<Passive,Ku> => Lagu ;
|
<True,Ku,NoPrep> => Lagu ;
|
||||||
<Passive,Ka> => Laga ;
|
<True,Ka,NoPrep> => Laga ;
|
||||||
<Passive,p> => Single (P p) ; -- TODO rest of combinations
|
<True,U,NoPrep> => Loo ;
|
||||||
<P z,_> => case <z,y> of {
|
<True,p,_> => Single p ; -- TODO all combinations
|
||||||
<U,U|Ku> => Ugu ;
|
<False,_,_> => case <x,y> of {
|
||||||
<U,Ka> => Uga ;
|
<U,U|Ku> => Ugu ;
|
||||||
<U,La> => Ula ;
|
<U,Ka> => Uga ;
|
||||||
<Ku|Ka,
|
<U,La> => Ula ;
|
||||||
Ku|Ka> => Kaga ;
|
<Ku|Ka,
|
||||||
<Ku,La> => Kula ;
|
Ku|Ka> => Kaga ;
|
||||||
<Ka,La> => Kala ;
|
<Ku,La> => Kula ;
|
||||||
<NoPrep,p> => Single (P p) ;
|
<Ka,La> => Kala ;
|
||||||
<p,NoPrep> => Single x ;
|
<NoPrep,p> => Single p ;
|
||||||
<p,_> => Single x }} -- for trying both ways
|
<p,NoPrep> => Single x ;
|
||||||
in case oneWay ! P p2 ! (pp2prep p1) of {
|
<p,_> => Single x }} -- for trying both ways
|
||||||
|
in case oneWay ! p2 ! p1 of {
|
||||||
Single _ => oneWay ! p1 ! p2 ;
|
Single _ => oneWay ! p1 ! p2 ;
|
||||||
z => z } ;
|
z => z } ;
|
||||||
|
|
||||||
pp2prep : PrepositionPlus -> Preposition = \pp ->
|
|
||||||
case pp of {P p => p ; _ => NoPrep} ;
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
-- Verbs
|
-- Verbs
|
||||||
|
|
||||||
@@ -287,4 +280,12 @@ oper
|
|||||||
Sg2|Sg3 Fem => Sg2_Sg3Fem ;
|
Sg2|Sg3 Fem => Sg2_Sg3Fem ;
|
||||||
Pl1 _ => Pl1_ ; Pl2 => Pl2_ ; Pl3 => Pl3_
|
Pl1 _ => Pl1_ ; Pl2 => Pl2_ ; Pl3 => Pl3_
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- Clauses
|
||||||
|
|
||||||
|
param
|
||||||
|
|
||||||
|
ClType = Statement | Question | Subord ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ concrete PhraseSom of Phrase = CatSom ** open Prelude, ResSom in {
|
|||||||
lin
|
lin
|
||||||
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
|
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
|
||||||
|
|
||||||
UttS s = s ;
|
UttS s = {s = s.s ! False} ;
|
||||||
UttQS qs = qs ;
|
UttQS qs = qs ;
|
||||||
|
|
||||||
UttImpSg pol imp =
|
UttImpSg pol imp =
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ concrete QuestionSom of Question = CatSom ** open
|
|||||||
|
|
||||||
lin
|
lin
|
||||||
-- : Cl -> QCl ;
|
-- : Cl -> QCl ;
|
||||||
QuestCl cl = {s = cl.s ! True} ;
|
QuestCl cl = {s = cl.s ! Question} ;
|
||||||
|
|
||||||
-- : IP -> VP -> QCl ;
|
-- : IP -> VP -> QCl ;
|
||||||
-- QuestVP ip vp = ;
|
-- QuestVP ip vp = ;
|
||||||
|
|||||||
@@ -1,36 +1,36 @@
|
|||||||
concrete RelativeSom of Relative = CatSom ** open
|
concrete RelativeSom of Relative = CatSom ** open
|
||||||
ResSom, Prelude, (NS=NounSom), (SS=StructuralSom) in {
|
ResSom, Prelude, (NS=NounSom), (SS=StructuralSom) in {
|
||||||
|
|
||||||
{-
|
|
||||||
lin
|
lin
|
||||||
-- : Cl -> RCl ; -- such that John loves her
|
-- : Cl -> RCl ; -- such that John loves her
|
||||||
RelCl cl = { } ;
|
-- RelCl cl = {s = cl.s ! Subord} ;
|
||||||
|
|
||||||
|
{-
|
||||||
-- Sayeed p. 95-96 + ch 8
|
-- Sayeed p. 95-96 + ch 8
|
||||||
Reduced present general in relative clauses; as absolutive
|
Reduced present general in relative clauses; as absolutive
|
||||||
1/2SG/3SG M/2PL/3PL sugá -- same as imperative (TODO check if for all conjugations)
|
1/2SG/3SG M/2PL/3PL sugá -- same as imperative (TODO check if for all conjugations)
|
||||||
3 SG F sugtá -- doesn't exist
|
3 SG F sugtá -- not yet in the grammar
|
||||||
1PL sugná -- doesn't exist
|
1PL sugná -- not yet in the grammar
|
||||||
|
|
||||||
|
(18) (a) nimánka buugágga keená men-the books-the bring
|
||||||
|
'the men who bring the books'
|
||||||
|
(b) buugágga nimanku keenàan
|
||||||
|
books-the men-the bring 'the books which the men bring'
|
||||||
|
-}
|
||||||
-- : RP -> VP -> RCl ;
|
-- : RP -> VP -> RCl ;
|
||||||
RelVP rp vp = ;
|
RelVP rp vp = RelSlash rp (predVPSlash emptyNP vp) ;
|
||||||
|
|
||||||
-- : RP -> ClSlash -> RCl ; -- whom John loves
|
-- : RP -> ClSlash -> RCl ; -- whom John loves
|
||||||
RelSlash rp cls = ;
|
RelSlash rp cls = {
|
||||||
|
s = \\t,a,p => rp.s ++ cls.s ! True ! t ! a ! p
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
-- : RP ;
|
-- : RP ;
|
||||||
IdRP = { s = "" } ;
|
IdRP = {s = "waxa"} ;
|
||||||
|
|
||||||
-- : Prep -> NP -> RP -> RP ; -- the mother of whom
|
-- : Prep -> NP -> RP -> RP ; -- the mother of whom
|
||||||
FunRP prep np rp = { s = applyPost prep whom ++ np.s ! Abs }
|
--FunRP prep np rp = {} ;
|
||||||
where { num = case np.agr of {
|
|
||||||
Sg3 _ => NS.NumSg ;
|
|
||||||
_ => NS.NumPl } ;
|
|
||||||
whom = NS.DetNP (NS.DetQuant SS.which_IQuant num) } ;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -324,66 +324,71 @@ oper
|
|||||||
|
|
||||||
Prep : Type = {s : PrepAgr => Str} ;
|
Prep : Type = {s : PrepAgr => Str} ;
|
||||||
|
|
||||||
mkPrep : (x1,_,_,_,_,x6 : Str) -> Prep = \ku,ii,kuu,noo,idiin,loo -> {
|
mkPrep : (x1,_,_,_,_,x6 : Str) -> Prep = \ku,ii,kuu,noo,idiin,isku -> {
|
||||||
s = table {
|
s = table {
|
||||||
|
P3_Prep => ku ;
|
||||||
Sg1_Prep => ii ;
|
Sg1_Prep => ii ;
|
||||||
Sg2_Prep => kuu ;
|
Sg2_Prep => kuu ;
|
||||||
Pl2_Prep => idiin ;
|
Pl2_Prep => idiin ;
|
||||||
Pl1_Prep Excl => noo ;
|
Pl1_Prep Excl => noo ;
|
||||||
Pl1_Prep Incl => "i" + noo ;
|
Pl1_Prep Incl => "i" + noo ;
|
||||||
Impers_Prep => loo ;
|
Reflexive_Prep => isku
|
||||||
P3_Prep => ku
|
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
prep : Preposition -> (Prep ** {c2 : Preposition}) = \p -> prepTable ! P p ** {c2 = p} ;
|
prep : Preposition -> (Prep ** {c2 : Preposition}) = \p -> prepTable ! p ** {c2 = p} ;
|
||||||
|
|
||||||
prepTable : PrepositionPlus => Prep = table {
|
prepTable : Preposition => Prep = table {
|
||||||
P Ku => mkPrep "ku" "igu" "kugu" "nagu" "idinku" "lagu" ;
|
Ku => mkPrep "ku" "igu" "kugu" "nagu" "idinku" "isku" ;
|
||||||
P Ka => mkPrep "ka" "iga" "kaa" "naga" "idinka" "laga" ;
|
Ka => mkPrep "ka" "iga" "kaa" "naga" "idinka" "iska" ;
|
||||||
P La => mkPrep "la" "ila" "kula" "nala" "idinla" "lala" ;
|
La => mkPrep "la" "ila" "kula" "nala" "idinla" "isla" ;
|
||||||
P U => mkPrep "u" "ii" "kuu" "noo" "idiin" "loo" ;
|
U => mkPrep "u" "ii" "kuu" "noo" "idiin" "isu" ;
|
||||||
P NoPrep => mkPrep [] "i" "ku" "na" "idin" "la" ;
|
_ => mkPrep [] "i" "ku" "na" "idin" "is"
|
||||||
-- impersonal subject clitic combining with object clitics.
|
|
||||||
Passive => mkPrep "la" "la i" "lagu" "nala" "laydin" "la"
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
prepCombTable : PrepAgr => PrepCombination => Str = table {
|
prepCombTable : PrepAgr => PrepCombination => Str = table {
|
||||||
Sg1_Prep => table { Ugu => "iigu" ; Uga => "iiga" ;
|
Sg1_Prep => table {
|
||||||
Ula => "iila" ; Kaga => "igaga" ;
|
Ugu => "iigu" ; Uga => "iiga" ; Ula => "iila" ;
|
||||||
Kula => "igula" ; Kala => "igala" ;
|
Kaga => "igaga" ; Kula => "igula" ; Kala => "igala" ;
|
||||||
|
Passive => "la i" ; Loo => "la ii" ; Lala => "la ila" ;
|
||||||
Lagu => "laygu" ; Laga => "layga" ;
|
Lagu => "laygu" ; Laga => "layga" ;
|
||||||
Single p => (prepTable ! p).s ! Sg1_Prep } ;
|
Single p => (prepTable ! p).s ! Sg1_Prep } ;
|
||||||
Sg2_Prep => table { Ugu => "kuugu" ; Uga => "kaaga" ;
|
Sg2_Prep => table { Ugu => "kuugu" ; Uga => "kaaga" ; Ula => "kuula" ;
|
||||||
Ula => "kuula" ; Kaga => "kaaga" ;
|
Kaga => "kaaga" ; Kula => "kugula" ; Kala => "kaala" ;
|
||||||
Kula => "kugula" ; Kala => "kaala" ;
|
Passive => "lagu" ; Loo => "laguu" ; Lala => "lagula" ;
|
||||||
Lagu => "lagugu" ; Laga => "lagaa" ;
|
Lagu => "lagugu" ; Laga => "lagaa" ;
|
||||||
Single p => (prepTable ! p).s ! Sg2_Prep } ;
|
Single p => (prepTable ! p).s ! Sg2_Prep } ;
|
||||||
Pl1_Prep Excl =>
|
Pl1_Prep Excl =>
|
||||||
table { Ugu => "noogu" ; Uga => "nooga" ;
|
table { Ugu => "noogu" ; Uga => "nooga" ; Ula => "noola" ;
|
||||||
Ula => "noola" ; Kaga => "nagaga" ;
|
Kaga => "nagaga" ; Kula => "nagula" ; Kala => "nagala" ;
|
||||||
Kula => "nagula" ; Kala => "nagala" ;
|
Passive => "nala" ; Loo => "???" ; Lala => "???" ;
|
||||||
Lagu => "nalagu" ; Laga => "nalaga" ;
|
Lagu => "nalagu" ; Laga => "nalaga" ;
|
||||||
Single p => (prepTable ! p).s ! Pl1_Prep Excl } ;
|
Single p => (prepTable ! p).s ! Pl1_Prep Excl } ;
|
||||||
Pl1_Prep Incl =>
|
Pl1_Prep Incl =>
|
||||||
table { Ugu => "inoogu" ; Uga => "inooga" ;
|
table { Ugu => "inoogu" ; Uga => "inooga" ; Ula => "inoola" ;
|
||||||
Ula => "inoola" ; Kaga => "inagaga" ;
|
Kaga => "inagaga" ; Kula => "inagula" ; Kala => "inagala" ;
|
||||||
Kula => "inagula" ; Kala => "inagala" ;
|
Passive => "inala" ; Loo => "???" ; Lala => "???" ;
|
||||||
Lagu => "inalagu" ; Laga => "inalaga" ;
|
Lagu => "inalagu" ; Laga => "inalaga" ;
|
||||||
Single p => (prepTable ! p).s ! Pl1_Prep Incl } ;
|
Single p => (prepTable ! p).s ! Pl1_Prep Incl } ;
|
||||||
Pl2_Prep => table { Ugu => "idiinku" ; Uga => "idiinka" ;
|
Pl2_Prep => table { Ugu => "idiinku" ; Uga => "idiinka" ; Ula => "idiinla" ;
|
||||||
Ula => "idiinla" ; Kaga => "idinkaga" ;
|
Kaga => "idinkaga" ; Kula => "idinkula" ; Kala => "idinkala" ;
|
||||||
Kula => "idinkula" ; Kala => "idinkala" ;
|
Passive => "laydin" ; Loo => "laydiin" ; Lala => "laydinla" ;
|
||||||
Lagu => "laydinku" ; Laga => "laydinka" ;
|
Lagu => "laydinku" ; Laga => "laydinka" ;
|
||||||
Single p => (prepTable ! p).s ! Pl2_Prep } ;
|
Single p => (prepTable ! p).s ! Pl2_Prep } ;
|
||||||
Impers_Prep =>
|
-- Impers_Prep => -- TODO: put these later into other tables
|
||||||
table { Ugu => "loogu" ; Uga => "looga" ;
|
-- table { Ugu => "loogu" ; Uga => "looga" ;
|
||||||
Ula => "loola" ; Kaga => "lagaga" ;
|
-- Ula => "loola" ; Kaga => "lagaga" ;
|
||||||
Kula => "lagula" ; Kala => "lagala" ;
|
-- Kula => "lagula" ; Kala => "lagala" ;
|
||||||
Lagu => "lagu" ; Laga => "laga" ; -- TODO check
|
-- Passive => "la" ;
|
||||||
Single p => (prepTable ! p).s ! Impers_Prep } ;
|
-- Lagu => "lagu" ; Laga => "laga" ; } ;
|
||||||
a => table { Ugu => "ugu" ; Uga => "uga" ;
|
Reflexive_Prep => -- TODO check every form
|
||||||
Ula => "ula" ; Kaga => "kaga" ;
|
table { Ugu => "isugu" ; Uga => "isuga" ; Ula => "isula" ;
|
||||||
Kula => "kula" ; Kala => "kala" ;
|
Kaga => "iskaga" ; Kula => "iskula" ; Kala => "iskala" ;
|
||||||
|
Passive => "lays" ; Loo => "???" ; Lala => "???" ;
|
||||||
|
Lagu => "laysku" ; Laga => "layska" ;
|
||||||
|
Single p => (prepTable ! p).s ! Reflexive_Prep } ;
|
||||||
|
a => table { Ugu => "ugu" ; Uga => "uga" ; Ula => "ula" ;
|
||||||
|
Kaga => "kaga" ; Kula => "kula" ; Kala => "kala" ;
|
||||||
|
Passive => "la" ; Loo => "loo" ; Lala => "lala" ;
|
||||||
Lagu => "lagu" ; Laga => "laga" ;
|
Lagu => "lagu" ; Laga => "laga" ;
|
||||||
Single p => (prepTable ! p).s ! a }
|
Single p => (prepTable ! p).s ! a }
|
||||||
} ;
|
} ;
|
||||||
@@ -652,12 +657,12 @@ oper
|
|||||||
|
|
||||||
VerbPhrase : Type = BaseVerb ** Complement ** BaseAdv ** {
|
VerbPhrase : Type = BaseVerb ** Complement ** BaseAdv ** {
|
||||||
-- Prepositions can combine together and with object pronoun.
|
-- Prepositions can combine together and with object pronoun.
|
||||||
c2 : PrepositionPlus ; -- hack to implement passives more efficiently:
|
isPassive : Bool ;
|
||||||
c3 : Preposition ; -- if c2 is Passive, the real preposition is in c3.
|
c2,c3 : Preposition ; -- if c2 is Passive, the real preposition is in c3.
|
||||||
obj2 : NPLite ; -- {s : Str ; a : PrepAgr}
|
obj2 : NPLite ; -- {s : Str ; a : PrepAgr}
|
||||||
secObj : Str ; -- if two overt pronoun objects
|
secObj : Str ; -- if two overt pronoun objects
|
||||||
vComp : Str ; -- VV complement
|
vComp : Str ; -- VV complement
|
||||||
refl : Str ; -- reflexive is put here, if the verb has an obj2.
|
-- refl : Str ; -- reflexive is put here, if the verb has an obj2.
|
||||||
miscAdv : Str ; -- dump for any other kind of adverb, that isn't
|
miscAdv : Str ; -- dump for any other kind of adverb, that isn't
|
||||||
} ; -- in a closed class of particles or made with PrepNP.
|
} ; -- in a closed class of particles or made with PrepNP.
|
||||||
|
|
||||||
@@ -667,37 +672,37 @@ oper
|
|||||||
comp = \\_ => <[],[]> ;
|
comp = \\_ => <[],[]> ;
|
||||||
pred = NoPred ;
|
pred = NoPred ;
|
||||||
vComp,berri,miscAdv,refl = [] ;
|
vComp,berri,miscAdv,refl = [] ;
|
||||||
c2 = P NoPrep ;
|
c2, c3 = NoPrep ;
|
||||||
c3 = NoPrep ;
|
isPassive = False ;
|
||||||
obj2 = {s = [] ; a = P3_Prep} ;
|
obj2 = {s = [] ; a = P3_Prep} ;
|
||||||
secObj = []
|
secObj = []
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
useVc : Verb2 -> VPSlash = \v2 -> useV v2 ** {
|
useVc : Verb2 -> VPSlash = \v2 -> useV v2 ** {
|
||||||
c2 = P v2.c2
|
c2 = v2.c2
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
passV2 : Verb2 -> VerbPhrase = \v2 -> passVP (useV v2) ;
|
passV2 : Verb2 -> VerbPhrase = \v2 -> passVP (useV v2) ;
|
||||||
|
|
||||||
passVP : VerbPhrase -> VerbPhrase = \vp -> vp ** {
|
passVP : VerbPhrase -> VerbPhrase = \vp -> vp ** {
|
||||||
c2 = Passive ;
|
isPassive = True ;
|
||||||
c3 = pp2prep vp.c2 ;
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
complSlash : VPSlash -> VerbPhrase = \vps -> let np = vps.obj2 in vps ** {
|
complSlash : VPSlash -> VerbPhrase = \vps -> let np = vps.obj2 in vps ** {
|
||||||
comp = \\agr => let cmp = vps.comp ! agr in
|
comp = \\agr => let cmp = vps.comp ! agr in
|
||||||
{p1 = np.s ++ cmp.p1 ; -- if object is a noun, it will come before verb in the sentence.
|
{p1 = np.s ++ cmp.p1 ; -- if object is a noun, it will come before verb in the sentence.
|
||||||
-- if object is a pronoun, np.s is empty.
|
-- if object is a pronoun, np.s is empty.
|
||||||
p2 = cmp.p2 ++ vps.refl ++ compl np.a vps} -- object combines with the preposition of the verb.
|
p2 = cmp.p2 ++ compl np.a vps} -- object combines with the preposition of the verb.
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
compl : PrepAgr -> VerbPhrase -> Str = \agr,vp ->
|
compl : PrepAgr -> VerbPhrase -> Str = \agr,vp ->
|
||||||
prepCombTable ! agr ! combine vp.c2 vp.c3 ;
|
prepCombTable ! agr ! combine vp.isPassive vp.c2 vp.c3 ;
|
||||||
|
|
||||||
insertRefl : VPSlash -> VPSlash = \vps ->
|
insertRefl : VPSlash -> VPSlash = \vps -> vps ** {
|
||||||
case <vps.c2,vps.c3> of {
|
obj2 = vps.obj2 ** {a = Reflexive_Prep} ;
|
||||||
<P NoPrep,NoPrep> => vps ** {refl = "is"} ; -- NB. if AdvVP is called after ReflVP, vps.c2 may change.
|
|
||||||
_ => vps ** {refl = "is" ++ BIND}
|
-- If old obj2 was something else than P3, it is now shown in secObj
|
||||||
|
secObj = vps.secObj ++ secondObject ! vps.obj2.a ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
insertComp : VPSlash -> NounPhrase -> VerbPhrase = \vp,np ->
|
insertComp : VPSlash -> NounPhrase -> VerbPhrase = \vp,np ->
|
||||||
@@ -727,8 +732,8 @@ oper
|
|||||||
NoPrep => vp ** adv'' ; -- the adverb is not formed with PrepNP, e.g. "tomorrow"
|
NoPrep => vp ** adv'' ; -- the adverb is not formed with PrepNP, e.g. "tomorrow"
|
||||||
_ => case <vp.c2,vp.c3> of {
|
_ => case <vp.c2,vp.c3> of {
|
||||||
-- if free complement slots, introduce adv.np with insertComp
|
-- if free complement slots, introduce adv.np with insertComp
|
||||||
<P NoPrep,_> => insertCompAgrPlus (vp ** {c2 = P adv.c2}) adv.np ** adv' ;
|
<NoPrep,_> => insertCompAgrPlus (vp ** {c2 = adv.c2}) adv.np ** adv' ;
|
||||||
<_ ,NoPrep> => insertCompAgrPlus (vp ** {c3 = adv.c2}) adv.np ** adv' ;
|
<_,NoPrep> => insertCompAgrPlus (vp ** {c3 = adv.c2}) adv.np ** adv' ;
|
||||||
|
|
||||||
-- if complement slots are full, just insert strings.
|
-- if complement slots are full, just insert strings.
|
||||||
_ => vp ** adv''
|
_ => vp ** adv''
|
||||||
@@ -739,51 +744,53 @@ oper
|
|||||||
dhex = vp.dhex ++ adv.dhex ;
|
dhex = vp.dhex ++ adv.dhex ;
|
||||||
berri = vp.berri ++ adv.berri } ;
|
berri = vp.berri ++ adv.berri } ;
|
||||||
adv'' : {sii,dhex,berri,miscAdv : Str} -- adv.np inserted into miscAdv
|
adv'' : {sii,dhex,berri,miscAdv : Str} -- adv.np inserted into miscAdv
|
||||||
= adv' ** {dhex = (prepTable ! P adv.c2).s ! adv.np.a ++ adv.dhex ;
|
= adv' ** {dhex = (prepTable ! adv.c2).s ! adv.np.a ++ adv.dhex ;
|
||||||
miscAdv = adv.np.s}
|
miscAdv = adv.np.s}
|
||||||
} ;
|
} ;
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
-- Sentences etc.
|
-- Sentences etc.
|
||||||
Clause : Type = {s : Bool {-is question-} => Tense => Anteriority => Polarity => Str} ;
|
Clause : Type = {s : ClType => Tense => Anteriority => Polarity => Str} ;
|
||||||
QClause : Type = {s : Tense => Anteriority => Polarity => Str} ;
|
QClause : Type = {s : Tense => Anteriority => Polarity => Str} ;
|
||||||
RClause,
|
ClSlash : Type = {s : Bool {-is subordinate-} => Tense => Anteriority => Polarity => Str} ;
|
||||||
ClSlash,
|
Sentence : Type = {s : Bool {-is subordinate-} => Str} ;
|
||||||
Sentence : Type = SS ; ---- TODO
|
|
||||||
|
predVPSlash : NounPhrase -> VPSlash -> ClSlash = \np,vps ->
|
||||||
|
let cl = predVP np vps in {s = table {
|
||||||
|
True => cl.s ! Subord ;
|
||||||
|
False => cl.s ! Statement }
|
||||||
|
} ;
|
||||||
|
|
||||||
predVP : NounPhrase -> VerbPhrase -> Clause = \np,vps -> {
|
predVP : NounPhrase -> VerbPhrase -> Clause = \np,vps -> {
|
||||||
s = \\isQ,t,a,p =>
|
s = \\cltyp,t,a,p =>
|
||||||
let predRaw : {fin : Str ; inf : Str} = vf t a p subj.a vp ;
|
let predRaw : {fin : Str ; inf : Str} = vf cltyp t a p subj.a vp ;
|
||||||
pred : {fin : Str ; inf : Str} = case <isQ,p,vp.pred> of {
|
pred : {fin : Str ; inf : Str} = case <cltyp,p,vp.pred> of {
|
||||||
<False,Pos,NoCopula> => {fin,inf = []} ;
|
<Statement,Pos,NoCopula> => {fin,inf = []} ;
|
||||||
<_ , _,Copula> => {fin = presCopula ! {agr=subj.a ; pol=p} ; inf=[]} ;
|
<_ , _, Copula> => {fin = presCopula ! {agr=subj.a ; pol=p} ; inf=[]} ;
|
||||||
_ => predRaw
|
_ => predRaw
|
||||||
} ;
|
} ;
|
||||||
subjnoun : Str = if_then_Str np.isPron np.empty (subj.s ! Nom) ;
|
subjnoun : Str = if_then_Str np.isPron np.empty (subj.s ! Nom) ;
|
||||||
subjpron : Str = if_then_Str np.isPron (subj.s ! Nom) np.empty ;
|
subjpron : Str = if_then_Str np.isPron (subj.s ! Nom) np.empty ;
|
||||||
obj : {p1,p2 : Str} =
|
obj : {p1,p2 : Str} =
|
||||||
let o : {p1,p2 : Str} = vp.comp ! subj.a ;
|
let o : {p1,p2 : Str} = vp.comp ! subj.a ;
|
||||||
bind : Str = case <isP3 vp.obj2.a, vp.c2> of {
|
bind : Str = case <vp.isPassive,vp.obj2.a, vp.c2, vp.pred> of {
|
||||||
<True,P NoPrep> => [] ;
|
<False,P3_Prep,NoPrep,NoPred> => [] ;
|
||||||
_ => BIND } ;
|
_ => BIND } ;
|
||||||
in case p of {
|
in case p of {
|
||||||
Pos => o ;
|
Pos => o ;
|
||||||
Neg => {p2 = [] ; p1 = o.p1 ++ o.p2 ++ bind} -- object pronoun, prepositions and negation all contract
|
Neg => {p2 = [] ; p1 = o.p1 ++ o.p2 ++ bind} -- object pronoun, prepositions and negation all contract
|
||||||
} ;
|
} ;
|
||||||
stm : Str = case <isQ,p,vp.pred,subj.a> of {
|
stm : Str = case cltyp of {
|
||||||
<False,Pos,Copula|NoCopula,Sg3 _|Impers> => "waa" ;
|
Subord => if_then_Pol p [] "aan" ++ subjpron ; -- if we form a ClSlash, no sentence type marker; negation with aan (Sayeed p. 210)
|
||||||
<True ,Pos,_ ,_ > => "ma" ;
|
Question => "ma" ; -- TODO find out how negative questions work
|
||||||
_ => case <np.isPron,p> of {
|
Statement => case <p,vp.pred,subj.a> of {
|
||||||
<True,Pos> => "waa" ++ subjpron ; -- to force some string from NP to show in the tree
|
<Pos,Copula|NoCopula,Sg3 _|Impers> => "waa" ;
|
||||||
<True,Neg> => "ma" ; -- ++ subjpron ; -- TODO check subj pron or not?
|
_ => stmarkerNoContr ! subj.a ! p }} ;
|
||||||
<False> => stmarkerNoContr ! subj.a ! p
|
|
||||||
}
|
|
||||||
} ;
|
|
||||||
in wordOrder subjnoun subjpron stm obj pred vp ;
|
in wordOrder subjnoun subjpron stm obj pred vp ;
|
||||||
} where {
|
} where {
|
||||||
vp = case vps.c2 of {
|
vp = case vps.isPassive of {
|
||||||
Passive => complSlash (insertComp vps np) ;
|
True => complSlash (insertComp vps np) ;
|
||||||
_ => complSlash vps } ;
|
_ => complSlash vps } ;
|
||||||
subj = case vps.c2 of {Passive => impersNP ; _ => np} ;
|
subj = case vps.isPassive of {True => impersNP ; _ => np}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
wordOrder : (sn,sp,stm : Str) -> {p1,p2 : Str} -> {fin,inf : Str} -> VerbPhrase -> Str =
|
wordOrder : (sn,sp,stm : Str) -> {p1,p2 : Str} -> {fin,inf : Str} -> VerbPhrase -> Str =
|
||||||
@@ -801,8 +808,13 @@ oper
|
|||||||
++ vp.miscAdv ; ---- NB. Only used if there are several adverbs.
|
++ vp.miscAdv ; ---- NB. Only used if there are several adverbs.
|
||||||
---- Primary places for adverbs are obj, sii or dhex.
|
---- Primary places for adverbs are obj, sii or dhex.
|
||||||
|
|
||||||
vf : Tense -> Anteriority -> Polarity -> Agreement -> Verb
|
VFun : Type = Tense -> Anteriority -> Polarity -> Agreement -> Verb
|
||||||
-> {fin : Str ; inf : Str} = \t,ant,p,agr,vp ->
|
-> {fin : Str ; inf : Str} ;
|
||||||
|
|
||||||
|
vf : ClType -> VFun = \clt -> case clt of {
|
||||||
|
Subord => vfSubord ; _ => vfStatement } ;
|
||||||
|
|
||||||
|
vfStatement : VFun = \t,ant,p,agr,vp ->
|
||||||
case <t,ant> of {
|
case <t,ant> of {
|
||||||
<Pres,Simul> => {fin = presV vp ; inf = [] } ;
|
<Pres,Simul> => {fin = presV vp ; inf = [] } ;
|
||||||
<Past,Simul> => {fin = pastV vp ; inf = [] } ;
|
<Past,Simul> => {fin = pastV vp ; inf = [] } ;
|
||||||
@@ -822,17 +834,24 @@ oper
|
|||||||
presV : Verb -> Str = \v -> v.s ! VPres Simple (agr2vagr agr) p ;
|
presV : Verb -> Str = \v -> v.s ! VPres Simple (agr2vagr agr) p ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
vfSubord : VFun = \t,ant,p,agr,vp ->
|
||||||
|
case <t,ant,p> of {
|
||||||
|
<Pres,Simul,Pos> => vfStatement Pres ant Neg agr vp ;
|
||||||
|
_ => vfStatement t ant p agr vp
|
||||||
|
} ; -- TODO other relative forms
|
||||||
|
|
||||||
infVP : VerbPhrase -> Str = \vp ->
|
infVP : VerbPhrase -> Str = \vp ->
|
||||||
let inf = (vf Past Anter Pos (Sg3 Masc) vp) ** {fin=[]}
|
let inf = {inf = vp.s ! VInf ; fin=[]}
|
||||||
in wordOrder [] [] [] (vp.comp ! Pl3) inf vp ;
|
in wordOrder [] [] [] (vp.comp ! Pl3) inf vp ;
|
||||||
|
|
||||||
stmarker : Agreement => Polarity => Str = \\a,b =>
|
stmarkerContr : Agreement => Polarity => Str = \\a,b =>
|
||||||
let stm = if_then_Pol b "w" "m"
|
let stm = if_then_Pol b "w" "m"
|
||||||
in stm + subjpron ! a ;
|
in stm + subjpron ! a ;
|
||||||
|
|
||||||
stmarkerNoContr : Agreement => Polarity => Str = \\a,b =>
|
stmarkerNoContr : Agreement => Polarity => Str = \\a,p =>
|
||||||
let stm = if_then_Pol b "waa" "ma"
|
case p of {
|
||||||
in stm ++ subjpron ! a ;
|
Pos => "waa" ++ subjpron ! a ;
|
||||||
|
Neg => "ma" } ;
|
||||||
|
|
||||||
subjpron : Agreement => Str = table {
|
subjpron : Agreement => Str = table {
|
||||||
Sg1|Pl1 Excl => "aan" ;
|
Sg1|Pl1 Excl => "aan" ;
|
||||||
@@ -851,7 +870,7 @@ oper
|
|||||||
linAdv : Adverb -> Str = \adv ->
|
linAdv : Adverb -> Str = \adv ->
|
||||||
adv.berri
|
adv.berri
|
||||||
++ adv.sii
|
++ adv.sii
|
||||||
++ (prepTable ! P adv.c2).s ! adv.np.a
|
++ (prepTable ! adv.c2).s ! adv.np.a
|
||||||
++ adv.dhex
|
++ adv.dhex
|
||||||
++ adv.np.s ;
|
++ adv.np.s ;
|
||||||
|
|
||||||
|
|||||||
@@ -10,14 +10,13 @@ lin
|
|||||||
-- : NP -> VP -> Cl
|
-- : NP -> VP -> Cl
|
||||||
PredVP = predVP ;
|
PredVP = predVP ;
|
||||||
|
|
||||||
{-
|
-- : SC -> VP -> Cl ; -- that she goes is good (Sayeed p. 94)
|
||||||
-- : SC -> VP -> Cl ; -- that she goes is good
|
--PredSCVP sc vp = ;
|
||||||
PredSCVP sc vp = ;
|
|
||||||
|
|
||||||
--2 Clauses missing object noun phrases
|
--2 Clauses missing object noun phrases
|
||||||
-- : NP -> VPSlash -> ClSlash ;
|
-- : NP -> VPSlash -> ClSlash ;
|
||||||
SlashVP np vps = ;
|
SlashVP = predVPSlash ;
|
||||||
|
{-
|
||||||
-- : ClSlash -> Adv -> ClSlash ; -- (whom) he sees today
|
-- : ClSlash -> Adv -> ClSlash ; -- (whom) he sees today
|
||||||
AdvSlash cls adv = cls ** insertAdv adv cls ;
|
AdvSlash cls adv = cls ** insertAdv adv cls ;
|
||||||
|
|
||||||
@@ -26,17 +25,17 @@ lin
|
|||||||
-- : NP -> VS -> SSlash -> ClSlash ; -- (whom) she says that he loves
|
-- : NP -> VS -> SSlash -> ClSlash ; -- (whom) she says that he loves
|
||||||
-- SlashVS np vs ss = {} ;
|
-- SlashVS np vs ss = {} ;
|
||||||
|
|
||||||
|
-}
|
||||||
-- : Temp -> Pol -> ClSlash -> SSlash ; -- (that) she had not seen
|
-- : Temp -> Pol -> ClSlash -> SSlash ; -- (that) she had not seen
|
||||||
UseSlash t p cls = UseCl t p (PredVP he_Pron cls) ;
|
UseSlash t p cls = {s = \\b => t.s ++ p.s ++ cls.s ! b ! t.t ! t.a ! p.p} ;
|
||||||
|
|
||||||
--2 Imperatives
|
--2 Imperatives
|
||||||
-- : VP -> Imp ;
|
-- : VP -> Imp ;
|
||||||
ImpVP vp = { s = linVP vp } ;
|
--ImpVP vp = { s = linVP vp } ;
|
||||||
|
|
||||||
--2 Embedded sentences
|
--2 Embedded sentences
|
||||||
|
|
||||||
|
{-
|
||||||
-- : S -> SC ;
|
-- : S -> SC ;
|
||||||
EmbedS s = { } ;
|
EmbedS s = { } ;
|
||||||
|
|
||||||
@@ -50,35 +49,31 @@ lin
|
|||||||
|
|
||||||
-}
|
-}
|
||||||
-- : Temp -> Pol -> Cl -> S ;
|
-- : Temp -> Pol -> Cl -> S ;
|
||||||
UseCl t p cl = {s = t.s ++ p.s ++ cl.s ! False ! t.t ! t.a ! p.p} ;
|
UseCl t p cl = {s = \\b =>
|
||||||
|
let cltyp = if_then_else ClType b Subord Statement in
|
||||||
|
t.s ++ p.s ++ cl.s ! cltyp ! t.t ! t.a ! p.p
|
||||||
|
} ;
|
||||||
|
|
||||||
-- : Temp -> Pol -> QCl -> QS ;
|
-- : Temp -> Pol -> QCl -> QS ;
|
||||||
UseQCl t p cl = {s = t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p} ;
|
UseQCl t p cl = {s = t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p} ;
|
||||||
|
|
||||||
{-
|
|
||||||
-- : Temp -> Pol -> RCl -> RS ;
|
-- : Temp -> Pol -> RCl -> RS ;
|
||||||
UseRCl t p cl = { s = t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p } ;
|
UseRCl t p cl = {s = t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p} ;
|
||||||
|
|
||||||
-- An adverb can be added to the beginning of a sentence, either with comma ("externally")
|
-- AdvS : Adv -> S -> S ; -- then I will go home
|
||||||
-- or without:
|
-- ExtAdvS : Adv -> S -> S ; -- next week, I will go home
|
||||||
|
AdvS, ExtAdvS = advS ;
|
||||||
-- : Adv -> S -> S ; -- then I will go home
|
|
||||||
AdvS = advS ;
|
|
||||||
|
|
||||||
-- : Adv -> S -> S ; -- next week, I will go home
|
|
||||||
ExtAdvS adv = advS {s = adv.s ++ SOFT_BIND ++ ","} ;
|
|
||||||
|
|
||||||
-- There's an SubjS already in AdverbSom -- should this be deprecated?
|
-- There's an SubjS already in AdverbSom -- should this be deprecated?
|
||||||
-- : S -> Subj -> S -> S ;
|
-- : S -> Subj -> S -> S ;
|
||||||
SSubjS s1 subj s2 = AdvS (AS.SubjS subj s2) s1 ;
|
SSubjS s1 subj s2 = AdvS (AS.SubjS subj s2) s1 ;
|
||||||
|
|
||||||
-- A sentence can be modified by a relative clause referring to its contents.
|
|
||||||
|
|
||||||
-- : S -> RS -> S ; -- she sleeps, which is good
|
-- : S -> RS -> S ; -- she sleeps, which is good
|
||||||
RelS sent rs = advS { s = rs.s ! Sg3 Masc ++ SOFT_BIND ++ ","} sent ;
|
-- RelS sent rs = advS {s = rs.s ! Sg3 Masc ++ SOFT_BIND ++ ","} sent ;
|
||||||
|
|
||||||
oper
|
oper
|
||||||
|
|
||||||
advS : Adv -> SS -> SS = \a,s -> {s = a.s ++ s.s} ;
|
advS : Adverb -> S -> S = \a,s -> s ** {s = \\b =>
|
||||||
-}
|
linAdv a ++ s.s ! b} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -133,20 +133,18 @@ lin whatSg_IP = ;
|
|||||||
lin whoPl_IP = ;
|
lin whoPl_IP = ;
|
||||||
lin whoSg_IP = ;
|
lin whoSg_IP = ;
|
||||||
|
|
||||||
|
-}
|
||||||
|
|
||||||
|
|
||||||
-------
|
-------
|
||||||
-- Subj
|
-- Subj
|
||||||
|
|
||||||
lin although_Subj = mkSubj "" False ;
|
-- lin although_Subj = mkSubj "" False ;
|
||||||
lin because_Subj = mkSubj "" False ;
|
-- lin because_Subj = mkSubj "" False ;
|
||||||
lin if_Subj = mkSubj "" True ;
|
-- lin if_Subj = mkSubj "" True ;
|
||||||
lin that_Subj = mkSubj "" False ;
|
lin that_Subj = {s = "in" ++ BIND} ;
|
||||||
lin when_Subj = mkSubj "" False ;
|
-- lin when_Subj = mkSubj "" False ;
|
||||||
|
|
||||||
|
|
||||||
-}
|
|
||||||
------
|
------
|
||||||
-- Utt
|
-- Utt
|
||||||
|
|
||||||
|
|||||||
@@ -17,11 +17,11 @@ LangSom: ku &+ ma arkin
|
|||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PNeg (PredVP (UsePron they_Pron) (ComplSlash (SlashV2a see_V2) (UsePron youSg_Pron))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PNeg (PredVP (UsePron they_Pron) (ComplSlash (SlashV2a see_V2) (UsePron youSg_Pron))))) NoVoc
|
||||||
|
|
||||||
-- LangEng: you taught yourself
|
-- LangEng: you taught yourself
|
||||||
LangSom: waa aad is &+ ku bartay
|
LangSom: waa aad isku bartay
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron youSg_Pron) (ReflVP (SlashV2a teach_V2))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron youSg_Pron) (ReflVP (SlashV2a teach_V2))))) NoVoc
|
||||||
|
|
||||||
-- LangEng: you don't teach yourself
|
-- LangEng: you don't teach yourself
|
||||||
LangSom: is &+ ku &+ ma barto
|
LangSom: isku &+ ma barto
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PNeg (PredVP (UsePron youSg_Pron) (ReflVP (SlashV2a teach_V2))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PNeg (PredVP (UsePron youSg_Pron) (ReflVP (SlashV2a teach_V2))))) NoVoc
|
||||||
|
|
||||||
-- LangEng: one saw you
|
-- LangEng: one saw you
|
||||||
|
|||||||
Reference in New Issue
Block a user