mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-25 18:58:56 -06:00
Clause as restructuring of Verbphrase
This commit is contained in:
@@ -1,4 +1,8 @@
|
|||||||
abstract TestResource = Rules, Clause, Structural ** {
|
abstract TestResource =
|
||||||
|
Rules,
|
||||||
|
---- Verbphrase,
|
||||||
|
Clause,
|
||||||
|
Structural ** {
|
||||||
|
|
||||||
-- a random sample of lexicon to test resource grammar with
|
-- a random sample of lexicon to test resource grammar with
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,8 @@
|
|||||||
|
|
||||||
abstract Verbphrase = Categories ** {
|
abstract Verbphrase = Categories ** {
|
||||||
|
|
||||||
|
flags optimize=all ;
|
||||||
|
|
||||||
-- These rules produce verb phrases.
|
-- These rules produce verb phrases.
|
||||||
|
|
||||||
fun
|
fun
|
||||||
@@ -38,6 +40,8 @@ abstract Verbphrase = Categories ** {
|
|||||||
PredAV : AV -> VPI -> VP ; -- "is eager to leave"
|
PredAV : AV -> VPI -> VP ; -- "is eager to leave"
|
||||||
PredObjA2V : A2V -> NP -> VPI -> VP ; -- "is easy for us to convince"
|
PredObjA2V : A2V -> NP -> VPI -> VP ; -- "is easy for us to convince"
|
||||||
|
|
||||||
|
PredProgVP : VPI -> VP ; -- "is eating fish"
|
||||||
|
|
||||||
-- These rules *use* verb phrases.
|
-- These rules *use* verb phrases.
|
||||||
|
|
||||||
PredVP : NP -> VP -> Cl ; -- "John walks"
|
PredVP : NP -> VP -> Cl ; -- "John walks"
|
||||||
@@ -46,7 +50,7 @@ abstract Verbphrase = Categories ** {
|
|||||||
|
|
||||||
PosVP, NegVP : Ant -> VP -> VPI ; -- to eat, not to eat
|
PosVP, NegVP : Ant -> VP -> VPI ; -- to eat, not to eat
|
||||||
|
|
||||||
AdvVP : VP -> AdV -> VP ; -- "always walks"
|
---- AdvVP : VP -> AdV -> VP ; -- "always walks"
|
||||||
SubjVP : VP -> Subj -> S -> VP ; -- "(a man who) sings when he runs"
|
SubjVP : VP -> Subj -> S -> VP ; -- "(a man who) sings when he runs"
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,8 +3,9 @@
|
|||||||
instance SyntaxDan of SyntaxScand = TypesDan **
|
instance SyntaxDan of SyntaxScand = TypesDan **
|
||||||
open Prelude, (CO = Coordination), MorphoDan in {
|
open Prelude, (CO = Coordination), MorphoDan in {
|
||||||
|
|
||||||
oper
|
flags optimize=all ;
|
||||||
|
|
||||||
|
oper
|
||||||
------ mkAdjForm
|
------ mkAdjForm
|
||||||
|
|
||||||
-- When common nouns are extracted from lexicon, the composite noun form is ignored.
|
-- When common nouns are extracted from lexicon, the composite noun form is ignored.
|
||||||
@@ -108,12 +109,9 @@ instance SyntaxDan of SyntaxScand = TypesDan **
|
|||||||
_ => "seg"
|
_ => "seg"
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
progressiveVerbPhrase : VerbGroup -> VerbGroup = \verb ->
|
progressiveVerbPhrase : VerbPhrase -> VerbGroup =
|
||||||
complVerbVerb
|
complVerbVerb
|
||||||
(verbVara **
|
{s = verbVara.s ; s1 = "ved" ; isAux = False} ;
|
||||||
{isAux = False} ----- {s3 = ["ved at"]}
|
|
||||||
)
|
|
||||||
(predVerbGroup True Simul verb) ;
|
|
||||||
|
|
||||||
progressiveClause : NounPhrase -> VerbPhrase -> Clause = \np,vp ->
|
progressiveClause : NounPhrase -> VerbPhrase -> Clause = \np,vp ->
|
||||||
predVerbGroupClause np
|
predVerbGroupClause np
|
||||||
|
|||||||
@@ -152,17 +152,38 @@ Language-dependent resources
|
|||||||
|
|
||||||
|
|
||||||
<!-- NEW -->
|
<!-- NEW -->
|
||||||
<h2>Use as top-level grammar</h2>
|
<h2>Use as top-level grammar: testing</h2>
|
||||||
|
|
||||||
Random generation, translation, morphological analysis...
|
Import a set of $LangX$ grammars:
|
||||||
|
<pre>
|
||||||
|
i english/LangEng.gf
|
||||||
|
i swedish/LangSwe.gf
|
||||||
|
</pre>
|
||||||
|
Test with random generation, translation, morphological analysis...
|
||||||
|
<pre>
|
||||||
|
|
||||||
<p>
|
|
||||||
|
|
||||||
Language learning: translation and morpho quiz
|
</pre>
|
||||||
|
|
||||||
<p>
|
<!-- NEW -->
|
||||||
|
<h2>Use as top-level grammar: language learning quizzes</h2>
|
||||||
|
|
||||||
|
Morpho quiz with words:
|
||||||
|
<pre>
|
||||||
|
|
||||||
|
|
||||||
|
</pre>
|
||||||
|
Morpho quiz with phrases:
|
||||||
|
<pre>
|
||||||
|
|
||||||
|
|
||||||
|
</pre>
|
||||||
|
Translation quiz with sentences:
|
||||||
|
<pre>
|
||||||
|
|
||||||
|
|
||||||
|
</pre>
|
||||||
|
|
||||||
Generate elementary text books from abstract syntax?
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -179,10 +200,14 @@ No more dummy <tt>reuse</tt> modules and bulky <tt>.gfr</tt> files!
|
|||||||
|
|
||||||
If you need to convert resource category records to/from strings, use
|
If you need to convert resource category records to/from strings, use
|
||||||
<pre>
|
<pre>
|
||||||
Predef.toStr : L -> Str ;
|
Predef.toStr : (L : Type) -> L -> Str ;
|
||||||
Predef.fromStr : Str -> L ;
|
|
||||||
</pre>
|
</pre>
|
||||||
<tt>L</tt> must be a linearization type.
|
<tt>L</tt> must be a linearization type. For instance,
|
||||||
|
<pre>
|
||||||
|
toStr LangNor.CN (ModAP (PositADeg old_ADeg) (UseN car_N))
|
||||||
|
---> "gammel bil"
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- NEW -->
|
<!-- NEW -->
|
||||||
@@ -205,9 +230,14 @@ Extend vocabulary at need.
|
|||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- NEW -->
|
||||||
|
<h2>Example application: a small translation system</h2>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- NEW -->
|
<!-- NEW -->
|
||||||
<h2>Implementatin details: the structure of low-level files</h2>
|
<h2>Implementation details: the structure of low-level files</h2>
|
||||||
|
|
||||||
<center>
|
<center>
|
||||||
<img src="Low.gif">
|
<img src="Low.gif">
|
||||||
|
|||||||
@@ -690,10 +690,12 @@ oper
|
|||||||
APl P3 => "themselves"
|
APl P3 => "themselves"
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
progressiveClause : NounPhrase -> VerbPhrase -> Clause = \np,vp ->
|
progressiveClause : NounPhrase -> VerbPhrase -> Clause = \np,vp ->
|
||||||
predBeGroup np (vp.s ! VIPresPart) ;
|
predBeGroup np (vp.s ! VIPresPart) ;
|
||||||
|
|
||||||
|
progressiveVerbPhrase : VerbPhrase -> VerbGroup = \vp ->
|
||||||
|
predClauseBeGroup (vp.s ! VIPresPart) ;
|
||||||
|
|
||||||
--- negation of prp ignored: "not" only for "be"
|
--- negation of prp ignored: "not" only for "be"
|
||||||
|
|
||||||
--3 Tensed clauses
|
--3 Tensed clauses
|
||||||
@@ -725,6 +727,30 @@ oper
|
|||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
-- These three function are just to restore the $VerbGroup$ ($VP$) based structure.
|
||||||
|
|
||||||
|
predVerbGroupClause : NounPhrase -> VerbGroup -> Clause = \np,vp ->
|
||||||
|
let
|
||||||
|
ag = np.a ;
|
||||||
|
it = np.s ! NomP
|
||||||
|
in
|
||||||
|
{s = table {
|
||||||
|
Dir => \\b,sf => it ++ vp.s ! b ! sf ! ag ++ vp.s2 ! b ! sf ! ag ;
|
||||||
|
Inv => \\b,sf =>
|
||||||
|
let
|
||||||
|
does = vp.s ! b ! sf ! ag ;
|
||||||
|
walk = vp.s2 ! b ! sf ! ag
|
||||||
|
in
|
||||||
|
case sf of {
|
||||||
|
VFinite t Simul => case b of {
|
||||||
|
True => auxTense b t ag ++ it ++ walk ;
|
||||||
|
_ => does ++ it ++ walk
|
||||||
|
} ;
|
||||||
|
_ => does ++ it ++ walk
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
predClauseGroup : Verb -> Complement -> VerbGroup = \verb,comp ->
|
predClauseGroup : Verb -> Complement -> VerbGroup = \verb,comp ->
|
||||||
let
|
let
|
||||||
nvg : Agr -> (Bool => SForm => (Str * Str * Str)) =
|
nvg : Agr -> (Bool => SForm => (Str * Str * Str)) =
|
||||||
@@ -732,9 +758,22 @@ oper
|
|||||||
in
|
in
|
||||||
{s = \\b,f,a => (nvg a ! b ! f).p2 ;
|
{s = \\b,f,a => (nvg a ! b ! f).p2 ;
|
||||||
s2 = \\b,f,a => (nvg a ! b ! f).p3 ;
|
s2 = \\b,f,a => (nvg a ! b ! f).p3 ;
|
||||||
isAux = False ----
|
isAux = False
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
predClauseBeGroup : Complement -> VerbGroup = \comp ->
|
||||||
|
let
|
||||||
|
nvg : Agr -> (Bool => SForm => (Str * Str * Str)) =
|
||||||
|
\ag -> predAuxClauseGen {s = \\_ => [] ; a = ag} auxVerbBe comp
|
||||||
|
in
|
||||||
|
{s = \\b,f,a => (nvg a ! b ! f).p2 ;
|
||||||
|
s2 = \\b,f,a => (nvg a ! b ! f).p3 ;
|
||||||
|
isAux = True
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- This is the general predication function for non-auxiliary verbs,
|
||||||
|
-- i.e. ones with "do" inversion and negation.
|
||||||
|
|
||||||
predVerbClauseGen : NounPhrase -> Verb -> Complement -> (Bool =>
|
predVerbClauseGen : NounPhrase -> Verb -> Complement -> (Bool =>
|
||||||
SForm => (Str * Str * Str)) = \np,verb,comp ->
|
SForm => (Str * Str * Str)) = \np,verb,comp ->
|
||||||
let
|
let
|
||||||
@@ -1025,15 +1064,12 @@ oper
|
|||||||
RelClause : Type = {s : Bool => SForm => Agr => Str} ;
|
RelClause : Type = {s : Bool => SForm => Agr => Str} ;
|
||||||
RelSentence : Type = {s : Agr => Str} ;
|
RelSentence : Type = {s : Agr => Str} ;
|
||||||
|
|
||||||
------ relg
|
|
||||||
relVerbPhrase : RelPron -> VerbGroup -> RelClause = \who,walks ->
|
relVerbPhrase : RelPron -> VerbGroup -> RelClause = \who,walks ->
|
||||||
{s = \\b,sf,a => []
|
{s = \\b,sf,a =>
|
||||||
---- let wa = fromAgr a in
|
let wa = fromAgr a in
|
||||||
---- (predVerbGroupClause (relNounPhrase who wa.g wa.n) walks).s ! Dir ! b ! sf
|
(predVerbGroupClause (relNounPhrase who wa.g wa.n) walks).s ! Dir ! b ! sf
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
--- TODO: full tense variation in relative clauses.
|
|
||||||
|
|
||||||
relSlash : RelPron -> ClauseSlashNounPhrase -> RelClause = \who,yousee ->
|
relSlash : RelPron -> ClauseSlashNounPhrase -> RelClause = \who,yousee ->
|
||||||
{s = \\b,sf,a =>
|
{s = \\b,sf,a =>
|
||||||
let
|
let
|
||||||
@@ -1196,7 +1232,6 @@ oper
|
|||||||
in
|
in
|
||||||
{s = \\b,sf,_ => whoisold.s ! Dir ! b ! sf} ;
|
{s = \\b,sf,_ => whoisold.s ! Dir ! b ! sf} ;
|
||||||
|
|
||||||
{- --vg
|
|
||||||
intVerbPhrase : IntPron -> VerbGroup -> Question = \who,walk ->
|
intVerbPhrase : IntPron -> VerbGroup -> Question = \who,walk ->
|
||||||
let
|
let
|
||||||
who : NounPhrase = {s = who.s ; a = toAgr who.n P3 who.g} ;
|
who : NounPhrase = {s = who.s ; a = toAgr who.n P3 who.g} ;
|
||||||
@@ -1204,8 +1239,6 @@ oper
|
|||||||
in
|
in
|
||||||
{s = \\b,sf,_ => whowalks.s ! Dir ! b ! sf} ;
|
{s = \\b,sf,_ => whowalks.s ! Dir ! b ! sf} ;
|
||||||
|
|
||||||
--vg -}
|
|
||||||
|
|
||||||
intVerbClause : IntPron -> Verb -> Complement -> Question = \who,walk,here ->
|
intVerbClause : IntPron -> Verb -> Complement -> Question = \who,walk,here ->
|
||||||
let
|
let
|
||||||
who : NounPhrase = {s = who.s ; a = toAgr who.n P3 who.g} ;
|
who : NounPhrase = {s = who.s ; a = toAgr who.n P3 who.g} ;
|
||||||
|
|||||||
@@ -23,39 +23,43 @@ concrete VerbphraseEng of Verbphrase = CategoriesEng **
|
|||||||
open Prelude, SyntaxEng in {
|
open Prelude, SyntaxEng in {
|
||||||
|
|
||||||
lin
|
lin
|
||||||
UseV = predVerb ;
|
UseV v = predClauseGroup v (complVerb v) ;
|
||||||
UsePassV = passVerb ;
|
UsePassV v = predClauseBeGroup (passVerb v) ;
|
||||||
ComplV2 = complTransVerb ;
|
ComplV2 v x = predClauseGroup v (complTransVerb v x) ;
|
||||||
ComplReflV2 = reflTransVerb ;
|
ComplReflV2 v = predClauseGroup v (reflTransVerb v) ;
|
||||||
ComplVS = complSentVerb ;
|
ComplVS v x = predClauseGroup v (complSentVerb v x) ;
|
||||||
ComplVV = complVerbVerb ;
|
ComplVV v x = predClauseGroup (aux2verb v) (complVerbVerb v x) ;
|
||||||
ComplVQ = complQuestVerb ;
|
ComplVQ v x = predClauseGroup v (complQuestVerb v x) ;
|
||||||
ComplVA = complAdjVerb ;
|
ComplVA v x = predClauseGroup v (complAdjVerb v x) ;
|
||||||
ComplV2A = complDitransAdjVerb ;
|
ComplV2A v x y = predClauseGroup v (complDitransAdjVerb v x y) ;
|
||||||
ComplSubjV2V = complDitransVerbVerb False ;
|
ComplSubjV2V v x y = predClauseGroup v (complDitransVerbVerb False v x y) ;
|
||||||
ComplObjV2V = complDitransVerbVerb True ;
|
ComplObjV2V v x y = predClauseGroup v (complDitransVerbVerb True v x y) ;
|
||||||
ComplV2S = complDitransSentVerb ;
|
ComplV2S v x y = predClauseGroup v (complDitransSentVerb v x y) ;
|
||||||
ComplV2Q = complDitransQuestVerb ;
|
ComplV2Q v x y = predClauseGroup v (complDitransQuestVerb v x y) ;
|
||||||
|
|
||||||
PredAP = predAdjective ;
|
PredAP v = predClauseBeGroup (complAdjective v) ;
|
||||||
PredSuperl a = predAdjective (superlAdjPhrase a) ;
|
PredSuperl a = predClauseBeGroup (complAdjective (superlAdjPhrase a)) ;
|
||||||
PredCN = predCommNoun ;
|
PredCN v = predClauseBeGroup (complCommNoun v) ;
|
||||||
PredNP = predNounPhrase ;
|
PredNP v = predClauseBeGroup (complNounPhrase v) ;
|
||||||
PredPP = predAdverb ;
|
PredPP v = predClauseBeGroup (complAdverb v) ;
|
||||||
PredAV = complVerbAdj ;
|
|
||||||
PredObjA2V = complVerbAdj2 True ;
|
PredAV v x = predClauseBeGroup (complVerbAdj v x) ;
|
||||||
|
PredObjA2V v x y = predClauseBeGroup (complVerbAdj2 True v x y) ;
|
||||||
|
|
||||||
|
PredProgVP = progressiveVerbPhrase ;
|
||||||
|
|
||||||
|
---- SPredProgVP = progressiveClause ;
|
||||||
|
|
||||||
-- Use VPs
|
-- Use VPs
|
||||||
|
|
||||||
PredVP = predVerbGroupClause ;
|
PredVP = predVerbGroupClause ;
|
||||||
|
|
||||||
RelVP = relVerbPhrase ;
|
RelVP = relVerbPhrase ;
|
||||||
IntVP = intVerbPhrase ;
|
IntVP = intVerbPhrase ;
|
||||||
|
|
||||||
PosVP tp = predVerbGroup True tp.a ;
|
-- PosVP tp = predVerbGroup True tp.a ;
|
||||||
NegVP tp = predVerbGroup False tp.a ;
|
-- NegVP tp = predVerbGroup False tp.a ;
|
||||||
|
|
||||||
AdvVP = adVerbPhrase ;
|
---- AdvVP = adVerbPhrase ;
|
||||||
SubjVP = subjunctVerbPhrase ;
|
SubjVP = subjunctVerbPhrase ;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -3,6 +3,8 @@
|
|||||||
instance SyntaxNor of SyntaxScand = TypesNor **
|
instance SyntaxNor of SyntaxScand = TypesNor **
|
||||||
open Prelude, (CO = Coordination), MorphoNor in {
|
open Prelude, (CO = Coordination), MorphoNor in {
|
||||||
|
|
||||||
|
flags optimize=all ;
|
||||||
|
|
||||||
oper
|
oper
|
||||||
|
|
||||||
------ mkAdjForm
|
------ mkAdjForm
|
||||||
@@ -75,7 +77,7 @@ instance SyntaxNor of SyntaxScand = TypesNor **
|
|||||||
auxSka = "vil" ;
|
auxSka = "vil" ;
|
||||||
auxSkulle = "ville" ;
|
auxSkulle = "ville" ;
|
||||||
|
|
||||||
infinAtt = "at" ;
|
infinAtt = "å" ;
|
||||||
|
|
||||||
varjeDet : Determiner = mkDeterminerSg (detSgInvar "hver") IndefP ;
|
varjeDet : Determiner = mkDeterminerSg (detSgInvar "hver") IndefP ;
|
||||||
allaDet : Determiner = mkDeterminerPl "alle" IndefP ;
|
allaDet : Determiner = mkDeterminerPl "alle" IndefP ;
|
||||||
@@ -109,12 +111,9 @@ instance SyntaxNor of SyntaxScand = TypesNor **
|
|||||||
_ => "seg"
|
_ => "seg"
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
progressiveVerbPhrase : VerbGroup -> VerbGroup = \verb ->
|
progressiveVerbPhrase : VerbPhrase -> VerbGroup =
|
||||||
complVerbVerb
|
complVerbVerb
|
||||||
(verbVara **
|
({s = verbVara.s ; s1 = "ved" ; isAux = False}) ;
|
||||||
{isAux = False} ----- {s3 = ["ved at"]}
|
|
||||||
)
|
|
||||||
(predVerbGroup True Simul verb) ;
|
|
||||||
|
|
||||||
progressiveClause : NounPhrase -> VerbPhrase -> Clause = \np,vp ->
|
progressiveClause : NounPhrase -> VerbPhrase -> Clause = \np,vp ->
|
||||||
predVerbGroupClause np
|
predVerbGroupClause np
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ lincat
|
|||||||
|
|
||||||
V = Verb ;
|
V = Verb ;
|
||||||
-- = {s : VerbForm => Str ; s1 : Str} ;
|
-- = {s : VerbForm => Str ; s1 : Str} ;
|
||||||
VP = {s : SForm => Str ; s2 : Bool => Str ;
|
VP = {s : SForm => Str ;
|
||||||
s3 : SForm => Gender => Number => Person => Str} ;
|
s3 : SForm => Gender => Number => Person => Str} ;
|
||||||
VPI = {s : VIForm => Gender => Number => Person => Str} ;
|
VPI = {s : VIForm => Gender => Number => Person => Str} ;
|
||||||
V2 = TransVerb ;
|
V2 = TransVerb ;
|
||||||
|
|||||||
@@ -133,7 +133,7 @@ lin
|
|||||||
ImperMany = imperUtterance plural ;
|
ImperMany = imperUtterance plural ;
|
||||||
|
|
||||||
AdvCl = advClause ;
|
AdvCl = advClause ;
|
||||||
AdvVP = advVerbPhrase ;
|
---- AdvVP = advVerbPhrase ;
|
||||||
AdvPhr = advSentence ;
|
AdvPhr = advSentence ;
|
||||||
AdCPhr = advSentence ;
|
AdCPhr = advSentence ;
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
interface SyntaxScand = TypesScand ** open Prelude, (CO = Coordination) in {
|
interface SyntaxScand = TypesScand ** open Prelude, (CO = Coordination) in {
|
||||||
|
|
||||||
flags optimize=share ;
|
flags optimize=parametrize ;
|
||||||
|
|
||||||
--2 Common Nouns
|
--2 Common Nouns
|
||||||
--
|
--
|
||||||
@@ -535,7 +535,7 @@ oper
|
|||||||
useVerb : Verb -> (Gender => Number => Person => Str) -> VerbGroup = \verb,arg ->
|
useVerb : Verb -> (Gender => Number => Person => Str) -> VerbGroup = \verb,arg ->
|
||||||
let aer = verbSForm verb Act in {
|
let aer = verbSForm verb Act in {
|
||||||
s = \\sf => (aer sf).fin ;
|
s = \\sf => (aer sf).fin ;
|
||||||
s2 = negation ;
|
--* s2 = negation ;
|
||||||
s3 = \\sf,g,n,p => (aer sf).inf ++ arg ! g ! n ! p
|
s3 = \\sf,g,n,p => (aer sf).inf ++ arg ! g ! n ! p
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -553,27 +553,28 @@ oper
|
|||||||
|
|
||||||
VerbGroup : Type = {
|
VerbGroup : Type = {
|
||||||
s : SForm => Str ;
|
s : SForm => Str ;
|
||||||
s2 : Bool => Str ;
|
--* s2 : Bool => Str ;
|
||||||
s3 : SForm => Gender => Number => Person => Str
|
s3 : SForm => Gender => Number => Person => Str
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
predVerbGroup : Bool -> Anteriority -> VerbGroup -> VerbPhrase = \b,a,vg ->
|
predVerbGroup : Bool -> {s : Str ; a : Anteriority} -> VerbGroup -> VerbPhrase = \b,ant,vg ->
|
||||||
let
|
let
|
||||||
vgs = vg.s ;
|
vgs = vg.s ;
|
||||||
vgs3 = vg.s3
|
vgs3 = vg.s3 ;
|
||||||
|
a = ant.a ;
|
||||||
in
|
in
|
||||||
{s = table {
|
{s = table {
|
||||||
VIInfinit => \\g,n,p =>
|
VIInfinit => \\g,n,p =>
|
||||||
vg.s ! VInfinit a ++ vg.s2 ! b ++ vg.s3 ! VInfinit a ! g ! n ! p ;
|
vg.s ! VInfinit a ++ ant.s ++ negation ! b ++ vg.s3 ! VInfinit a ! g ! n ! p ;
|
||||||
VIImperat bo => \\g,n,p =>
|
VIImperat bo => \\g,n,p =>
|
||||||
vg.s ! VImperat ++ vg.s2 ! bo ++ vg.s3 ! VImperat ! g ! n ! p
|
vg.s ! VImperat ++ ant.s ++ negation ! bo ++ vg.s3 ! VImperat ! g ! n ! p
|
||||||
} ---- bo shadows b
|
} ---- bo shadows b
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
predVerbGroupI : Bool -> {s : Str ; a : Anteriority} -> VerbGroup -> VerbPhrase =
|
predVerbGroupI : Bool -> {s : Str ; a : Anteriority} -> VerbGroup -> VerbPhrase =
|
||||||
\b,ant,vg ->
|
\b,ant,vg ->
|
||||||
let vp = predVerbGroup b ant.a vg in
|
let vp = predVerbGroup b ant vg in
|
||||||
{s = \\i,g,n,p => ant.s ++ vp.s ! i ! g ! n ! p
|
{s = \\i,g,n,p => vp.s ! i ! g ! n ! p
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
@@ -589,7 +590,8 @@ oper
|
|||||||
predVerb0 : Verb -> Clause = \regna ->
|
predVerb0 : Verb -> Clause = \regna ->
|
||||||
predVerbGroupClause npDet (predVerb regna) ;
|
predVerbGroupClause npDet (predVerb regna) ;
|
||||||
|
|
||||||
progressiveVerbPhrase : VerbGroup -> VerbGroup ;
|
progressiveVerbPhrase : VerbPhrase -> VerbGroup ;
|
||||||
|
|
||||||
progressiveClause : NounPhrase -> VerbPhrase -> Clause ;
|
progressiveClause : NounPhrase -> VerbPhrase -> Clause ;
|
||||||
|
|
||||||
-- Verb phrases can also be formed from adjectives ("är snäll"),
|
-- Verb phrases can also be formed from adjectives ("är snäll"),
|
||||||
@@ -662,7 +664,7 @@ oper
|
|||||||
passVerb : Verb -> VerbGroup = \se ->
|
passVerb : Verb -> VerbGroup = \se ->
|
||||||
let ses = verbSForm se Pass in {
|
let ses = verbSForm se Pass in {
|
||||||
s = \\sf => (ses sf).fin ;
|
s = \\sf => (ses sf).fin ;
|
||||||
s2 = negation ;
|
--* s2 = negation ;
|
||||||
s3 = \\sf,g,n,_ => (ses sf).inf ++ se.s1
|
s3 = \\sf,g,n,_ => (ses sf).inf ++ se.s1
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -736,7 +738,7 @@ oper
|
|||||||
{
|
{
|
||||||
--- this unfortunately generates VP#2 ::= VP#2
|
--- this unfortunately generates VP#2 ::= VP#2
|
||||||
s = spelar.s ;
|
s = spelar.s ;
|
||||||
s2 = \\b => ofta.s ++ spelar.s2 ! b ;
|
--* s2 = \\b => ofta.s ++ spelar.s2 ! b ; ----* the essential use of s2
|
||||||
s3 = \\sf,g,n,p => spelar.s3 ! sf ! g ! n ! p
|
s3 = \\sf,g,n,p => spelar.s3 ! sf ! g ! n ! p
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -816,7 +818,7 @@ oper
|
|||||||
o = osf.o ;
|
o = osf.o ;
|
||||||
ser = serdiginte.s ! t ;
|
ser = serdiginte.s ! t ;
|
||||||
dig = serdiginte.s3 ! t ! Jag.g ! Jag.n ! Jag.p ;
|
dig = serdiginte.s3 ! t ! Jag.g ! Jag.n ! Jag.p ;
|
||||||
inte = serdiginte.s2 ! b
|
inte = negation ! b --* serdiginte.s2 ! b
|
||||||
} in
|
} in
|
||||||
case o of {
|
case o of {
|
||||||
Main => jag ++ ser ++ inte ++ dig ;
|
Main => jag ++ ser ++ inte ++ dig ;
|
||||||
@@ -996,9 +998,9 @@ oper
|
|||||||
RelClause : Type = {s : Bool => SForm => GenNum => Person => Str} ;
|
RelClause : Type = {s : Bool => SForm => GenNum => Person => Str} ;
|
||||||
RelSent : Type = {s : GenNum => Person => Str} ;
|
RelSent : Type = {s : GenNum => Person => Str} ;
|
||||||
|
|
||||||
relVerbGroup : RelPron -> VerbGroup -> RelClause = \som,sover ->
|
relVerbPhrase : RelPron -> VerbGroup -> RelClause = \som,sover ->
|
||||||
{s = \\b,sf,gn,p =>
|
{s = \\b,sf,gn,p =>
|
||||||
som.s ! RNom ! gn ++ sover.s2 ! b ++ sover.s ! sf ++
|
som.s ! RNom ! gn ++ negation ! b ++ sover.s ! sf ++
|
||||||
sover.s3 ! sf ! mkGenderRel som.g (genGN gn) ! numGN gn ! p
|
sover.s3 ! sf ! mkGenderRel som.g (genGN gn) ! numGN gn ! p
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,5 @@
|
|||||||
--# -path=.:../abstract:../../prelude
|
--# -path=.:../abstract:../../prelude
|
||||||
|
|
||||||
incomplete concrete VerbphraseScand of Verbphrase = CategoriesScand **
|
|
||||||
open Prelude, SyntaxScand in {
|
|
||||||
|
|
||||||
--1 The Top-Level English Resource Grammar: Combination Rules
|
--1 The Top-Level English Resource Grammar: Combination Rules
|
||||||
--
|
--
|
||||||
-- Aarne Ranta 2002 -- 2003
|
-- Aarne Ranta 2002 -- 2003
|
||||||
@@ -22,8 +19,8 @@ incomplete concrete VerbphraseScand of Verbphrase = CategoriesScand **
|
|||||||
-- one has to know how the syntactic categories are
|
-- one has to know how the syntactic categories are
|
||||||
-- implemented. The parameter types are defined in $TypesEng.gf$.
|
-- implemented. The parameter types are defined in $TypesEng.gf$.
|
||||||
|
|
||||||
concrete VerbphraseEng of Verbphrase = CategoriesEng **
|
incomplete concrete VerbphraseScand of Verbphrase = CategoriesScand **
|
||||||
open Prelude, SyntaxEng in {
|
open Prelude, SyntaxScand in {
|
||||||
|
|
||||||
lin
|
lin
|
||||||
UseV = predVerb ;
|
UseV = predVerb ;
|
||||||
@@ -48,16 +45,18 @@ concrete VerbphraseEng of Verbphrase = CategoriesEng **
|
|||||||
PredAV = complVerbAdj ;
|
PredAV = complVerbAdj ;
|
||||||
PredObjA2V = complVerbAdj2 True ;
|
PredObjA2V = complVerbAdj2 True ;
|
||||||
|
|
||||||
|
PredProgVP = progressiveVerbPhrase ;
|
||||||
|
|
||||||
-- Use VPs
|
-- Use VPs
|
||||||
|
|
||||||
PredVP = predVerbGroupClause ;
|
PredVP = predVerbGroupClause ;
|
||||||
RelVP = relVerbPhrase ;
|
RelVP = relVerbPhrase ;
|
||||||
IntVP = intVerbPhrase ;
|
IntVP = intVerbPhrase ;
|
||||||
|
|
||||||
PosVP tp = predVerbGroup True tp.a ;
|
PosVP tp = predVerbGroup True tp ;
|
||||||
NegVP tp = predVerbGroup False tp.a ;
|
NegVP tp = predVerbGroup False tp ;
|
||||||
|
|
||||||
AdvVP = adVerbPhrase ;
|
---- AdvVP = adVerbPhrase ;
|
||||||
SubjVP = subjunctVerbPhrase ;
|
SubjVP = subjunctVerbPhrase ;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
--# -path=.:../scandinavian:../abstract:../../prelude
|
--# -path=.:../scandinavian:../abstract:../../prelude
|
||||||
|
|
||||||
concrete ClauseSwe of Clause = CategoriesSwe **
|
concrete ClauseSwe of Clause = CategoriesSwe **
|
||||||
ClauseScand with (SyntaxScand=SyntaxSwe) ;
|
ClauseI with (Rules=RulesSwe), (Verbphrase=VerbphraseSwe) ;
|
||||||
|
---- ClauseScand with (SyntaxScand=SyntaxSwe) ;
|
||||||
|
|||||||
@@ -115,11 +115,10 @@ instance SyntaxSwe of SyntaxScand = TypesSwe **
|
|||||||
_ => "sig"
|
_ => "sig"
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
progressiveVerbPhrase : VerbGroup -> VerbGroup = \verb ->
|
progressiveVerbPhrase : VerbPhrase -> VerbGroup =
|
||||||
complVerbVerb
|
complVerbVerb
|
||||||
(mkVerb "hålla" "håller" "håll" "höll" "hållit" "hållen" **
|
(mkVerb "hålla" "håller" "håll" "höll" "hållit" "hållen" **
|
||||||
{isAux = False}) ---- ;{s3 = ["på att"]})
|
{isAux = False}) ;
|
||||||
(predVerbGroup True Simul verb) ;
|
|
||||||
|
|
||||||
progressiveClause : NounPhrase -> VerbPhrase -> Clause = \np,vp ->
|
progressiveClause : NounPhrase -> VerbPhrase -> Clause = \np,vp ->
|
||||||
predVerbGroupClause np
|
predVerbGroupClause np
|
||||||
@@ -131,6 +130,7 @@ instance SyntaxSwe of SyntaxScand = TypesSwe **
|
|||||||
strPrep : ComplPrep -> Str = \p -> case p of {
|
strPrep : ComplPrep -> Str = \p -> case p of {
|
||||||
CPnoPrep => [] ;
|
CPnoPrep => [] ;
|
||||||
CPav => "av" ;
|
CPav => "av" ;
|
||||||
|
---- CPmed => "med" ;
|
||||||
CPför => "för" ;
|
CPför => "för" ;
|
||||||
CPi => "i" ;
|
CPi => "i" ;
|
||||||
CPom => "om" ;
|
CPom => "om" ;
|
||||||
|
|||||||
Reference in New Issue
Block a user