mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-23 09:52:55 -06:00
part of Attempto controlled language in English and Swedish
This commit is contained in:
245
examples/attempto/AttemptoI.gf
Normal file
245
examples/attempto/AttemptoI.gf
Normal file
@@ -0,0 +1,245 @@
|
||||
incomplete concrete AttemptoI of Attempto = open
|
||||
Syntax,
|
||||
Symbolic,
|
||||
LexAttempto
|
||||
in {
|
||||
|
||||
lincat CN = Syntax.CN ;
|
||||
lincat NP = Syntax.NP ;
|
||||
lincat Card = Syntax.Card ;
|
||||
lincat PN = Syntax.PN ;
|
||||
lincat A = Syntax.A ;
|
||||
lincat A2 = Syntax.A2 ;
|
||||
lincat AP = Syntax.AP ;
|
||||
lincat RS = Syntax.RS ;
|
||||
lincat Pron = Syntax.Pron ;
|
||||
lincat Prep = Syntax.Prep ;
|
||||
lincat S = Syntax.S ;
|
||||
lincat VP = Syntax.VP ;
|
||||
lincat V = Syntax.V ;
|
||||
lincat V2 = Syntax.V2 ;
|
||||
lincat V3 = Syntax.V3 ;
|
||||
lincat Adv = Syntax.Adv ;
|
||||
lincat Conj = Syntax.Conj ;
|
||||
lincat IP = Syntax.IP ;
|
||||
lincat IAdv = Syntax.IAdv ;
|
||||
lincat QS = Syntax.QS ;
|
||||
lincat Text = Syntax.Text ;
|
||||
lincat ACEText = Syntax.Text ;
|
||||
|
||||
lincat MCN = Syntax.CN ;
|
||||
--lincat Var = Symb ;
|
||||
lincat PP = Adv ;
|
||||
|
||||
lin aNP = mkNP a_Art ;
|
||||
lin theNP = mkNP the_Art ;
|
||||
lin cardNP d = mkNP d ;
|
||||
--lin noNP : CN -> NP ;
|
||||
lin everyNP = mkNP every_Det ;
|
||||
--lin eachNP : CN -> NP ;
|
||||
--lin notEveryNP : CN -> NP ;
|
||||
--lin notEachNP : CN -> NP ;
|
||||
lin theCollNP = mkNP the_Art plNum ;
|
||||
lin someCollNP = mkNP somePl_Det ;
|
||||
lin allCollNP cn = mkNP all_Predet (mkNP a_Art plNum cn) ;
|
||||
|
||||
--lin noCollNP : CN -> NP ;
|
||||
--lin eachTheNP : CN -> NP ;
|
||||
--lin eachSomeNP : CN -> NP ;
|
||||
--lin eachNumNP : Card -> CN -> NP ;
|
||||
|
||||
lin someMassNP = mkNP someSg_Det ;
|
||||
lin allMassNP cn = mkNP all_Predet (mkNP cn) ;
|
||||
|
||||
--lin noMassNP : MCN -> NP ;
|
||||
--lin notAllMassNP : MCN -> NP ;
|
||||
|
||||
lin pnNP = mkNP ;
|
||||
lin intNP = symb ;
|
||||
lin floatNP = symb ;
|
||||
--lin intNegNP : Int -> NP ;
|
||||
|
||||
lin it_NP = mkNP it_Pron ;
|
||||
lin he_NP = mkNP he_Pron ;
|
||||
lin she_NP = mkNP she_Pron ;
|
||||
lin they_NP = mkNP they_Pron ;
|
||||
|
||||
lin conjNP = mkNP and_Conj ;
|
||||
lin adjCN = mkCN ;
|
||||
|
||||
{-
|
||||
lin someone_NP : NP ;
|
||||
lin somebody_NP : NP ;
|
||||
lin something_NP : NP ;
|
||||
lin noone_NP : NP ;
|
||||
lin nothing_NP : NP ;
|
||||
lin not_everyoneNP : NP ;
|
||||
lin not_everybodyNP : NP ;
|
||||
lin not_everythingNP : NP ;
|
||||
|
||||
lin at_leastNP : Card -> CN -> NP ;
|
||||
lin not_at_leastNP : Card -> CN -> NP ;
|
||||
lin at_mostNP : Card -> CN -> NP ;
|
||||
lin not_at_mostNP : Card -> CN -> NP ;
|
||||
lin more_thanNP : Card -> CN -> NP ;
|
||||
lin not_more_thanNP : Card -> CN -> NP ;
|
||||
|
||||
lin nothing_butNP : CN -> NP ; -- nothing but apples
|
||||
lin nothing_butMassNP : MCN -> NP ; -- nothing but water
|
||||
lin nobody_butNP : PN -> NP ; -- nobody but John
|
||||
lin no_butNP : CN -> PN -> NP ; -- no man but John
|
||||
|
||||
cat Unit ; -- SI measurement units
|
||||
cat Var ;
|
||||
|
||||
lin unitNP : Card -> Unit -> NP ;
|
||||
lin unit_ofNP : Card -> Unit -> CN -> NP ; -- 3 kg of apples
|
||||
lin unit_ofMassNP : Card -> Unit -> MCN -> NP ; -- 3 l of water
|
||||
-}
|
||||
lin apposVarCN cn v = mkCN cn (symb v) ;
|
||||
|
||||
lin varNP = symb ;
|
||||
|
||||
-- 2.2.1
|
||||
|
||||
|
||||
lin adjCN = mkCN ;
|
||||
lin positAP = mkAP ;
|
||||
lin comparAP = comparAP ;
|
||||
lin superlAP a = mkAP (mkOrd a) ;
|
||||
|
||||
|
||||
-- 2.2.2
|
||||
|
||||
lin relCN = mkCN ;
|
||||
--lin relNP = mkNP ;
|
||||
|
||||
{-
|
||||
lin andRS : RS -> RS -> RS ;
|
||||
lin orRS : RS -> RS -> RS ;
|
||||
lin eachRS : RS -> RS ; -- each of who
|
||||
-}
|
||||
|
||||
-- 2.2.4
|
||||
|
||||
lin genNP = genitiveNP ;
|
||||
lin ofCN cn np = mkCN cn (mkAdv possess_Prep np) ;
|
||||
lin genOwnNP np cn = genitiveNP np (mkCN own_A cn) ;
|
||||
|
||||
-- 2.3.1
|
||||
|
||||
lin vpS np vp = mkS (mkCl np vp) ;
|
||||
lin neg_vpS np vp = mkS negativePol (mkCl np vp) ;
|
||||
|
||||
|
||||
--lin not_provably_vpS : NP -> VP -> S ;
|
||||
|
||||
lin vVP = mkVP ;
|
||||
lin v2VP = mkVP ;
|
||||
lin v3VP = mkVP ;
|
||||
|
||||
-- 2.3.2
|
||||
|
||||
lin apVP = mkVP ;
|
||||
lin compVP a np = mkVP (mkAP a np) ;
|
||||
--lin as_asVP : A -> NP -> S ; -- John is as rich as Mary
|
||||
|
||||
-- John is as fond-of Mary as Bill
|
||||
-- John is more fond-of Mary than Bill
|
||||
-- John is as fond-of Mary as of Sue
|
||||
-- John is more fond-of Mary than of Sue
|
||||
|
||||
|
||||
lincat PP = Adv ;
|
||||
lincat [PP] = Adv ;
|
||||
|
||||
lin BasePP p = p ;
|
||||
|
||||
lin ppVP = mkVP ;
|
||||
|
||||
lin prepPP = mkAdv ;
|
||||
|
||||
-- 2.3.5
|
||||
|
||||
lin canVP = mkVP can_VV ;
|
||||
lin mustVP = mkVP must_VV ;
|
||||
|
||||
lin have_toVP = mkVP have_VV ;
|
||||
|
||||
-- 2.4
|
||||
|
||||
lin modVP = mkVP ;
|
||||
|
||||
-- 3.2
|
||||
|
||||
lin thereNP np = mkS (mkCl np) ;
|
||||
|
||||
{-
|
||||
-- 3.3
|
||||
-- Boolean formulas = \= < > <= >=
|
||||
-}
|
||||
|
||||
-- 3.4.1
|
||||
|
||||
lin coordS = mkS ;
|
||||
|
||||
lin and_Conj = Syntax.and_Conj ;
|
||||
lin or_Conj = Syntax.or_Conj ;
|
||||
--lin comma_and_Conj : Conj ; -- lower precedence
|
||||
--lin comma_or_Conj : Conj ;
|
||||
|
||||
-- 3.4.3
|
||||
{-
|
||||
lin for_everyS : CN -> S -> S ;
|
||||
lin for_eachS : CN -> S -> S ;
|
||||
lin for_each_ofS : Card -> CN -> S -> S ; -- for each of 3 men
|
||||
lin for_allMassS : MCN -> S -> S ; -- for all water
|
||||
|
||||
-- 3.4.4
|
||||
|
||||
lin if_thenS : S -> S -> S ;
|
||||
-}
|
||||
|
||||
oper adj_thatCl : A -> S -> Cl = \a,s -> mkCl (mkVP (mkAP (mkAP a) s)) ;
|
||||
|
||||
lin falseS s = mkS (adj_thatCl false_A s) ;
|
||||
lin not_provableS s = mkS negativePol (adj_thatCl provable_A s) ;
|
||||
lin possibleS s = mkS (adj_thatCl possible_A s) ;
|
||||
lin not_possibleS s = mkS negativePol (adj_thatCl possible_A s) ;
|
||||
lin necessaryS s = mkS (adj_thatCl necessary_A s) ;
|
||||
lin not_necessaryS s = mkS negativePol (adj_thatCl necessary_A s) ;
|
||||
|
||||
|
||||
--lin thatS s t = mkS ;
|
||||
|
||||
-- 3.5
|
||||
|
||||
lin npQS np vp = mkQS (mkCl np vp) ;
|
||||
lin ipQS ip vp = mkQS (mkQCl ip vp) ;
|
||||
lin iadvQS iadv np vp = mkQS (mkQCl iadv (mkCl np vp)) ;
|
||||
|
||||
lin where_IAdv = Syntax.where_IAdv ;
|
||||
lin when_IAdv = Syntax.when_IAdv ;
|
||||
lin whoSg_IP = Syntax.whoSg_IP ;
|
||||
lin whoPl_IP = Syntax.whoPl_IP ;
|
||||
|
||||
{-
|
||||
lin there_ipQS : IP -> QS ; -- there is who
|
||||
|
||||
lin whoseIP : CN -> IP ; -- whose dog
|
||||
-}
|
||||
-- 3.6
|
||||
|
||||
lin impVP np vp = mkText (mkPhr (mkUtt (mkImp vp)) (mkVoc np)) exclMarkPunct ;
|
||||
---- John, go to the bank!
|
||||
|
||||
|
||||
lin consText = mkText ;
|
||||
lin baseText t = t ;
|
||||
lin sText = mkText ;
|
||||
lin qsText = mkText ;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user