mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-24 02:12:50 -06:00
added common to darcs in resource-1.4
This commit is contained in:
31
lib/resource-1.4/common/CommonX.gf
Normal file
31
lib/resource-1.4/common/CommonX.gf
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
concrete CommonX of Common = open (R = ParamX) in {
|
||||||
|
|
||||||
|
lincat
|
||||||
|
Text = {s : Str} ; --lock_Text : {}} ;
|
||||||
|
Phr = {s : Str} ; --lock_Phr : {}} ;
|
||||||
|
Utt = {s : Str} ; --lock_Utt : {}} ;
|
||||||
|
Voc = {s : Str} ; --lock_Voc : {}} ;
|
||||||
|
SC = {s : Str} ; --lock_SC : {}} ;
|
||||||
|
Adv = {s : Str} ; --lock_Adv : {}} ;
|
||||||
|
AdV = {s : Str} ; --lock_AdV : {}} ;
|
||||||
|
AdA = {s : Str} ; --lock_AdA : {}} ;
|
||||||
|
AdN = {s : Str} ; --lock_AdN : {}} ;
|
||||||
|
IAdv = {s : Str} ; --lock_IAdv : {}} ;
|
||||||
|
CAdv = {s : Str} ; --lock_CAdv : {}} ;
|
||||||
|
PConj = {s : Str} ; --lock_PConj : {}} ;
|
||||||
|
|
||||||
|
Tense = {s : Str ; t : R.Tense} ;
|
||||||
|
Ant = {s : Str ; a : R.Anteriority} ;
|
||||||
|
Pol = {s : Str ; p : R.Polarity} ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
PPos = {s = []} ** {p = R.Pos} ;
|
||||||
|
PNeg = {s = []} ** {p = R.Neg} ;
|
||||||
|
TPres = {s = []} ** {t = R.Pres} ;
|
||||||
|
TPast = {s = []} ** {t = R.Past} ; --# notpresent
|
||||||
|
TFut = {s = []} ** {t = R.Fut} ; --# notpresent
|
||||||
|
TCond = {s = []} ** {t = R.Cond} ; --# notpresent
|
||||||
|
ASimul = {s = []} ** {a = R.Simul} ;
|
||||||
|
AAnter = {s = []} ** {a = R.Anter} ; --# notpresent
|
||||||
|
|
||||||
|
}
|
||||||
19
lib/resource-1.4/common/ConstructX.gf
Normal file
19
lib/resource-1.4/common/ConstructX.gf
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
--# -path=.:../abstract:prelude
|
||||||
|
|
||||||
|
resource ConstructX = open CommonX in {
|
||||||
|
|
||||||
|
oper
|
||||||
|
mkText : Str -> Text = \s -> {s = s ; lock_Text = <>} ;
|
||||||
|
mkPhr : Str -> Phr = \s -> {s = s ; lock_Phr = <>} ;
|
||||||
|
mkUtt : Str -> Utt = \s -> {s = s ; lock_Utt = <>} ;
|
||||||
|
mkVoc : Str -> Voc = \s -> {s = s ; lock_Voc = <>} ;
|
||||||
|
mkSC : Str -> SC = \s -> {s = s ; lock_SC = <>} ;
|
||||||
|
mkAdv : Str -> Adv = \s -> {s = s ; lock_Adv = <>} ;
|
||||||
|
mkAdV : Str -> AdV = \s -> {s = s ; lock_AdV = <>} ;
|
||||||
|
mkAdA : Str -> AdA = \s -> {s = s ; lock_AdA = <>} ;
|
||||||
|
mkAdN : Str -> AdN = \s -> {s = s ; lock_AdN = <>} ;
|
||||||
|
mkIAdv : Str -> IAdv = \s -> {s = s ; lock_IAdv = <>} ;
|
||||||
|
mkCAdv : Str -> CAdv = \s -> {s = s ; lock_CAdv = <>} ;
|
||||||
|
mkPConj : Str -> PConj = \s -> {s = s ; lock_PConj = <>} ;
|
||||||
|
|
||||||
|
}
|
||||||
101
lib/resource-1.4/common/Overload.gf
Normal file
101
lib/resource-1.4/common/Overload.gf
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
incomplete resource Overload = open Grammar in {
|
||||||
|
|
||||||
|
oper
|
||||||
|
|
||||||
|
pred = overload {
|
||||||
|
pred : NP -> V -> Cl
|
||||||
|
= \v,np -> PredVP np (UseV v) ;
|
||||||
|
pred : NP -> V2 -> NP -> Cl
|
||||||
|
= \v,np,ob -> PredVP np (ComplV2 v ob) ;
|
||||||
|
pred : NP -> V3 -> NP -> NP -> Cl
|
||||||
|
= \v,np,ob,ob2 ->
|
||||||
|
PredVP np (ComplV3 v ob ob2) ;
|
||||||
|
pred : NP -> A -> Cl
|
||||||
|
= \a,np ->
|
||||||
|
PredVP np (UseComp (CompAP (PositA a)))
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mod = overload {
|
||||||
|
mod : A -> N -> CN
|
||||||
|
= \a,n -> AdjCN (PositA a) (UseN n) ;
|
||||||
|
mod : AP -> N -> CN
|
||||||
|
= \a,n -> AdjCN a (UseN n) ;
|
||||||
|
mod : AP -> CN -> CN
|
||||||
|
= \a,n -> AdjCN a n ;
|
||||||
|
mod : AdA -> A -> AP
|
||||||
|
= \m,a -> AdAP m (PositA a) ;
|
||||||
|
mod : Quant -> N -> NP
|
||||||
|
= \q,n -> DetCN (DetSg (SgQuant q)
|
||||||
|
NoOrd) (UseN n) ;
|
||||||
|
mod : Quant -> CN -> NP
|
||||||
|
= \q,n -> DetCN (DetSg
|
||||||
|
(SgQuant q) NoOrd) n ;
|
||||||
|
mod : Predet -> N -> NP
|
||||||
|
= \q,n -> PredetNP q (DetCN (DetPl
|
||||||
|
(PlQuant IndefArt) NoNum NoOrd) (UseN n)) ;
|
||||||
|
mod : Num -> N -> NP
|
||||||
|
= \nu,n -> DetCN (DetPl (PlQuant
|
||||||
|
IndefArt) nu NoOrd) (UseN n)
|
||||||
|
|
||||||
|
} ;
|
||||||
|
|
||||||
|
coord = overload {
|
||||||
|
coord : Conj -> Adv -> Adv -> Adv
|
||||||
|
= \c,x,y -> ConjAdv c (BaseAdv x y) ;
|
||||||
|
coord : Conj -> AP -> AP -> AP
|
||||||
|
= \c,x,y -> ConjAP c (BaseAP x y) ;
|
||||||
|
coord : Conj -> NP -> NP -> NP
|
||||||
|
= \c,x,y -> ConjNP c (BaseNP x y) ;
|
||||||
|
coord : Conj -> S -> S -> S
|
||||||
|
= \c,x,y -> ConjS c (BaseS x y) ;
|
||||||
|
coord : DConj -> Adv -> Adv -> Adv
|
||||||
|
= \c,x,y -> DConjAdv c (BaseAdv x y) ;
|
||||||
|
coord : DConj -> AP -> AP -> AP
|
||||||
|
= \c,x,y -> DConjAP c (BaseAP x y) ;
|
||||||
|
coord : DConj -> NP -> NP -> NP
|
||||||
|
= \c,x,y -> DConjNP c (BaseNP x y) ;
|
||||||
|
coord : DConj -> S -> S -> S
|
||||||
|
= \c,x,y -> DConjS c (BaseS x y) ;
|
||||||
|
coord : Conj -> ListAdv -> Adv
|
||||||
|
= \c,xy -> ConjAdv c xy ;
|
||||||
|
coord : Conj -> ListAP -> AP
|
||||||
|
= \c,xy -> ConjAP c xy ;
|
||||||
|
coord : Conj -> ListNP -> NP
|
||||||
|
= \c,xy -> ConjNP c xy ;
|
||||||
|
coord : Conj -> ListS -> S
|
||||||
|
= \c,xy -> ConjS c xy ;
|
||||||
|
coord : DConj -> ListAdv -> Adv
|
||||||
|
= \c,xy -> DConjAdv c xy ;
|
||||||
|
coord : DConj -> ListAP -> AP
|
||||||
|
= \c,xy -> DConjAP c xy ;
|
||||||
|
coord : DConj -> ListNP -> NP
|
||||||
|
= \c,xy -> DConjNP c xy ;
|
||||||
|
coord : DConj -> ListS -> S
|
||||||
|
= \c,xy -> DConjS c xy
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkCN = overload {
|
||||||
|
mkCN : N -> CN
|
||||||
|
= UseN ;
|
||||||
|
mkCN : A -> N -> CN
|
||||||
|
= \a,n -> AdjCN (PositA a) (UseN n) ;
|
||||||
|
mkCN : AP -> N -> CN
|
||||||
|
= \a,n -> AdjCN a (UseN n) ;
|
||||||
|
mkCN : AP -> CN -> CN
|
||||||
|
= \a,n -> AdjCN a n ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkNP = overload {
|
||||||
|
mkNP : NP
|
||||||
|
= this_NP ;
|
||||||
|
mkNP : Pron -> NP
|
||||||
|
= UsePron ;
|
||||||
|
mkNP : PN -> NP
|
||||||
|
= UsePN ;
|
||||||
|
mkNP : Quant -> N -> NP
|
||||||
|
= \q,n -> DetCN (DetSg (SgQuant q) NoOrd) (UseN n) ;
|
||||||
|
mkNP : Predet -> N -> NP
|
||||||
|
= \q,n -> PredetNP q (DetCN (DetPl (PlQuant IndefArt) NoNum NoOrd) (UseN n))
|
||||||
|
} ;
|
||||||
|
|
||||||
|
}
|
||||||
65
lib/resource-1.4/common/ParamX.gf
Normal file
65
lib/resource-1.4/common/ParamX.gf
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
resource ParamX = open Prelude in {
|
||||||
|
|
||||||
|
---- flags optimize=noexpand ;
|
||||||
|
|
||||||
|
param
|
||||||
|
Number = Sg | Pl ;
|
||||||
|
Person = P1 | P2 | P3 ;
|
||||||
|
Degree = Posit | Compar | Superl ;
|
||||||
|
|
||||||
|
Anteriority =
|
||||||
|
Simul
|
||||||
|
| Anter --# notpresent
|
||||||
|
;
|
||||||
|
Tense =
|
||||||
|
Pres
|
||||||
|
| Past --# notpresent
|
||||||
|
| Fut --# notpresent
|
||||||
|
| Cond --# notpresent
|
||||||
|
;
|
||||||
|
|
||||||
|
param
|
||||||
|
|
||||||
|
Polarity = Pos | Neg ;
|
||||||
|
|
||||||
|
QForm = QDir | QIndir ;
|
||||||
|
|
||||||
|
-- Imperatives: True = polite, False = familiar.
|
||||||
|
|
||||||
|
ImpForm = ImpF Number Bool ;
|
||||||
|
|
||||||
|
oper
|
||||||
|
numImp : ImpForm -> Number = \i ->
|
||||||
|
case i of {
|
||||||
|
ImpF n _ => n
|
||||||
|
} ;
|
||||||
|
|
||||||
|
conjNumber : Number -> Number -> Number = \m,n ->
|
||||||
|
case m of {
|
||||||
|
Sg => n ;
|
||||||
|
_ => Pl
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- For persons, we let the latter argument win ("either you or I am absent"
|
||||||
|
-- but "either I or you are absent"). This is not quite clear.
|
||||||
|
|
||||||
|
conjPerson : Person -> Person -> Person = \_,p ->
|
||||||
|
p ;
|
||||||
|
|
||||||
|
-- To construct a record with a polarity-dependent table.
|
||||||
|
|
||||||
|
polCases : SS -> SS -> {s : Polarity => Str} = \true,false -> {
|
||||||
|
s = table {
|
||||||
|
Pos => true.s ;
|
||||||
|
Neg => false.s
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- To count the length of a tail in a sequence of digits, e.g. to put commas
|
||||||
|
-- as in 1,000,000.
|
||||||
|
|
||||||
|
param
|
||||||
|
DTail = T1 | T2 | T3 ;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
18
lib/resource-1.4/common/TenseX.gf
Normal file
18
lib/resource-1.4/common/TenseX.gf
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
concrete TenseX of Tense = open (R = ParamX) in {
|
||||||
|
|
||||||
|
lincat
|
||||||
|
Tense = {s : Str ; t : R.Tense} ;
|
||||||
|
Ant = {s : Str ; a : R.Anteriority} ;
|
||||||
|
Pol = {s : Str ; p : R.Polarity} ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
PPos = {s = []} ** {p = R.Pos} ;
|
||||||
|
PNeg = {s = []} ** {p = R.Neg} ;
|
||||||
|
TPres = {s = []} ** {t = R.Pres} ;
|
||||||
|
TPast = {s = []} ** {t = R.Past} ;
|
||||||
|
TFut = {s = []} ** {t = R.Fut} ;
|
||||||
|
TCond = {s = []} ** {t = R.Cond} ;
|
||||||
|
ASimul = {s = []} ** {a = R.Simul} ;
|
||||||
|
AAnter = {s = []} ** {a = R.Anter} ;
|
||||||
|
|
||||||
|
}
|
||||||
11
lib/resource-1.4/common/TextX.gf
Normal file
11
lib/resource-1.4/common/TextX.gf
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
concrete TextX of Text = CommonX ** {
|
||||||
|
|
||||||
|
-- This will work for almost all languages except Spanish.
|
||||||
|
|
||||||
|
lin
|
||||||
|
TEmpty = {s = []} ;
|
||||||
|
TFullStop x xs = {s = x.s ++ "." ++ xs.s} ;
|
||||||
|
TQuestMark x xs = {s = x.s ++ "?" ++ xs.s} ;
|
||||||
|
TExclMark x xs = {s = x.s ++ "!" ++ xs.s} ;
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user