mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-09 04:59:31 -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