diff --git a/lib/doc/synopsis.html b/lib/doc/synopsis.html index 6bb70acd5..7dacfe242 100644 --- a/lib/doc/synopsis.html +++ b/lib/doc/synopsis.html @@ -2779,10 +2779,19 @@ Lexical category, constructors given in

V2 - two-place verb

-

-Lexical category, constructors given in -lexical paradigms. -

+ + + + + + + + + + + +
FunctionTypeExample
have_V2V2have
+

V2A - verb with NP and AP complement

@@ -4561,7 +4570,7 @@ source http://www.cs.chalmers.se/ mkSubj -Str -> Subj = \s -> {s = s lock_Subj = <>} +Str -> Subj = \s -> lin Subj {s = s} @@ -5923,7 +5932,11 @@ source http://www.cs.chalmers.se mkPrep -Str -> NCase -> Prep +Str -> NCase-> Bool -> Prep + + +mkPrep +Str -> NCase -> Prep; noPrep @@ -5943,6 +5956,10 @@ source http://www.cs.chalmers.se mkPN +Str -> Str -> Gender -> Number -> PN = mkPropNI + + +mkPN Str -> Gender -> PN = mkPropNoun @@ -5950,6 +5967,14 @@ source http://www.cs.chalmers.se Str -> Gender -> Number -> PN = mkProperNoun; +mkInAn +PN -> PN = \romania -> + + +mkPropNI +Str -> Str -> Gender -> Number -> PN = + + mkPropN Str -> PN = \Ion -> diff --git a/lib/doc/synopsis.txt b/lib/doc/synopsis.txt index 247220d2e..6a7b48032 100644 --- a/lib/doc/synopsis.txt +++ b/lib/doc/synopsis.txt @@ -623,8 +623,8 @@ Lexical category, constructors given in Lexical category, constructors given in [lexical paradigms #RParadigms]. ==V2 - two-place verb==[V2] -Lexical category, constructors given in -[lexical paradigms #RParadigms]. +|| Function | Type | Example || +| ``have_V2`` | [V2 #V2] | //have// | ==V2A - verb with NP and AP complement==[V2A] Lexical category, constructors given in [lexical paradigms #RParadigms]. @@ -1106,7 +1106,7 @@ source [``http://www.cs.chalmers.se/~aarne/GF/lib/resource/src/english/Paradigms | ``mkAV`` | [A #A] ``->`` [AV #AV] | | ``mkA2V`` | [A #A] ``->`` [Prep #Prep] ``->`` [A2V #A2V] | | ``V0`` | [Type #Type] | -| ``mkSubj`` | ``Str`` ``->`` [Subj #Subj] ``=`` ``\s`` ``->`` ``{s`` ``=`` ``s`` ``lock_Subj`` ``=`` ``<>}`` | +| ``mkSubj`` | ``Str`` ``->`` [Subj #Subj] ``=`` ``\s`` ``->`` ``lin`` [Subj #Subj] ``{s`` ``=`` ``s}`` | ==Paradigms for Finnish== @@ -1496,13 +1496,17 @@ source [``http://www.cs.chalmers.se/~aarne/GF/lib/resource/src/romanian/Paradigm | ``Acc`` | [NCase #NCase] | | ``Dat`` | [NCase #NCase] | | ``Gen`` | [NCase #NCase] | -| ``mkPrep`` | ``Str`` ``->`` [NCase #NCase] ``->`` [Prep #Prep] | +| ``mkPrep`` | ``Str`` ``->`` ``NCase->`` [Bool #Bool] ``->`` [Prep #Prep] | +| ``mkPrep`` | ``Str`` ``->`` [NCase #NCase] ``->`` ``Prep;`` | | ``noPrep`` | [NCase #NCase] ``->`` [Prep #Prep] | | ``mkN2`` | [N #N] ``->`` [Prep #Prep] ``->`` [N2 #N2] | | ``mkN3`` | [N #N] ``->`` [Prep #Prep] ``->`` [Prep #Prep] ``->`` [N3 #N3] | | ``mkPN`` | ``Str`` ``->`` [PN #PN] ``=`` ``mkPropN`` | +| ``mkPN`` | ``Str`` ``->`` ``Str`` ``->`` [Gender #Gender] ``->`` [Number #Number] ``->`` [PN #PN] ``=`` ``mkPropNI`` | | ``mkPN`` | ``Str`` ``->`` [Gender #Gender] ``->`` [PN #PN] ``=`` ``mkPropNoun`` | | ``mkPN`` | ``Str`` ``->`` [Gender #Gender] ``->`` [Number #Number] ``->`` [PN #PN] ``=`` ``mkProperNoun;`` | +| ``mkInAn`` | [PN #PN] ``->`` [PN #PN] ``=`` ``\romania`` ``->`` | +| ``mkPropNI`` | ``Str`` ``->`` ``Str`` ``->`` [Gender #Gender] ``->`` [Number #Number] ``->`` [PN #PN] ``=`` | | ``mkPropN`` | ``Str`` ``->`` [PN #PN] ``=`` ``\Ion`` ``->`` | | ``mkPropNoun`` | ``Str`` ``->`` [Gender #Gender] ``->`` [PN #PN] ``=`` ``\Ion,`` ``gen`` ``->`` | | ``mkProperNoun`` | ``Str`` ``->`` [Gender #Gender] ``->`` [Number #Number] ``->`` [PN #PN] ``=`` ``\Ion,`` ``gen,`` ``num`` ``->`` | diff --git a/lib/src/api/Browse.gf b/lib/src/api/Browse.gf new file mode 100644 index 000000000..223b4f0b2 --- /dev/null +++ b/lib/src/api/Browse.gf @@ -0,0 +1,290 @@ +abstract Browse = Cat, Conjunction, Numeral, Structural, Lexicon ** { + +fun mkAP_1 : A -> AP ; +fun mkAP_2 : A -> NP -> AP ; +fun mkAP_3 : A2 -> NP -> AP ; +fun mkAP_4 : A2 -> AP ; +fun mkAP_5 : AP -> S -> AP ; +fun mkAP_6 : AP -> QS -> AP ; +fun mkAP_7 : AP -> VP -> AP ; +fun mkAP_8 : AdA -> A -> AP ; +fun mkAP_9 : AdA -> AP -> AP ; +fun mkAP_10 : Conj -> AP -> AP -> AP ; +fun mkAP_11 : Conj -> ListAP -> AP ; +fun mkAP_12 : Ord -> AP ; +fun mkAP_13 : CAdv -> AP -> NP -> AP ; +fun mkAdv_16 : A -> Adv ; +fun mkAdv_17 : Prep -> NP -> Adv ; +fun mkAdv_18 : CAdv -> A -> NP -> Adv ; +fun mkAdv_19 : CAdv -> A -> S -> Adv ; +fun mkAdv_20 : AdA -> Adv -> Adv ; +fun mkAdv_21 : Subj -> S -> Adv ; +fun mkAdv_22 : Conj -> Adv -> Adv -> Adv ; +fun mkAdv_23 : Conj -> ListAdv -> Adv ; +fun mkCl_24 : NP -> VP -> Cl ; +fun mkCl_25 : NP -> V -> Cl ; +fun mkCl_26 : NP -> V2 -> NP -> Cl ; +fun mkCl_27 : NP -> V3 -> NP -> NP -> Cl ; +fun mkCl_28 : NP -> VV -> VP -> Cl ; +fun mkCl_29 : NP -> VS -> S -> Cl ; +fun mkCl_30 : NP -> VQ -> QS -> Cl ; +fun mkCl_31 : NP -> VA -> AP -> Cl ; +fun mkCl_32 : NP -> V2A -> NP -> AP -> Cl ; +fun mkCl_33 : NP -> V2S -> NP -> S -> Cl ; +fun mkCl_34 : NP -> V2Q -> NP -> QS -> Cl ; +fun mkCl_35 : NP -> V2V -> NP -> VP -> Cl ; +fun mkCl_36 : VP -> Cl ; +fun mkCl_37 : NP -> RS -> Cl ; +fun mkCl_38 : Adv -> S -> Cl ; +fun mkCl_39 : N -> Cl ; +fun mkCl_40 : CN -> Cl ; +fun mkCl_41 : NP -> Cl ; +fun mkCl_42 : NP -> AP -> Cl ; +fun mkCl_43 : NP -> A -> Cl ; +fun mkCl_44 : NP -> A -> NP -> Cl ; +fun mkCl_45 : NP -> A2 -> NP -> Cl ; +fun mkCl_46 : NP -> NP -> Cl ; +fun mkCl_47 : NP -> CN -> Cl ; +fun mkCl_48 : NP -> N -> Cl ; +fun mkCl_49 : NP -> Adv -> Cl ; +fun mkCl_50 : V -> Cl ; +fun genericCl_51 : VP -> Cl ; +fun mkNP_58 : CN -> NP ; +fun mkNP_59 : N -> NP ; +fun mkNP_60 : Det -> CN -> NP ; +fun mkNP_61 : Det -> N -> NP ; +fun mkNP_62 : Quant -> NP ; +fun mkNP_63 : Quant -> Num -> NP ; +fun mkNP_64 : Det -> NP ; +fun mkNP_65 : Card -> CN -> NP ; +fun mkNP_66 : Card -> N -> NP ; +fun mkNP_67 : Quant -> CN -> NP ; +fun mkNP_68 : Quant -> N -> NP ; +fun mkNP_69 : Quant -> Num -> CN -> NP ; +fun mkNP_70 : Quant -> Num -> N -> NP ; +fun mkNP_71 : Pron -> CN -> NP ; +fun mkNP_72 : Pron -> N -> NP ; +fun mkNP_73 : Numeral -> CN -> NP ; +fun mkNP_74 : Numeral -> N -> NP ; +fun mkNP_75 : Digits -> CN -> NP ; +fun mkNP_76 : Digits -> N -> NP ; +fun mkNP_77 : Digit -> CN -> NP ; +fun mkNP_78 : Digit -> N -> NP ; +fun mkNP_79 : PN -> NP ; +fun mkNP_80 : Pron -> NP ; +fun mkNP_81 : Predet -> NP -> NP ; +fun mkNP_82 : NP -> V2 -> NP ; +fun mkNP_83 : NP -> Adv -> NP ; +fun mkNP_84 : NP -> RS -> NP ; +fun mkNP_85 : Conj -> NP -> NP -> NP ; +fun mkNP_86 : Conj -> ListNP -> NP ; +fun mkDet_90 : Quant -> Ord -> Det ; +fun mkDet_91 : Quant -> Det ; +fun mkDet_92 : Quant -> Num -> Ord -> Det ; +fun mkDet_93 : Quant -> Num -> Det ; +fun mkDet_94 : Card -> Det ; +fun mkDet_95 : Digits -> Det ; +fun mkDet_96 : Numeral -> Det ; +fun mkDet_97 : Pron -> Det ; +fun mkDet_98 : Pron -> Num -> Det ; +fun sgNum_101 : Num ; +fun plNum_102 : Num ; +fun mkCard_103 : Numeral -> Card ; +fun mkCard_104 : Digits -> Card ; +fun mkCard_105 : AdN -> Card -> Card ; +fun mkNum_106 : Numeral -> Num ; +fun mkNum_107 : Digits -> Num ; +fun mkNum_108 : Digit -> Num ; +fun mkNum_109 : Card -> Num ; +fun mkNum_110 : AdN -> Card -> Num ; +fun mkOrd_111 : Numeral -> Ord ; +fun mkOrd_112 : Digits -> Ord ; +fun mkOrd_113 : Digit -> Ord ; +fun mkOrd_114 : A -> Ord ; +fun mkAdN_141 : CAdv -> AdN ; +fun mkDigits_142 : Dig -> Digits ; +fun mkDigits_143 : Dig -> Digits -> Digits ; +fun mkCN_154 : N -> CN ; +fun mkCN_155 : N2 -> NP -> CN ; +fun mkCN_156 : N3 -> NP -> NP -> CN ; +fun mkCN_157 : N2 -> CN ; +fun mkCN_158 : N3 -> CN ; +fun mkCN_159 : AP -> CN -> CN ; +fun mkCN_160 : AP -> N -> CN ; +fun mkCN_161 : CN -> AP -> CN ; +fun mkCN_162 : N -> AP -> CN ; +fun mkCN_163 : A -> CN -> CN ; +fun mkCN_164 : A -> N -> CN ; +fun mkCN_165 : CN -> RS -> CN ; +fun mkCN_166 : N -> RS -> CN ; +fun mkCN_167 : CN -> Adv -> CN ; +fun mkCN_168 : N -> Adv -> CN ; +fun mkCN_169 : CN -> S -> CN ; +fun mkCN_170 : CN -> QS -> CN ; +fun mkCN_171 : CN -> VP -> CN ; +fun mkCN_172 : CN -> NP -> CN ; +fun mkCN_173 : N -> NP -> CN ; +fun mkPhr_174 : PConj -> Utt -> Voc -> Phr ; +fun mkPhr_175 : Utt -> Voc -> Phr ; +fun mkPhr_176 : PConj -> Utt -> Phr ; +fun mkPhr_177 : Utt -> Phr ; +fun mkPhr_178 : S -> Phr ; +fun mkPhr_179 : Cl -> Phr ; +fun mkPhr_180 : QS -> Phr ; +fun mkPhr_181 : Imp -> Phr ; +fun mkPConj_182 : Conj -> PConj ; +fun noPConj_183 : PConj ; +fun mkVoc_184 : NP -> Voc ; +fun noVoc_185 : Voc ; +fun positivePol_186 : Pol ; +fun negativePol_187 : Pol ; +fun simultaneousAnt_188 : Ant ; +fun anteriorAnt_189 : Ant ; +fun presentTense_190 : Tense ; +fun pastTense_191 : Tense ; +fun futureTense_192 : Tense ; +fun conditionalTense_193 : Tense ; +--fun singularImpForm_194 : ImpForm ; +--fun pluralImpForm_195 : ImpForm ; +--fun politeImpForm_196 : ImpForm ; +fun mkUtt_197 : S -> Utt ; +fun mkUtt_198 : Cl -> Utt ; +fun mkUtt_199 : QS -> Utt ; +fun mkUtt_200 : QCl -> Utt ; +--fun mkUtt_201 : ImpForm -> Pol -> Imp -> Utt ; +--fun mkUtt_202 : ImpForm -> Imp -> Utt ; +fun mkUtt_203 : Pol -> Imp -> Utt ; +fun mkUtt_204 : Imp -> Utt ; +fun mkUtt_205 : IP -> Utt ; +fun mkUtt_206 : IAdv -> Utt ; +fun mkUtt_207 : NP -> Utt ; +fun mkUtt_208 : Adv -> Utt ; +fun mkUtt_209 : VP -> Utt ; +fun lets_Utt_210 : VP -> Utt ; +fun mkQCl_211 : Cl -> QCl ; +fun mkQCl_212 : IP -> VP -> QCl ; +fun mkQCl_213 : IP -> ClSlash -> QCl ; +fun mkQCl_214 : IP -> NP -> V2 -> QCl ; +fun mkQCl_215 : IAdv -> Cl -> QCl ; +fun mkQCl_216 : Prep -> IP -> Cl -> QCl ; +fun mkQCl_217 : IAdv -> NP -> QCl ; +fun mkQCl_218 : IP -> NP -> QCl ; +fun mkQCl_219 : IP -> QCl ; +fun mkIP_220 : IDet -> CN -> IP ; +fun mkIP_221 : IDet -> N -> IP ; +fun mkIP_222 : IQuant -> CN -> IP ; +fun mkIP_223 : IQuant -> Num -> CN -> IP ; +fun mkIP_224 : IQuant -> N -> IP ; +fun mkIP_225 : IP -> Adv -> IP ; +fun mkIDet_226 : IQuant -> Num -> IDet ; +fun mkIDet_227 : IQuant -> IDet ; +fun whichSg_IDet_228 : IDet ; +fun whichPl_IDet_229 : IDet ; +fun what_IP_230 : IP ; +fun who_IP_231 : IP ; +fun which_IDet_232 : IDet ; +fun mkIAdv_233 : Prep -> IP -> IAdv ; +fun mkRCl_234 : Cl -> RCl ; +fun mkRCl_235 : RP -> VP -> RCl ; +fun mkRCl_236 : RP -> ClSlash -> RCl ; +fun mkRCl_237 : RP -> NP -> V2 -> RCl ; +fun which_RP_238 : RP ; +fun mkRP_239 : Prep -> NP -> RP -> RP ; +fun mkClSlash_240 : NP -> V2 -> ClSlash ; +fun mkClSlash_241 : NP -> VV -> V2 -> ClSlash ; +fun mkClSlash_242 : ClSlash -> Adv -> ClSlash ; +fun mkClSlash_243 : Cl -> Prep -> ClSlash ; +fun mkImp_244 : VP -> Imp ; +fun mkImp_245 : V -> Imp ; +fun mkImp_246 : V2 -> NP -> Imp ; +fun mkS_400 : Cl -> S ; +fun mkS_247 : Tense -> Cl -> S ; +fun mkS_248 : Ant -> Cl -> S ; +fun mkS_249 : Pol -> Cl -> S ; +fun mkS_250 : Tense -> Ant -> Cl -> S ; +fun mkS_251 : Tense -> Pol -> Cl -> S ; +fun mkS_252 : Ant -> Pol -> Cl -> S ; +fun mkS_253 : Tense -> Ant -> Pol -> Cl -> S ; +fun mkS_254 : Conj -> S -> S -> S ; +fun mkS_255 : Conj -> ListS -> S ; +fun mkS_256 : Adv -> S -> S ; +fun mkQS_257 : QCl -> QS ; +fun mkQS_258 : Tense -> QCl -> QS ; +fun mkQS_259 : Ant -> QCl -> QS ; +fun mkQS_260 : Pol -> QCl -> QS ; +fun mkQS_261 : Tense -> Ant -> QCl -> QS ; +fun mkQS_262 : Tense -> Pol -> QCl -> QS ; +fun mkQS_263 : Ant -> Pol -> QCl -> QS ; +fun mkQS_264 : Tense -> Ant -> Pol -> QCl -> QS ; +fun mkQS_265 : Cl -> QS ; +fun mkRS_266 : RCl -> RS ; +fun mkRS_267 : Tense -> RCl -> RS ; +fun mkRS_268 : Ant -> RCl -> RS ; +fun mkRS_269 : Pol -> RCl -> RS ; +fun mkRS_270 : Tense -> Ant -> RCl -> RS ; +fun mkRS_271 : Tense -> Pol -> RCl -> RS ; +fun mkRS_272 : Ant -> Pol -> RCl -> RS ; +fun mkRS_273 : Tense -> Ant -> Pol -> RCl -> RS ; +fun mkRS_274 : Conj -> RS -> RS -> RS ; +fun mkRS_275 : Conj -> ListRS -> RS ; +fun emptyText_276 : Text ; +fun mkText_280 : Phr -> Text ; +fun mkText_281 : Utt -> Text ; +fun mkText_282 : S -> Text ; +fun mkText_283 : Cl -> Text ; +fun mkText_284 : QS -> Text ; +fun mkText_285 : Imp -> Text ; +fun mkText_286 : Pol -> Imp -> Text ; +fun mkText_287 : Phr -> Text -> Text ; +fun mkVP_288 : V -> VP ; +fun mkVP_289 : V2 -> NP -> VP ; +fun mkVP_290 : V3 -> NP -> NP -> VP ; +fun mkVP_291 : VV -> VP -> VP ; +fun mkVP_292 : VS -> S -> VP ; +fun mkVP_293 : VQ -> QS -> VP ; +fun mkVP_294 : VA -> AP -> VP ; +fun mkVP_295 : V2A -> NP -> AP -> VP ; +fun mkVP_296 : V2S -> NP -> S -> VP ; +fun mkVP_297 : V2Q -> NP -> QS -> VP ; +fun mkVP_298 : V2V -> NP -> VP -> VP ; +fun mkVP_299 : A -> VP ; +fun mkVP_300 : A -> NP -> VP ; +fun mkVP_301 : A2 -> NP -> VP ; +fun mkVP_302 : AP -> VP ; +fun mkVP_303 : NP -> VP ; +fun mkVP_304 : CN -> VP ; +fun mkVP_305 : N -> VP ; +fun mkVP_306 : Adv -> VP ; +fun mkVP_307 : VP -> Adv -> VP ; +fun mkVP_308 : AdV -> VP -> VP ; +fun mkVP_309 : VPSlash -> NP -> VP ; +fun mkVP_310 : VPSlash -> VP ; +fun reflexiveVP_311 : V2 -> VP ; +fun mkVPSlash_312 : V2 -> VPSlash ; +fun mkVPSlash_313 : V3 -> NP -> VPSlash ; +fun mkVPSlash_314 : V2A -> AP -> VPSlash ; +fun mkVPSlash_315 : V2Q -> QS -> VPSlash ; +fun mkVPSlash_316 : V2S -> S -> VPSlash ; +fun mkVPSlash_317 : V2V -> VP -> VPSlash ; +fun passiveVP_318 : V2 -> VP ; +fun passiveVP_319 : V2 -> NP -> VP ; +fun progressiveVP_320 : VP -> VP ; +fun mkListS_321 : S -> S -> ListS ; +fun mkListS_322 : S -> ListS -> ListS ; +fun mkListAP_323 : AP -> AP -> ListAP ; +fun mkListAP_324 : AP -> ListAP -> ListAP ; +fun mkListAdv_325 : Adv -> Adv -> ListAdv ; +fun mkListAdv_326 : Adv -> ListAdv -> ListAdv ; +fun mkListNP_327 : NP -> NP -> ListNP ; +fun mkListNP_328 : NP -> ListNP -> ListNP ; +fun mkListRS_329 : RS -> RS -> ListRS ; +fun mkListRS_330 : RS -> ListRS -> ListRS ; +fun that_NP_331 : NP ; +fun this_NP_332 : NP ; +fun those_NP_333 : NP ; +fun these_NP_334 : NP ; +fun that_Det_335 : Det ; +fun this_Det_336 : Det ; +fun those_Det_337 : Det ; +fun these_Det_338 : Det ; +} diff --git a/lib/src/api/BrowseEng.gf b/lib/src/api/BrowseEng.gf new file mode 100644 index 000000000..89654121d --- /dev/null +++ b/lib/src/api/BrowseEng.gf @@ -0,0 +1,331 @@ +--# -path=.:alltenses + +concrete BrowseEng of Browse = CatEng, ConjunctionEng, NumeralEng, LexiconEng, StructuralEng ** open LangEng in { + +lin mkAP_1 = PositA ; +lin mkAP_2 = ComparA ; +lin mkAP_3 = ComplA2 ; +lin mkAP_4 = UseA2 ; +lin mkAP_5 = \ap,s -> SentAP ap (EmbedS s) ; +lin mkAP_6 = \ap,s -> SentAP ap (EmbedQS s) ; +lin mkAP_7 = \ap,s -> SentAP ap (EmbedVP s) ; +lin mkAP_8 = \x,y -> AdAP x (PositA y) ; +lin mkAP_9 = AdAP ; +lin mkAP_10 = \c,x,y -> ConjAP c (BaseAP x y) ; +lin mkAP_11 = \c,xy -> ConjAP c xy ; +lin mkAP_12 = AdjOrd ; +lin mkAP_13 = CAdvAP ; +lin mkAdv_16 = PositAdvAdj ; +lin mkAdv_17 = PrepNP ; +lin mkAdv_18 = ComparAdvAdj ; +lin mkAdv_19 = ComparAdvAdjS ; +lin mkAdv_20 = AdAdv ; +lin mkAdv_21 = SubjS ; +lin mkAdv_22 = \c,x,y -> ConjAdv c (BaseAdv x y) ; +lin mkAdv_23 = \c,xy -> ConjAdv c xy ; +lin mkCl_24 = PredVP ; +lin mkCl_25 = \s,v -> PredVP s (UseV v) ; +lin mkCl_26 = \s,v,o -> PredVP s (ComplV2 v o) ; +lin mkCl_27 = \s,v,o,i -> PredVP s (ComplV3 v o i) ; +lin mkCl_28 = \s,v,vp -> PredVP s (ComplVV v vp) ; +lin mkCl_29 = \s,v,p -> PredVP s (ComplVS v p) ; +lin mkCl_30 = \s,v,q -> PredVP s (ComplVQ v q) ; +lin mkCl_31 = \s,v,q -> PredVP s (ComplVA v q) ; +lin mkCl_32 = \s,v,n,q -> PredVP s (ComplV2A v n q) ; +lin mkCl_33 = \s,v,n,q -> PredVP s (ComplSlash (SlashV2S v q) n) ; +lin mkCl_34 = \s,v,n,q -> PredVP s (ComplSlash (SlashV2Q v q) n) ; +lin mkCl_35 = \s,v,n,q -> PredVP s (ComplSlash (SlashV2V v q) n) ; +lin mkCl_36 = ImpersCl ; +lin mkCl_37 = CleftNP ; +lin mkCl_38 = CleftAdv ; +lin mkCl_39 = \y -> ExistNP (DetArtSg IndefArt (UseN y)) ; +lin mkCl_40 = \y -> ExistNP (DetArtSg IndefArt y) ; +lin mkCl_41 = ExistNP ; +lin mkCl_42 = \x,y -> PredVP x (UseComp (CompAP y)) ; +lin mkCl_43 = \x,y -> PredVP x (UseComp (CompAP (PositA y))) ; +lin mkCl_44 = \x,y,z -> PredVP x (UseComp (CompAP (ComparA y z))) ; +lin mkCl_45 = \x,y,z -> PredVP x (UseComp (CompAP (ComplA2 y z))) ; +lin mkCl_46 = \x,y -> PredVP x (UseComp (CompNP y)) ; +lin mkCl_47 = \x,y -> PredVP x (UseComp (CompNP (DetArtSg IndefArt y))) ; +lin mkCl_48 = \x,y -> PredVP x (UseComp (CompNP (DetArtSg IndefArt (UseN y)))) ; +lin mkCl_49 = \x,y -> PredVP x (UseComp (CompAdv y)) ; +lin mkCl_50 = \v -> ImpersCl (UseV v) ; +lin genericCl_51 = GenericCl ; +lin mkNP_58 = MassNP ; +lin mkNP_59 = \n -> MassNP (UseN n) ; +lin mkNP_60 = DetCN ; +lin mkNP_61 = \d,n -> DetCN d (UseN n) ; +lin mkNP_62 = \q -> DetNP (DetQuant q NumSg) ; +lin mkNP_63 = \q,n -> DetNP (DetQuant q n) ; +lin mkNP_64 = DetNP ; +lin mkNP_65 = \d,n -> DetCN (DetArtCard IndefArt d) n ; +lin mkNP_66 = \d,n -> DetCN (DetArtCard IndefArt d) (UseN n) ; +lin mkNP_67 = \q,n -> DetCN (DetQuant q NumSg) n ; +lin mkNP_68 = \q,n -> DetCN (DetQuant q NumSg) (UseN n) ; +lin mkNP_69 = \q,nu,n -> DetCN (DetQuant q nu) n ; +lin mkNP_70 = \q,nu,n -> DetCN (DetQuant q nu) (UseN n) ; +lin mkNP_71 = \p,n -> DetCN (DetQuant (PossPron p) NumSg) n ; +lin mkNP_72 = \p,n -> DetCN (DetQuant (PossPron p) NumSg) (UseN n) ; +lin mkNP_73 = \d,n -> DetCN (DetArtCard IndefArt (NumNumeral d)) n ; +lin mkNP_74 = \d,n -> DetCN (DetArtCard IndefArt (NumNumeral d)) (UseN n) ; +lin mkNP_75 = \d,n -> DetCN (DetArtCard IndefArt (NumDigits d)) n ; +lin mkNP_76 = \d,n -> DetCN (DetArtCard IndefArt (NumDigits d)) (UseN n) ; +lin mkNP_77 = \d,n -> DetCN (DetArtCard IndefArt (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 d))))))) n ; +lin mkNP_78 = \d,n -> DetCN (DetArtCard IndefArt (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 d))))))) (UseN n) ; +lin mkNP_79 = UsePN ; +lin mkNP_80 = UsePron ; +lin mkNP_81 = PredetNP ; +lin mkNP_82 = PPartNP ; +lin mkNP_83 = AdvNP ; +lin mkNP_84 = RelNP ; +--lin mkNP_85 = \c,x,y -> ConjNP c (BaseNP x y) ; +lin mkNP_86 = \c,xy -> ConjNP c xy ; +lin mkNP_87 = \q,n -> DetCN (DetQuant q NumSg) n ; +lin mkNP_88 = \q,n -> DetCN (DetQuant q NumPl) n ; +lin mkDet_89 = \d,nu -> (DetArtCard d nu) ; +lin mkDet_90 = \q,o -> DetQuantOrd q NumSg o ; +lin mkDet_91 = \q -> DetQuant q NumSg ; +lin mkDet_92 = DetQuantOrd ; +lin mkDet_93 = DetQuant ; +lin mkDet_94 = DetArtCard IndefArt ; +lin mkDet_95 = \d -> DetArtCard IndefArt (NumDigits d) ; +lin mkDet_96 = \d -> DetArtCard IndefArt (NumNumeral d) ; +lin mkDet_97 = \p -> DetQuant (PossPron p) NumSg ; +lin mkDet_98 = \p -> DetQuant (PossPron p) ; +lin the_Art_99 = DefArt ; +lin a_Art_100 = IndefArt ; +lin sgNum_101 = NumSg ; +lin plNum_102 = NumPl ; +lin mkCard_103 = NumNumeral ; +lin mkCard_104 = NumDigits ; +lin mkCard_105 = AdNum ; +lin mkNum_106 = \d -> NumCard (NumNumeral d) ; +lin mkNum_107 = \d -> NumCard (NumDigits d) ; +lin mkNum_108 = \d -> NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 d)))))) ; +lin mkNum_109 = NumCard ; +lin mkNum_110 = \a,c -> NumCard (AdNum a c) ; +lin mkOrd_111 = OrdNumeral ; +lin mkOrd_112 = OrdDigits ; +lin mkOrd_113 = \d -> OrdNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 d))))) ; +lin mkOrd_114 = OrdSuperl ; +lin mkAdN_141 = AdnCAdv ; +lin mkDigits_142 = IDig ; +lin mkDigits_143 = IIDig ; +lin mkCN_154 = UseN ; +lin mkCN_155 = ComplN2 ; +lin mkCN_156 = \f,x -> ComplN2 (ComplN3 f x) ; +lin mkCN_157 = UseN2 ; +lin mkCN_158 = \n -> UseN2 (Use2N3 n) ; +lin mkCN_159 = AdjCN ; +lin mkCN_160 = \x,y -> AdjCN x (UseN y) ; +lin mkCN_161 = \x,y -> AdjCN y x ; +lin mkCN_162 = \x,y -> AdjCN y (UseN x) ; +lin mkCN_163 = \x,y -> AdjCN (PositA x) y ; +lin mkCN_164 = \x,y -> AdjCN (PositA x) (UseN y) ; +lin mkCN_165 = RelCN ; +lin mkCN_166 = \x,y -> RelCN (UseN x) y ; +lin mkCN_167 = AdvCN ; +lin mkCN_168 = \x,y -> AdvCN (UseN x) y ; +lin mkCN_169 = \cn,s -> SentCN cn (EmbedS s) ; +lin mkCN_170 = \cn,s -> SentCN cn (EmbedQS s) ; +lin mkCN_171 = \cn,s -> SentCN cn (EmbedVP s) ; +lin mkCN_172 = ApposCN ; +lin mkCN_173 = \x,y -> ApposCN (UseN x) y ; +lin mkPhr_174 = PhrUtt ; +lin mkPhr_175 = \u,v -> PhrUtt NoPConj u v ; +lin mkPhr_176 = \u,v -> PhrUtt u v NoVoc ; +lin mkPhr_177 = \u -> PhrUtt NoPConj u NoVoc ; +lin mkPhr_178 = \s -> PhrUtt NoPConj (UttS s) NoVoc ; +lin mkPhr_179 = \s -> PhrUtt NoPConj (UttS (TUseCl TPres ASimul PPos s)) NoVoc ; +lin mkPhr_180 = \s -> PhrUtt NoPConj (UttQS s) NoVoc ; +lin mkPhr_181 = \s -> PhrUtt NoPConj (UttImpSg PPos s) NoVoc ; +lin mkPConj_182 = PConjConj ; +lin noPConj_183 = NoPConj ; +lin mkVoc_184 = VocNP ; +lin noVoc_185 = NoVoc ; +lin positivePol_186 = PPos ; +lin negativePol_187 = PNeg ; +lin simultaneousAnt_188 = ASimul ; +lin anteriorAnt_189 = AAnter ; +lin presentTense_190 = TPres ; +lin pastTense_191 = TPast ; +lin futureTense_192 = TFut ; +lin conditionalTense_193 = TCond ; +lin singularImpForm_194 = IFSg ; +lin pluralImpForm_195 = IFPl ; +lin politeImpForm_196 = IFPol ; +lin mkUtt_197 = UttS ; +lin mkUtt_198 = \c -> UttS (TUseCl TPres ASimul PPos c) ; +lin mkUtt_199 = UttQS ; +lin mkUtt_200 = \c -> UttQS (TUseQCl TPres ASimul PPos c) ; +lin mkUtt_201 = mkUttImp ; +lin mkUtt_202 = \f -> mkUttImp f PPos ; +lin mkUtt_203 = UttImpSg ; +lin mkUtt_204 = UttImpSg PPos ; +lin mkUtt_205 = UttIP ; +lin mkUtt_206 = UttIAdv ; +lin mkUtt_207 = UttNP ; +lin mkUtt_208 = UttAdv ; +lin mkUtt_209 = UttVP ; +lin lets_Utt_210 = ImpPl1 ; +lin mkQCl_211 = QuestCl ; +lin mkQCl_212 = QuestVP ; +lin mkQCl_213 = QuestSlash ; +lin mkQCl_214 = \ip,np,v -> QuestSlash ip (SlashVP np (SlashV2a v)) ; +lin mkQCl_215 = QuestIAdv ; +lin mkQCl_216 = \p,ip -> QuestIAdv (PrepIP p ip) ; +lin mkQCl_217 = \a -> QuestIComp (CompIAdv a) ; +lin mkQCl_218 = \a -> QuestIComp (CompIP a) ; +lin mkQCl_219 = ExistIP ; +lin mkIP_220 = IdetCN ; +lin mkIP_221 = \i,n -> IdetCN i (UseN n) ; +lin mkIP_222 = \i,n -> IdetCN (IdetQuant i NumSg) n ; +lin mkIP_223 = \i,nu,n -> IdetCN (IdetQuant i nu) n ; +lin mkIP_224 = \i,n -> IdetCN (IdetQuant i NumSg) (UseN n) ; +lin mkIP_225 = AdvIP ; +lin mkIDet_226 = \i,nu -> IdetQuant i nu ; +lin mkIDet_227 = \i -> IdetQuant i NumSg ; +lin whichSg_IDet_228 = IdetQuant which_IQuant NumSg ; +lin whichPl_IDet_229 = IdetQuant which_IQuant NumPl ; +lin what_IP_230 = whatSg_IP ; +lin who_IP_231 = whoSg_IP ; +lin which_IDet_232 = whichSg_IDet ; +lin mkIAdv_233 = PrepIP ; +lin mkRCl_234 = RelCl ; +lin mkRCl_235 = RelVP ; +lin mkRCl_236 = RelSlash ; +lin mkRCl_237 = \rp,np,v2 -> RelSlash rp (SlashVP np (SlashV2a v2)) ; +lin which_RP_238 = IdRP ; +lin mkRP_239 = FunRP ; +lin mkClSlash_240 = \np,v2 -> SlashVP np (SlashV2a v2) ; +lin mkClSlash_241 = \np,vv,v2 -> SlashVP np (SlashVV vv (SlashV2a v2)) ; +lin mkClSlash_242 = AdvSlash ; +lin mkClSlash_243 = SlashPrep ; +lin mkImp_244 = ImpVP ; +lin mkImp_245 = \v -> ImpVP (UseV v) ; +lin mkImp_246 = \v,np -> ImpVP (ComplV2 v np) ; +lin mkS_400 = TUseCl TPres ASimul PPos ; +lin mkS_247 = \t -> TUseCl t ASimul PPos ; +lin mkS_248 = \a -> TUseCl TPres a PPos ; +lin mkS_249 = \p -> TUseCl TPres ASimul p ; +lin mkS_250 = \t,a -> TUseCl t a PPos ; +lin mkS_251 = \t,p -> TUseCl t ASimul p ; +lin mkS_252 = \a,p -> TUseCl TPres a p ; +lin mkS_253 = \t,a -> TUseCl t a ; +lin mkS_254 = \c,x,y -> ConjS c (BaseS x y) ; +lin mkS_255 = \c,xy -> ConjS c xy ; +lin mkS_256 = AdvS ; +lin mkQS_257 = TUseQCl TPres ASimul PPos ; +lin mkQS_258 = \t -> TUseQCl t ASimul PPos ; +lin mkQS_259 = \a -> TUseQCl TPres a PPos ; +lin mkQS_260 = \p -> TUseQCl TPres ASimul p ; +lin mkQS_261 = \t,a -> TUseQCl t a PPos ; +lin mkQS_262 = \t,p -> TUseQCl t ASimul p ; +lin mkQS_263 = \a,p -> TUseQCl TPres a p ; +lin mkQS_264 = TUseQCl ; +lin mkQS_265 = \x -> TUseQCl TPres ASimul PPos (QuestCl x) ; +lin mkRS_266 = TUseRCl TPres ASimul PPos ; +lin mkRS_267 = \t -> TUseRCl t ASimul PPos ; +lin mkRS_268 = \a -> TUseRCl TPres a PPos ; +lin mkRS_269 = \p -> TUseRCl TPres ASimul p ; +lin mkRS_270 = \t,a -> TUseRCl t a PPos ; +lin mkRS_271 = \t,p -> TUseRCl t ASimul p ; +lin mkRS_272 = \a,p -> TUseRCl TPres a p ; +lin mkRS_273 = TUseRCl ; +lin mkRS_274 = \c,x,y -> ConjRS c (BaseRS x y) ; +lin mkRS_275 = \c,xy -> ConjRS c xy ; +lin emptyText_276 = TEmpty ; +--lin fullStopPunct_277 = PFullStop ; +--lin questMarkPunct_278 = PQuestMark ; +--lin exclMarkPunct_279 = PExclMark ; +lin mkText_280 = \x -> TFullStop x TEmpty ; +lin mkText_281 = \u -> TFullStop (PhrUtt NoPConj u NoVoc) TEmpty ; +lin mkText_282 = \s -> TFullStop (PhrUtt NoPConj (UttS s) NoVoc) TEmpty ; +lin mkText_283 = \c -> TFullStop (PhrUtt NoPConj (UttS (TUseCl TPres ASimul PPos c)) NoVoc) TEmpty ; +lin mkText_284 = \q -> TQuestMark (PhrUtt NoPConj (UttQS q) NoVoc) TEmpty ; +lin mkText_285 = \i -> TExclMark (PhrUtt NoPConj (UttImpSg PPos i) NoVoc) TEmpty ; +lin mkText_286 = \p,i -> TExclMark (PhrUtt NoPConj (UttImpSg p i) NoVoc) TEmpty ; +lin mkText_287 = TFullStop ; +lin mkVP_288 = UseV ; +lin mkVP_289 = ComplV2 ; +lin mkVP_290 = ComplV3 ; +lin mkVP_291 = ComplVV ; +lin mkVP_292 = ComplVS ; +lin mkVP_293 = ComplVQ ; +lin mkVP_294 = ComplVA ; +lin mkVP_295 = ComplV2A ; +lin mkVP_296 = \v,n,q -> (ComplSlash (SlashV2S v q) n) ; +lin mkVP_297 = \v,n,q -> (ComplSlash (SlashV2Q v q) n) ; +lin mkVP_298 = \v,n,q -> (ComplSlash (SlashV2V v q) n) ; +lin mkVP_299 = \a -> UseComp (CompAP (PositA a)) ; +lin mkVP_300 = \y,z -> (UseComp (CompAP (ComparA y z))) ; +lin mkVP_301 = \y,z -> (UseComp (CompAP (ComplA2 y z))) ; +lin mkVP_302 = \a -> UseComp (CompAP a) ; +lin mkVP_303 = \a -> UseComp (CompNP a) ; +lin mkVP_304 = \y -> (UseComp (CompNP (DetArtSg IndefArt y))) ; +lin mkVP_305 = \y -> (UseComp (CompNP (DetArtSg IndefArt (UseN y)))) ; +lin mkVP_306 = \a -> UseComp (CompAdv a) ; +lin mkVP_307 = AdvVP ; +lin mkVP_308 = AdVVP ; +lin mkVP_309 = ComplSlash ; +lin mkVP_310 = ReflVP ; +lin reflexiveVP_311 = \v -> ReflVP (SlashV2a v) ; +lin mkVPSlash_312 = SlashV2a ; +lin mkVPSlash_313 = Slash2V3 ; +lin mkVPSlash_314 = SlashV2A ; +lin mkVPSlash_315 = SlashV2Q ; +lin mkVPSlash_316 = SlashV2S ; +lin mkVPSlash_317 = SlashV2V ; +lin passiveVP_318 = PassV2 ; +lin passiveVP_319 = \v,np -> (AdvVP (PassV2 v) (PrepNP by8agent_Prep np)) ; +lin progressiveVP_320 = ProgrVP ; +lin mkListS_321 = BaseS ; +lin mkListS_322 = ConsS ; +lin mkListAP_323 = BaseAP ; +lin mkListAP_324 = ConsAP ; +lin mkListAdv_325 = BaseAdv ; +lin mkListAdv_326 = ConsAdv ; +lin mkListNP_327 = BaseNP ; +lin mkListNP_328 = ConsNP ; +lin mkListRS_329 = BaseRS ; +lin mkListRS_330 = ConsRS ; +lin that_NP_331 = DetNP (DetQuant that_Quant NumSg) ; +lin this_NP_332 = DetNP (DetQuant this_Quant NumSg) ; +lin those_NP_333 = DetNP (DetQuant that_Quant NumPl) ; +lin these_NP_334 = DetNP (DetQuant this_Quant NumPl) ; +lin that_Det_335 = (DetQuant that_Quant NumSg) ; +lin this_Det_336 = (DetQuant this_Quant NumSg) ; +lin those_Det_337 = (DetQuant that_Quant NumPl) ; +lin these_Det_338 = (DetQuant this_Quant NumPl) ; + +oper + ComplV2 : V2 -> NP -> VP = \v,np -> ComplSlash (SlashV2a v) np ; + ComplV2A : V2A -> NP -> AP -> VP = \v,np,ap -> ComplSlash (SlashV2A v ap) np ; --# notminimal + ComplV3 : V3 -> NP -> NP -> VP = \v,o,d -> ComplSlash (Slash3V3 v o) d ; + + DetArtSg : Quant -> CN -> NP = \a -> DetCN (DetQuant a NumSg) ; + DetArtPl : Quant -> CN -> NP = \a -> DetCN (DetQuant a NumPl) ; + DetArtOrd : Quant -> Num -> Ord -> Det = DetQuantOrd ; --# notminimal + DetArtCard : Quant -> Card -> Det = \a,c -> DetQuant a (NumCard c) ; + TUseCl : Tense -> Ant -> Pol -> Cl -> S = \t,a -> UseCl (TTAnt t a) ; + TUseQCl : Tense -> Ant -> Pol -> QCl -> QS = \t,a -> UseQCl (TTAnt t a) ; + TUseRCl : Tense -> Ant -> Pol -> RCl -> RS = \t,a -> UseRCl (TTAnt t a) ; --# notminimal + + param ImpForm = IFSg | IFPl | IFPol ; --# notminimal + + oper --# notminimal + singularImpForm : ImpForm = IFSg ; --# notminimal + pluralImpForm : ImpForm = IFPl ; --# notminimal + politeImpForm : ImpForm = IFPol ; --# notminimal + + mkUttImp : ImpForm -> Pol -> Imp -> Utt = \f,p,i -> case f of { --# notminimal + IFSg => UttImpSg p i ; --# notminimal + IFPl => UttImpPl p i ; --# notminimal + IFPol => UttImpPol p i --# notminimal + } ; --# notminimal + + whichSg_IDet : IDet = IdetQuant which_IQuant NumSg ; --# notminimal + whichPl_IDet : IDet = IdetQuant which_IQuant NumPl ; --# notminimal + + +} diff --git a/lib/src/api/MkBrowse.hs b/lib/src/api/MkBrowse.hs new file mode 100644 index 000000000..18b79d5a6 --- /dev/null +++ b/lib/src/api/MkBrowse.hs @@ -0,0 +1,26 @@ +main = interact mkBrowse + +mkBrowse = unlines . map mkJment . zip [1..] . jments + +jments = chop ';' + +mkJment (i,j) = case words j of + f:":":ws -> toJment f i (break (=="=") ws) + _ -> [] + +toJment f0 i (ty,de) = let f = f0 ++ "_" ++ show i in unlines $ map unwords [ + ["fun",f,":",unwords ty,";"], + ["lin",f,"=",unwords de,";"] + ] + +chop c s = case break (==c) s of + (j,_:cs) -> j : chop c cs + (j,_) -> [j] + + +uncomm = unlines . map unc . lines +unc l = case l of + '-':'-':_ -> [] + c : cs -> c : unc cs + _ -> l + diff --git a/src/GF/Command/Commands.hs b/src/GF/Command/Commands.hs index 9d3fd3299..228b40c37 100644 --- a/src/GF/Command/Commands.hs +++ b/src/GF/Command/Commands.hs @@ -480,9 +480,10 @@ allCommands cod env@(pgf, mos) = Map.fromList [ examples = [ "pt -compute (plus one two) -- compute value" ], - exec = \opts -> returnFromExprs . treeOps opts, + exec = \opts -> + returnFromExprs . takeOptNum opts . treeOps opts, options = treeOpOptions pgf, - flags = treeOpFlags pgf + flags = [("number","take at most this many trees")] ++ treeOpFlags pgf }), ("q", emptyCommandInfo { longname = "quit", @@ -821,7 +822,8 @@ allCommands cod env@(pgf, mos) = Map.fromList [ optViewGraph opts = valStrOpts "view" "open" opts optNum opts = valIntOpts "number" 1 opts optNumInf opts = valIntOpts "number" 1000000000 opts ---- 10^9 - + takeOptNum opts = take (optNumInf opts) + fromExprs es = (es,unlines (map (showExpr []) es)) fromStrings ss = (map (ELit . LStr) ss, unlines ss) fromString s = ([ELit (LStr s)], s)