From db28875ee44f3dcc6ed57ec7c76dbc645067ef13 Mon Sep 17 00:00:00 2001 From: aarne Date: Mon, 9 Jun 2008 08:40:09 +0000 Subject: [PATCH] added common to darcs in resource-1.4 --- lib/resource-1.4/common/CommonX.gf | 31 ++++++++ lib/resource-1.4/common/ConstructX.gf | 19 +++++ lib/resource-1.4/common/Overload.gf | 101 ++++++++++++++++++++++++++ lib/resource-1.4/common/ParamX.gf | 65 +++++++++++++++++ lib/resource-1.4/common/TenseX.gf | 18 +++++ lib/resource-1.4/common/TextX.gf | 11 +++ 6 files changed, 245 insertions(+) create mode 100644 lib/resource-1.4/common/CommonX.gf create mode 100644 lib/resource-1.4/common/ConstructX.gf create mode 100644 lib/resource-1.4/common/Overload.gf create mode 100644 lib/resource-1.4/common/ParamX.gf create mode 100644 lib/resource-1.4/common/TenseX.gf create mode 100644 lib/resource-1.4/common/TextX.gf diff --git a/lib/resource-1.4/common/CommonX.gf b/lib/resource-1.4/common/CommonX.gf new file mode 100644 index 000000000..bcaf1e4b9 --- /dev/null +++ b/lib/resource-1.4/common/CommonX.gf @@ -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 + +} diff --git a/lib/resource-1.4/common/ConstructX.gf b/lib/resource-1.4/common/ConstructX.gf new file mode 100644 index 000000000..ee4decf00 --- /dev/null +++ b/lib/resource-1.4/common/ConstructX.gf @@ -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 = <>} ; + +} diff --git a/lib/resource-1.4/common/Overload.gf b/lib/resource-1.4/common/Overload.gf new file mode 100644 index 000000000..df7baeab9 --- /dev/null +++ b/lib/resource-1.4/common/Overload.gf @@ -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)) + } ; + +} diff --git a/lib/resource-1.4/common/ParamX.gf b/lib/resource-1.4/common/ParamX.gf new file mode 100644 index 000000000..65901de66 --- /dev/null +++ b/lib/resource-1.4/common/ParamX.gf @@ -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 ; + + +} diff --git a/lib/resource-1.4/common/TenseX.gf b/lib/resource-1.4/common/TenseX.gf new file mode 100644 index 000000000..665bb146d --- /dev/null +++ b/lib/resource-1.4/common/TenseX.gf @@ -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} ; + +} diff --git a/lib/resource-1.4/common/TextX.gf b/lib/resource-1.4/common/TextX.gf new file mode 100644 index 000000000..a5ddebc54 --- /dev/null +++ b/lib/resource-1.4/common/TextX.gf @@ -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} ; + +}