forked from GitHub/gf-core
inspected Combinators and marked todos
This commit is contained in:
@@ -9,8 +9,8 @@ abstract Adjective = Cat ** {
|
|||||||
-- elliptic-relational.
|
-- elliptic-relational.
|
||||||
-- (The superlative use is covered in [Noun Noun.html].$SuperlA$.)
|
-- (The superlative use is covered in [Noun Noun.html].$SuperlA$.)
|
||||||
|
|
||||||
PositA : A -> AP ; -- warm
|
PositA : A -> AP ; -- warm
|
||||||
ComparA : A -> NP -> AP ; -- warmer than Spain
|
ComparA : A -> NP -> AP ; -- warmer than Spain
|
||||||
ComplA2 : A2 -> NP -> AP ; -- divisible by 2
|
ComplA2 : A2 -> NP -> AP ; -- divisible by 2
|
||||||
ReflA2 : A2 -> AP ; -- divisible by itself
|
ReflA2 : A2 -> AP ; -- divisible by itself
|
||||||
UseA2 : A2 -> A ; -- divisible
|
UseA2 : A2 -> A ; -- divisible
|
||||||
|
|||||||
@@ -37,29 +37,30 @@ incomplete resource Constructors = open Grammar in {
|
|||||||
--2 Texts, phrases, and utterances
|
--2 Texts, phrases, and utterances
|
||||||
|
|
||||||
mkText : overload {
|
mkText : overload {
|
||||||
mkText : Text ; -- [empty text]
|
mkText : Text ; -- [empty text]
|
||||||
mkText : Phr -> Text ; -- John walks.
|
mkText : Phr -> Text -> Text ; -- John walks. ...
|
||||||
mkText : Utt -> Text ; -- John walks.
|
mkText : Phr -> Text ; -- John walks.
|
||||||
mkText : S -> Text ; -- John walks.
|
mkText : Utt -> Text ; -- John walks.
|
||||||
mkText : Cl -> Text ; -- John walks.
|
mkText : S -> Text ; -- John walks.
|
||||||
mkText : QS -> Text ; -- Does John walk?
|
mkText : Cl -> Text ; -- John walks.
|
||||||
mkText : Imp -> Text ; -- Walk!
|
mkText : QS -> Text ; -- Does John walk?
|
||||||
mkText : Pol -> Imp -> Text ; -- Don't walk!
|
mkText : Imp -> Text ; -- Walk!
|
||||||
mkText : Phr -> Text -> Text -- John walks. ...
|
mkText : Pol -> Imp -> Text -- Don't walk!
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkPhr : overload {
|
mkPhr : overload {
|
||||||
mkPhr : PConj -> Utt -> Voc -> Phr; -- But go home my friend
|
mkPhr : PConj -> Utt -> Voc -> Phr ; -- But go home my friend
|
||||||
mkPhr : Utt -> Phr ; -- Go home
|
mkPhr : Utt -> Phr ; -- Go home
|
||||||
mkPhr : S -> Phr -- I go home
|
mkPhr : S -> Phr ; -- I go home
|
||||||
|
mkPhr : Cl -> Phr -- I go home
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkUtt : overload {
|
mkUtt : overload {
|
||||||
mkUtt : S -> Utt ; -- John walked
|
mkUtt : S -> Utt ; -- John walked
|
||||||
mkUtt : Cl -> Utt ; -- John walks
|
mkUtt : Cl -> Utt ; -- John walks
|
||||||
mkUtt : QS -> Utt ; -- is it good
|
mkUtt : QS -> Utt ; -- is it good
|
||||||
mkUtt : Pol -> Imp -> Utt ; -- (don't) help yourself
|
mkUtt : Pol -> Imp -> Utt ; -- (don't) help yourself
|
||||||
mkUtt : Imp -> Utt ; -- help yourself
|
mkUtt : Imp -> Utt ; -- help yourself
|
||||||
mkUtt : IP -> Utt ; -- who
|
mkUtt : IP -> Utt ; -- who
|
||||||
mkUtt : IAdv -> Utt ; -- why
|
mkUtt : IAdv -> Utt ; -- why
|
||||||
mkUtt : NP -> Utt ; -- this man
|
mkUtt : NP -> Utt ; -- this man
|
||||||
@@ -86,54 +87,54 @@ incomplete resource Constructors = open Grammar in {
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkCl : overload {
|
mkCl : overload {
|
||||||
mkCl : NP -> VP -> Cl ; -- John wants to walk
|
mkCl : NP -> VP -> Cl ; -- John wants to walk
|
||||||
mkCl : NP -> V -> Cl ; -- John walks
|
mkCl : NP -> V -> Cl ; -- John walks
|
||||||
mkCl : NP -> V2 -> NP -> Cl ; -- John uses it
|
mkCl : NP -> V2 -> NP -> Cl ; -- John uses it
|
||||||
mkCl : VP -> Cl ; -- it rains
|
mkCl : VP -> Cl ; -- it rains
|
||||||
mkCl : NP -> RS -> Cl ; -- it is you who did it
|
mkCl : NP -> RS -> Cl ; -- it is you who did it
|
||||||
mkCl : Adv -> S -> Cl ; -- it is yesterday she arrived
|
mkCl : Adv -> S -> Cl ; -- it is yesterday she arrived
|
||||||
mkCl : NP -> Cl ; -- there is a house
|
mkCl : NP -> Cl ; -- there is a house
|
||||||
mkCl : NP -> AP -> Cl ; -- John is nice and warm
|
mkCl : NP -> AP -> Cl ; -- John is nice and warm
|
||||||
mkCl : NP -> A -> Cl ; -- John is warm
|
mkCl : NP -> A -> Cl ; -- John is warm
|
||||||
mkCl : NP -> A -> NP -> Cl; -- John is warmer than Mary
|
mkCl : NP -> A -> NP -> Cl; -- John is warmer than Mary
|
||||||
mkCl : NP -> A2 -> NP -> Cl; -- John is married to Mary
|
mkCl : NP -> A2 -> NP -> Cl; -- John is married to Mary
|
||||||
mkCl : NP -> NP -> Cl ; -- John is a man
|
mkCl : NP -> NP -> Cl ; -- John is a man
|
||||||
mkCl : NP -> Adv -> Cl -- John is here
|
mkCl : NP -> Adv -> Cl -- John is here
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
--2 Verb phrases and imperatives
|
--2 Verb phrases and imperatives
|
||||||
|
|
||||||
mkVP : overload {
|
mkVP : overload {
|
||||||
mkVP : V -> VP ; -- sleep
|
mkVP : V -> VP ; -- sleep
|
||||||
mkVP : V2 -> NP -> VP ; -- use it
|
mkVP : V2 -> NP -> VP ; -- use it
|
||||||
mkVP : V3 -> NP -> NP -> VP ; -- send a message to her
|
mkVP : V3 -> NP -> NP -> VP ; -- send a message to her
|
||||||
mkVP : VV -> VP -> VP ; -- want to run
|
mkVP : VV -> VP -> VP ; -- want to run
|
||||||
mkVP : VS -> S -> VP ; -- know that she runs
|
mkVP : VS -> S -> VP ; -- know that she runs
|
||||||
mkVP : VQ -> QS -> VP ; -- ask if she runs
|
mkVP : VQ -> QS -> VP ; -- ask if she runs
|
||||||
mkVP : VA -> AP -> VP ; -- look red
|
mkVP : VA -> AP -> VP ; -- look red
|
||||||
mkVP : V2A -> NP -> AP -> VP ; -- paint the house red
|
mkVP : V2A -> NP -> AP -> VP ; -- paint the house red
|
||||||
mkVP : AP -> VP ; -- be warm
|
mkVP : AP -> VP ; -- be warm
|
||||||
mkVP : NP -> VP ; -- be a man
|
mkVP : NP -> VP ; -- be a man
|
||||||
mkVP : Adv -> VP ; -- be here
|
mkVP : Adv -> VP ; -- be here
|
||||||
mkVP : VP -> Adv -> VP ; -- sleep here
|
mkVP : VP -> Adv -> VP ; -- sleep here
|
||||||
mkVP : AdV -> VP -> VP -- always sleep
|
mkVP : AdV -> VP -> VP -- always sleep
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkImp : overload {
|
mkImp : overload {
|
||||||
mkImp : VP -> Imp ; -- go there now
|
mkImp : VP -> Imp ; -- go there now
|
||||||
mkImp : V -> Imp ; -- go
|
mkImp : V -> Imp ; -- go
|
||||||
mkImp : V2 -> NP -> Imp -- take it
|
mkImp : V2 -> NP -> Imp -- take it
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
--2 Noun phrases and determiners
|
--2 Noun phrases and determiners
|
||||||
|
|
||||||
mkNP : overload {
|
mkNP : overload {
|
||||||
mkNP : Det -> CN -> NP ; -- the old man
|
mkNP : Det -> CN -> NP ; -- the old man
|
||||||
mkNP : Det -> N -> NP ; -- the man
|
mkNP : Det -> N -> NP ; -- the man
|
||||||
mkNP : Num -> CN -> NP ; -- forty-five old men
|
mkNP : Num -> CN -> NP ; -- forty-five old men
|
||||||
mkNP : Num -> N -> NP ; -- forty-five men
|
mkNP : Num -> N -> NP ; -- forty-five men
|
||||||
mkNP : Int -> CN -> NP ; -- 51 old men
|
mkNP : Int -> CN -> NP ; -- 51 old men
|
||||||
mkNP : Int -> N -> NP ; -- 51 men
|
mkNP : Int -> N -> NP ; -- 51 men
|
||||||
mkNP : Digit -> CN -> NP; -- five old men
|
mkNP : Digit -> CN -> NP; -- five old men
|
||||||
mkNP : Digit -> N -> NP ; -- five men
|
mkNP : Digit -> N -> NP ; -- five men
|
||||||
mkNP : PN -> NP ; -- John
|
mkNP : PN -> NP ; -- John
|
||||||
@@ -141,29 +142,29 @@ incomplete resource Constructors = open Grammar in {
|
|||||||
mkNP : Predet -> NP -> NP ; -- all the men
|
mkNP : Predet -> NP -> NP ; -- all the men
|
||||||
mkNP : NP -> V2 -> NP ; -- the number squared
|
mkNP : NP -> V2 -> NP ; -- the number squared
|
||||||
mkNP : NP -> Adv -> NP ; -- Paris at midnight
|
mkNP : NP -> Adv -> NP ; -- Paris at midnight
|
||||||
mkNP : Conj -> NP -> NP -> NP ; -- John and Mary walk
|
mkNP : Conj -> NP -> NP -> NP ; -- John and Mary
|
||||||
mkNP : DConj -> NP -> NP -> NP ; -- both John and Mary walk
|
mkNP : DConj -> NP -> NP -> NP ; -- both John and Mary
|
||||||
mkNP : Conj -> ListNP -> NP ; -- John, Mary, and Bill walk
|
mkNP : Conj -> ListNP -> NP ; -- John, Mary, and Bill
|
||||||
mkNP : DConj -> ListNP -> NP -- both John, Mary, and Bill walk
|
mkNP : DConj -> ListNP -> NP -- both John, Mary, and Bill
|
||||||
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkDet : overload {
|
mkDet : overload {
|
||||||
mkDet : QuantSg -> Ord -> Det ; -- this best (man)
|
mkDet : QuantSg -> Ord -> Det ; -- this best (man)
|
||||||
mkDet : Det ; -- the (man)
|
mkDet : Det ; -- the (man)
|
||||||
mkDet : QuantSg -> Det ; -- this (man)
|
mkDet : QuantSg -> Det ; -- this (man)
|
||||||
mkDet : QuantPl -> Num -> Ord -> Det ; -- these five best (men)
|
mkDet : QuantPl -> Num -> Ord -> Det ; -- these five best (men)
|
||||||
mkDet : QuantPl -> Det ; -- these (men)
|
mkDet : QuantPl -> Det ; -- these (men)
|
||||||
mkDet : Quant -> Det ; -- this (man)
|
mkDet : Quant -> Det ; -- this (man)
|
||||||
mkDet : Num -> Det ; -- forty-five (men)
|
mkDet : Num -> Det ; -- forty-five (men)
|
||||||
mkDet : Int -> Det ; -- 51 (men)
|
mkDet : Int -> Det ; -- 51 (men)
|
||||||
mkDet : Digit -> Det ; -- five (men)
|
mkDet : Digit -> Det ; -- five (men)
|
||||||
mkDet : Pron -> Det -- my (house)
|
mkDet : Pron -> Det -- my (house)
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
def_Det : Det ; -- the (man)
|
def_Det : Det ; -- the (man)
|
||||||
indef_Det : Det ; -- a (man)
|
indef_Det : Det ; -- a (man)
|
||||||
mass_Det : Det ; -- (water)
|
mass_Det : Det ; -- (water)
|
||||||
|
|
||||||
-- More determiners are available in the Structural module
|
-- More determiners are available in the Structural module
|
||||||
|
|
||||||
@@ -172,15 +173,15 @@ incomplete resource Constructors = open Grammar in {
|
|||||||
|
|
||||||
mkNum : overload {
|
mkNum : overload {
|
||||||
mkNum : Num ; -- [no num]
|
mkNum : Num ; -- [no num]
|
||||||
mkNum : Int -> Num ; -- 51
|
mkNum : Int -> Num ; -- 51
|
||||||
mkNum : Digit -> Num
|
mkNum : Digit -> Num
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkOrd : overload {
|
mkOrd : overload {
|
||||||
mkOrd : Ord ; -- [no ord]
|
mkOrd : Ord ; -- [no ord]
|
||||||
mkOrd : Int -> Ord ; -- 51st
|
mkOrd : Int -> Ord ; -- 51st
|
||||||
mkOrd : Digit -> Ord ; -- fifth
|
mkOrd : Digit -> Ord ; -- fifth
|
||||||
mkOrd : A -> Ord -- largest
|
mkOrd : A -> Ord -- largest
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
--2 Common nouns
|
--2 Common nouns
|
||||||
|
|||||||
104
lib/resource-1.0/api/todoConstructors.txt
Normal file
104
lib/resource-1.0/api/todoConstructors.txt
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
-- Text
|
||||||
|
TQuestMark : Phr -> Text -> Text ; -- Are you OK? ...
|
||||||
|
TExclMark : Phr -> Text -> Text ; -- John walks! ...
|
||||||
|
|
||||||
|
-- Utt
|
||||||
|
UttImpPl : Pol -> Imp -> Utt; -- (don't) help yourselves
|
||||||
|
UttImpPol : Pol -> Imp -> Utt ; -- (don't) help (polite)
|
||||||
|
ImpPl1 : VP -> Utt ; -- let's go
|
||||||
|
|
||||||
|
-- Cl
|
||||||
|
GenericCl : VP -> Cl ; -- one sleeps
|
||||||
|
|
||||||
|
|
||||||
|
-- VP
|
||||||
|
ReflV2 : V2 -> VP ; -- use itself
|
||||||
|
PassV2 : V2 -> VP ; -- be used
|
||||||
|
ProgrVP : VP -> VP ; -- be sleeping
|
||||||
|
|
||||||
|
|
||||||
|
-- Verb: coercions
|
||||||
|
UseVQ : VQ -> V2 ; -- ask (a question)
|
||||||
|
UseVS : VS -> V2 ; -- know (a secret)
|
||||||
|
|
||||||
|
-- how to arrange and extend these
|
||||||
|
def_Det : Det ; -- the (man)
|
||||||
|
indef_Det : Det ; -- a (man)
|
||||||
|
mass_Det : Det ; -- (water)
|
||||||
|
|
||||||
|
-- Num
|
||||||
|
NumNumeral : Numeral -> Num ; -- fifty-one
|
||||||
|
AdNum : AdN -> Num -> Num ; -- almost 51
|
||||||
|
|
||||||
|
-- Ord
|
||||||
|
OrdNumeral : Numeral -> Ord ; -- fifty-first
|
||||||
|
|
||||||
|
-- Adjective: strange rule, not covered
|
||||||
|
UseA2 : A2 -> A ; -- divisible
|
||||||
|
|
||||||
|
-- CAdv (in Adverb)
|
||||||
|
AdnCAdv : CAdv -> AdN ; -- more (than five)
|
||||||
|
|
||||||
|
-- QCl
|
||||||
|
QuestIComp : IComp -> NP -> QCl ; -- where is John
|
||||||
|
|
||||||
|
-- mkIAdv
|
||||||
|
PrepIP : Prep -> IP -> IAdv ; -- with whom
|
||||||
|
|
||||||
|
-- mkIComp
|
||||||
|
CompIAdv : IAdv -> IComp ; -- where
|
||||||
|
|
||||||
|
-- ListX = ListAdv, ListAP, ListNP, ListS
|
||||||
|
BaseX
|
||||||
|
ConsX
|
||||||
|
|
||||||
|
-- RS, QS: all special cases found in S?
|
||||||
|
|
||||||
|
-- Pol, Tense, Ant
|
||||||
|
PPos, PNeg : Pol ; -- I sleep/don't sleep
|
||||||
|
TPres : Tense ;
|
||||||
|
ASimul : Ant ;
|
||||||
|
TPast, TFut, TCond : Tense ; -- I slept/will sleep/would sleep --# notpresent
|
||||||
|
AAnter : Ant ; -- I have slept --# notpresent
|
||||||
|
|
||||||
|
|
||||||
|
------------------------------------------
|
||||||
|
--- strange cats:
|
||||||
|
|
||||||
|
SC
|
||||||
|
mkCN : CN -> SC -> CN ; -- fact that John smokes, question if he does
|
||||||
|
mkCN : N -> SC -> CN ; -- fact that John smokes, question if he does
|
||||||
|
mkAP : AP -> SC -> AP ; -- great that she won; uncertain if she did
|
||||||
|
|
||||||
|
Slash
|
||||||
|
mkQCl : IP -> Slash -> QCl ; -- who does John love
|
||||||
|
mkRCl : RP -> Slash -> RCl -- whom John loves
|
||||||
|
mkSlash : Slash -> Adv -> Slash ; -- (whom) he sees tomorrow
|
||||||
|
|
||||||
|
VP?
|
||||||
|
-- appears in 9 places, of which 2 are recursive
|
||||||
|
|
||||||
|
-- Comp: already eliminated
|
||||||
|
|
||||||
|
--------------------------------------------
|
||||||
|
--- granted special cases
|
||||||
|
|
||||||
|
Text - Phr - Utt
|
||||||
|
|
||||||
|
S - Cl -- Tense Ant Pol
|
||||||
|
QS - QCl
|
||||||
|
RS - RCl
|
||||||
|
|
||||||
|
VP - V | V2 NP | V3 NP NP ...
|
||||||
|
|
||||||
|
NP - PN | Pron
|
||||||
|
|
||||||
|
CN - N
|
||||||
|
|
||||||
|
AP - A
|
||||||
|
|
||||||
|
Det - Num | Int | Digit
|
||||||
|
|
||||||
|
Num - Numeral | Digit | Int
|
||||||
|
|
||||||
|
ListX - X X
|
||||||
@@ -115,15 +115,7 @@ oper
|
|||||||
mkN3 : N -> Prep -> Prep -> N3 ;
|
mkN3 : N -> Prep -> Prep -> N3 ;
|
||||||
|
|
||||||
|
|
||||||
--3 Relational common noun phrases
|
|
||||||
--
|
|
||||||
-- In some cases, you may want to make a complex $CN$ into a
|
|
||||||
-- relational noun (e.g. "the old town hall of").
|
|
||||||
|
|
||||||
cnN2 : CN -> Prep -> N2 ;
|
|
||||||
cnN3 : CN -> Prep -> Prep -> N3 ;
|
|
||||||
|
|
||||||
--
|
|
||||||
--3 Proper names and noun phrases
|
--3 Proper names and noun phrases
|
||||||
--
|
--
|
||||||
-- Proper names, with a regular genitive, are formed as follows
|
-- Proper names, with a regular genitive, are formed as follows
|
||||||
@@ -346,6 +338,16 @@ oper
|
|||||||
mkN2 = \n,p -> n ** {lock_N2 = <> ; c2 = p.s} ;
|
mkN2 = \n,p -> n ** {lock_N2 = <> ; c2 = p.s} ;
|
||||||
regN2 n = mkN2 (regN n) (mkPrep "of") ;
|
regN2 n = mkN2 (regN n) (mkPrep "of") ;
|
||||||
mkN3 = \n,p,q -> n ** {lock_N3 = <> ; c2 = p.s ; c3 = q.s} ;
|
mkN3 = \n,p,q -> n ** {lock_N3 = <> ; c2 = p.s ; c3 = q.s} ;
|
||||||
|
|
||||||
|
--3 Relational common noun phrases
|
||||||
|
--
|
||||||
|
-- In some cases, you may want to make a complex $CN$ into a
|
||||||
|
-- relational noun (e.g. "the old town hall of").
|
||||||
|
|
||||||
|
cnN2 : CN -> Prep -> N2 ;
|
||||||
|
cnN3 : CN -> Prep -> Prep -> N3 ;
|
||||||
|
|
||||||
|
-- This is obsolete.
|
||||||
cnN2 = \n,p -> n ** {lock_N2 = <> ; c2 = p.s} ;
|
cnN2 = \n,p -> n ** {lock_N2 = <> ; c2 = p.s} ;
|
||||||
cnN3 = \n,p,q -> n ** {lock_N3 = <> ; c2 = p.s ; c3 = q.s} ;
|
cnN3 = \n,p,q -> n ** {lock_N3 = <> ; c2 = p.s ; c3 = q.s} ;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user