concrete OverGrammarEng of OverGrammar = StructuralEng,NumeralEng,ConjunctionEng[ListS,ListNP,ListAP,ListAdv] ** open GrammarEng in { lincat ImpForm = {p : PImpForm ; s : Str} ; lincat Punct = {p : PPunct ; s : Str} ; param PImpForm = IFSg | IFPl | IFPol ; param PPunct = PFullStop | PExclMark | PQuestMark ; oper mkUttImp : PImpForm -> Str -> Pol -> Imp -> Utt = \f,s,p,i -> {s = s ++ (case f of { IFSg => UttImpSg p i ; IFPl => UttImpPl p i ; IFPol => UttImpPol p i}).s ; lock_Utt = <>} ; oper mkPhrPunct : Phr -> PPunct -> Str -> Text -> Text = \p,f,s,t -> {s = s ++ (case f of { PFullStop => TFullStop p t ; PExclMark => TExclMark p t ; PQuestMark => TQuestMark p t}).s ; lock_Text = <>} ; lin ovrld0_mkAP = PositA ; lin ovrld1_mkAP = ComparA ; lin ovrld2_mkAP = ComplA2 ; lin ovrld3_mkAP = ReflA2 ; lin ovrld4_mkAP = \ap,s -> SentAP ap (EmbedS s) ; lin ovrld5_mkAP = \ap,s -> SentAP ap (EmbedQS s) ; lin ovrld6_mkAP = \ap,s -> SentAP ap (EmbedVP s) ; lin ovrld7_mkAP = \x,y -> AdAP x (PositA y) ; lin ovrld8_mkAP = AdAP ; lin ovrld9_mkAP = \c,x,y -> ConjAP c (BaseAP x y) ; lin ovrld10_mkAP = \c,x,y -> DConjAP c (BaseAP x y) ; lin ovrld11_mkAP = \c,xy -> ConjAP c xy ; lin ovrld12_mkAP = \c,xy -> DConjAP c xy ; lin ovrld13_mkAdv = PositAdvAdj ; lin ovrld14_mkAdv = PrepNP ; lin ovrld15_mkAdv = ComparAdvAdj ; lin ovrld16_mkAdv = ComparAdvAdjS ; lin ovrld17_mkAdv = AdAdv ; lin ovrld18_mkAdv = SubjS ; lin ovrld19_mkAdv = \c,x,y -> ConjAdv c (BaseAdv x y) ; lin ovrld20_mkAdv = \c,x,y -> DConjAdv c (BaseAdv x y) ; lin ovrld21_mkAdv = \c,xy -> ConjAdv c xy ; lin ovrld22_mkAdv = \c,xy -> DConjAdv c xy ; lin ovrld23_mkCl = PredVP ; lin ovrld24_mkCl = \s,v -> PredVP s (UseV v) ; lin ovrld25_mkCl = \s,v,o -> PredVP s (ComplV2 v o) ; lin ovrld26_mkCl = \s,v,o,i -> PredVP s (ComplV3 v o i) ; lin ovrld27_mkCl = \s,v,vp -> PredVP s (ComplVV v vp) ; lin ovrld28_mkCl = \s,v,p -> PredVP s (ComplVS v p) ; lin ovrld29_mkCl = \s,v,q -> PredVP s (ComplVQ v q) ; lin ovrld30_mkCl = \s,v,q -> PredVP s (ComplVA v q) ; lin ovrld31_mkCl = \s,v,n,q -> PredVP s (ComplV2A v n q) ; lin ovrld32_mkCl = ImpersCl ; lin ovrld33_mkCl = CleftNP ; lin ovrld34_mkCl = CleftAdv ; lin ovrld35_mkCl = \y -> ExistNP (DetCN (DetSg (SgQuant IndefArt) NoOrd) (UseN y)) ; lin ovrld36_mkCl = \y -> ExistNP (DetCN (DetSg (SgQuant IndefArt) NoOrd) y) ; lin ovrld37_mkCl = ExistNP ; lin ovrld38_mkCl = \x,y -> PredVP x (UseComp (CompAP y)) ; lin ovrld39_mkCl = \x,y -> PredVP x (UseComp (CompAP (PositA y))) ; lin ovrld40_mkCl = \x,y,z -> PredVP x (UseComp (CompAP (ComparA y z))) ; lin ovrld41_mkCl = \x,y,z -> PredVP x (UseComp (CompAP (ComplA2 y z))) ; lin ovrld42_mkCl = \x,y -> PredVP x (UseComp (CompNP y)) ; lin ovrld43_mkCl = \x,y -> PredVP x (UseComp (CompNP (DetCN (DetSg (SgQuant IndefArt) NoOrd) y))) ; lin ovrld44_mkCl = \x,y -> PredVP x (UseComp (CompNP (DetCN (DetSg (SgQuant IndefArt) NoOrd) (UseN y)))) ; lin ovrld45_mkCl = \x,y -> PredVP x (UseComp (CompAdv y)) ; lin ovrld46_mkCl = \v -> ImpersCl (UseV v) ; lin ovrld47_genericCl = GenericCl ; lin ovrld48_mkNP = DetCN ; lin ovrld49_mkNP = \d,n -> DetCN d (UseN n) ; lin ovrld50_mkNP = \d,n -> DetCN (DetPl (PlQuant IndefArt) d NoOrd) n ; lin ovrld51_mkNP = \d,n -> DetCN (DetPl (PlQuant IndefArt) d NoOrd) (UseN n) ; lin ovrld52_mkNP = \q,n -> DetCN (DetSg q NoOrd) n ; lin ovrld53_mkNP = \q,n -> DetCN (DetSg q NoOrd) (UseN n) ; lin ovrld54_mkNP = \q,n -> DetCN (DetPl q NoNum NoOrd) n ; lin ovrld55_mkNP = \q,n -> DetCN (DetPl q NoNum NoOrd) (UseN n) ; lin ovrld56_mkNP = \p,n -> DetCN (DetSg (SgQuant (PossPron p)) NoOrd) n ; lin ovrld57_mkNP = \p,n -> DetCN (DetSg (SgQuant (PossPron p)) NoOrd) (UseN n) ; lin ovrld58_mkNP = \d,n -> DetCN (DetPl (PlQuant IndefArt) (NumNumeral d) NoOrd) n ; lin ovrld59_mkNP = \d,n -> DetCN (DetPl (PlQuant IndefArt) (NumNumeral d) NoOrd) (UseN n) ; lin ovrld60_mkNP = \d,n -> DetCN (DetPl (PlQuant IndefArt) (NumInt d) NoOrd) n ; lin ovrld61_mkNP = \d,n -> DetCN (DetPl (PlQuant IndefArt) (NumInt d) NoOrd) (UseN n) ; lin ovrld62_mkNP = UsePN ; lin ovrld63_mkNP = UsePron ; lin ovrld64_mkNP = PredetNP ; lin ovrld65_mkNP = PPartNP ; lin ovrld66_mkNP = AdvNP ; lin ovrld67_mkNP = \c,x,y -> ConjNP c (BaseNP x y) ; lin ovrld68_mkNP = \c,x,y -> DConjNP c (BaseNP x y) ; lin ovrld69_mkNP = \c,xy -> ConjNP c xy ; lin ovrld70_mkNP = \c,xy -> DConjNP c xy ; lin ovrld71_mkDet = DetSg ; lin ovrld72_mkDet = \q -> DetSg q NoOrd ; lin ovrld73_mkDet = DetPl ; lin ovrld74_mkDet = \q -> DetPl q NoNum NoOrd ; lin ovrld75_mkDet = \q -> DetSg (SgQuant q) NoOrd ; lin ovrld76_mkDet = \q,nu -> DetPl (PlQuant q) nu NoOrd ; lin ovrld77_mkDet = \n -> DetPl (PlQuant IndefArt) n NoOrd ; lin ovrld78_mkDet = \n -> DetPl (PlQuant IndefArt) (NumInt n) NoOrd ; lin ovrld79_mkDet = \d -> DetPl (PlQuant IndefArt) (NumNumeral d) NoOrd ; lin ovrld80_mkDet = \p -> DetSg (SgQuant (PossPron p)) NoOrd ; lin ovrld81_defSgDet = DetSg (SgQuant DefArt) NoOrd ; lin ovrld82_defPlDet = DetPl (PlQuant DefArt) NoNum NoOrd ; lin ovrld83_indefSgDet = DetSg (SgQuant IndefArt) NoOrd ; lin ovrld84_indefPlDet = DetPl (PlQuant IndefArt) NoNum NoOrd ; lin ovrld85_mkQuantSg = SgQuant ; lin ovrld86_mkQuantPl = PlQuant ; lin ovrld87_defQuant = DefArt ; lin ovrld88_indefQuant = IndefArt ; lin ovrld89_massQuant = MassDet ; lin ovrld90_mkNum = NumNumeral ; lin ovrld91_mkNum = NumInt ; lin ovrld92_mkNum = \d -> NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 d))))) ; lin ovrld93_mkNum = AdNum ; lin ovrld94_noNum = NoNum ; lin ovrld95_n1_Numeral = num (pot2as3 (pot1as2 (pot0as1 pot01))) ; lin ovrld96_n2_Numeral = num (pot2as3 (pot1as2 (pot0as1 (pot0 n2)))) ; lin ovrld97_n3_Numeral = num (pot2as3 (pot1as2 (pot0as1 (pot0 n3)))) ; lin ovrld98_n4_Numeral = num (pot2as3 (pot1as2 (pot0as1 (pot0 n4)))) ; lin ovrld99_n5_Numeral = num (pot2as3 (pot1as2 (pot0as1 (pot0 n5)))) ; lin ovrld100_n6_Numeral = num (pot2as3 (pot1as2 (pot0as1 (pot0 n6)))) ; lin ovrld101_n7_Numeral = num (pot2as3 (pot1as2 (pot0as1 (pot0 n7)))) ; lin ovrld102_n8_Numeral = num (pot2as3 (pot1as2 (pot0as1 (pot0 n8)))) ; lin ovrld103_n9_Numeral = num (pot2as3 (pot1as2 (pot0as1 (pot0 n9)))) ; lin ovrld104_n10_Numeral = num (pot2as3 (pot1as2 pot110)) ; lin ovrld105_n20_Numeral = num (pot2as3 (pot1as2 (pot1 n2))) ; lin ovrld106_n100_Numeral = num (pot2as3 (pot2 pot01)) ; lin ovrld107_n1000_Numeral = num (pot3 (pot1as2 (pot0as1 pot01))) ; lin ovrld108_mkAdN = AdnCAdv ; lin ovrld109_mkOrd = OrdNumeral ; lin ovrld110_mkOrd = OrdInt ; lin ovrld111_mkOrd = \d -> OrdNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 d))))) ; lin ovrld112_mkOrd = OrdSuperl ; lin ovrld113_noOrd = NoOrd ; lin ovrld114_mkCN = UseN ; lin ovrld115_mkCN = ComplN2 ; lin ovrld116_mkCN = \f,x -> ComplN2 (ComplN3 f x) ; lin ovrld117_mkCN = UseN2 ; lin ovrld118_mkCN = UseN3 ; lin ovrld119_mkCN = AdjCN ; lin ovrld120_mkCN = \x,y -> AdjCN x (UseN y) ; lin ovrld121_mkCN = \x,y -> AdjCN y x ; lin ovrld122_mkCN = \x,y -> AdjCN y (UseN x) ; lin ovrld123_mkCN = \x,y -> AdjCN (PositA x) y ; lin ovrld124_mkCN = \x,y -> AdjCN (PositA x) (UseN y) ; lin ovrld125_mkCN = RelCN ; lin ovrld126_mkCN = \x,y -> RelCN (UseN x) y ; lin ovrld127_mkCN = AdvCN ; lin ovrld128_mkCN = \x,y -> AdvCN (UseN x) y ; lin ovrld129_mkCN = \cn,s -> SentCN cn (EmbedS s) ; lin ovrld130_mkCN = \cn,s -> SentCN cn (EmbedQS s) ; lin ovrld131_mkCN = \cn,s -> SentCN cn (EmbedVP s) ; lin ovrld132_mkCN = ApposCN ; lin ovrld133_mkCN = \x,y -> ApposCN (UseN x) y ; lin ovrld134_mkPhr = PhrUtt ; lin ovrld135_mkPhr = \u,v -> PhrUtt NoPConj u v ; lin ovrld136_mkPhr = \u,v -> PhrUtt u v NoVoc ; lin ovrld137_mkPhr = \u -> PhrUtt NoPConj u NoVoc ; lin ovrld138_mkPhr = \s -> PhrUtt NoPConj (UttS s) NoVoc ; lin ovrld139_mkPhr = \s -> PhrUtt NoPConj (UttS (UseCl TPres ASimul PPos s)) NoVoc ; lin ovrld140_mkPhr = \s -> PhrUtt NoPConj (UttQS s) NoVoc ; lin ovrld141_mkPhr = \s -> PhrUtt NoPConj (UttImpSg PPos s) NoVoc ; lin ovrld142_mkPConj = PConjConj ; lin ovrld143_noPConj = NoPConj ; lin ovrld144_mkVoc = VocNP ; lin ovrld145_noVoc = NoVoc ; lin ovrld146_positivePol = PPos ; lin ovrld147_negativePol = PNeg ; lin ovrld148_simultaneousAnt = ASimul ; lin ovrld149_anteriorAnt = AAnter ; --# notpresent lin ovrld150_presentTense = TPres ; lin ovrld151_pastTense = TPast ; --# notpresent lin ovrld152_futureTense = TFut ; --# notpresent lin ovrld153_conditionalTense = TCond ; --# notpresent lin ovrld154_singularImpForm = {p= IFSg; s= []} ; lin ovrld155_pluralImpForm = {p= IFPl; s= []} ; lin ovrld156_politeImpForm = {p= IFPol; s= []} ; lin ovrld157_mkUtt = UttS ; lin ovrld158_mkUtt = \c -> UttS (UseCl TPres ASimul PPos c) ; lin ovrld159_mkUtt = UttQS ; lin ovrld160_mkUtt = \f -> mkUttImp f.p f.s ; lin ovrld161_mkUtt = \f -> mkUttImp f.p f.s PPos ; lin ovrld162_mkUtt = UttImpSg ; lin ovrld163_mkUtt = UttImpSg PPos ; lin ovrld164_mkUtt = UttIP ; lin ovrld165_mkUtt = UttIAdv ; lin ovrld166_mkUtt = UttNP ; lin ovrld167_mkUtt = UttAdv ; lin ovrld168_mkUtt = UttVP ; lin ovrld169_lets_Utt = ImpPl1 ; lin ovrld170_mkQCl = QuestCl ; lin ovrld171_mkQCl = QuestVP ; lin ovrld172_mkQCl = QuestSlash ; lin ovrld173_mkQCl = \ip,np,v -> QuestSlash ip (SlashV2 np v) ; lin ovrld174_mkQCl = QuestIAdv ; lin ovrld175_mkQCl = \p,ip -> QuestIAdv (PrepIP p ip) ; lin ovrld176_mkQCl = \a -> QuestIComp (CompIAdv a) ; lin ovrld177_mkQCl = ExistIP ; lin ovrld178_mkIP = IDetCN ; lin ovrld179_mkIP = \i -> IDetCN i NoNum ; lin ovrld180_mkIP = \i,n -> IDetCN i n NoOrd ; lin ovrld181_mkIP = \i,n -> IDetCN i NoNum NoOrd (UseN n) ; lin ovrld182_mkIP = AdvIP ; lin ovrld183_mkIAdv = PrepIP ; lin ovrld184_mkRCl = RelCl ; lin ovrld185_mkRCl = RelVP ; lin ovrld186_mkRCl = RelSlash ; lin ovrld187_mkRCl = \rp,np,v2 -> RelSlash rp (SlashV2 np v2) ; lin ovrld188_which_RP = IdRP ; lin ovrld189_mkRP = FunRP ; lin ovrld190_mkSlash = SlashV2 ; lin ovrld191_mkSlash = SlashVVV2 ; lin ovrld192_mkSlash = AdvSlash ; lin ovrld193_mkSlash = SlashPrep ; lin ovrld194_mkImp = ImpVP ; lin ovrld195_mkImp = \v -> ImpVP (UseV v) ; lin ovrld196_mkImp = \v,np -> ImpVP (ComplV2 v np) ; lin ovrld197_mkS = UseCl TPres ASimul PPos ; lin ovrld198_mkS = \t -> UseCl t ASimul PPos ; lin ovrld199_mkS = \a -> UseCl TPres a PPos ; lin ovrld200_mkS = \p -> UseCl TPres ASimul p ; lin ovrld201_mkS = \t,a -> UseCl t a PPos ; lin ovrld202_mkS = \t,p -> UseCl t ASimul p ; lin ovrld203_mkS = \a,p -> UseCl TPres a p ; lin ovrld204_mkS = UseCl ; lin ovrld205_mkS = \c,x,y -> ConjS c (BaseS x y) ; lin ovrld206_mkS = \c,x,y -> DConjS c (BaseS x y) ; lin ovrld207_mkS = \c,xy -> ConjS c xy ; lin ovrld208_mkS = \c,xy -> DConjS c xy ; lin ovrld209_mkS = AdvS ; lin ovrld210_mkQS = UseQCl TPres ASimul PPos ; lin ovrld211_mkQS = \t -> UseQCl t ASimul PPos ; lin ovrld212_mkQS = \a -> UseQCl TPres a PPos ; lin ovrld213_mkQS = \p -> UseQCl TPres ASimul p ; lin ovrld214_mkQS = \t,a -> UseQCl t a PPos ; lin ovrld215_mkQS = \t,p -> UseQCl t ASimul p ; lin ovrld216_mkQS = \a,p -> UseQCl TPres a p ; lin ovrld217_mkQS = UseQCl ; lin ovrld218_mkQS = \x -> UseQCl TPres ASimul PPos (QuestCl x) ; lin ovrld219_mkRS = UseRCl TPres ASimul PPos ; lin ovrld220_mkRS = \t,c -> UseRCl t ASimul PPos c ; lin ovrld221_mkRS = \a,c -> UseRCl TPres a PPos c ; lin ovrld222_mkRS = \p,c -> UseRCl TPres ASimul p c ; lin ovrld223_mkRS = \t,a,c -> UseRCl t a PPos c ; lin ovrld224_mkRS = \t,p,c -> UseRCl t ASimul p c ; lin ovrld225_mkRS = \a,p,c -> UseRCl TPres a p c ; lin ovrld226_mkRS = UseRCl ; lin ovrld227_emptyText = TEmpty ; lin ovrld228_fullStopPunct = {p= PFullStop; s= []} ; lin ovrld229_questMarkPunct = {p= PQuestMark; s= []} ; lin ovrld230_exclMarkPunct = {p= PExclMark; s= []} ; lin ovrld231_mkText = \p,f -> mkPhrPunct p f.p f.s ; lin ovrld232_mkText = \p,f -> mkPhrPunct p f.p f.s TEmpty ; lin ovrld233_mkText = \x -> TFullStop x TEmpty ; lin ovrld234_mkText = \u -> TFullStop (PhrUtt NoPConj u NoVoc) TEmpty ; lin ovrld235_mkText = \s -> TFullStop (PhrUtt NoPConj (UttS s) NoVoc) TEmpty ; lin ovrld236_mkText = \c -> TFullStop (PhrUtt NoPConj (UttS (UseCl TPres ASimul PPos c)) NoVoc) TEmpty ; lin ovrld237_mkText = \q -> TQuestMark (PhrUtt NoPConj (UttQS q) NoVoc) TEmpty ; lin ovrld238_mkText = \i -> TExclMark (PhrUtt NoPConj (UttImpSg PPos i) NoVoc) TEmpty ; lin ovrld239_mkText = \p,i -> TExclMark (PhrUtt NoPConj (UttImpSg p i) NoVoc) TEmpty ; lin ovrld240_mkText = TFullStop ; lin ovrld241_mkVP = UseV ; lin ovrld242_mkVP = ComplV2 ; lin ovrld243_mkVP = ComplV3 ; lin ovrld244_mkVP = ComplVV ; lin ovrld245_mkVP = ComplVS ; lin ovrld246_mkVP = ComplVQ ; lin ovrld247_mkVP = ComplVA ; lin ovrld248_mkVP = ComplV2A ; lin ovrld249_mkVP = \a -> UseComp (CompAP (PositA a)) ; lin ovrld250_mkVP = \y,z -> (UseComp (CompAP (ComparA y z))) ; lin ovrld251_mkVP = \y,z -> (UseComp (CompAP (ComplA2 y z))) ; lin ovrld252_mkVP = \a -> UseComp (CompAP a) ; lin ovrld253_mkVP = \a -> UseComp (CompNP a) ; lin ovrld254_mkVP = \y -> (UseComp (CompNP (DetCN (DetSg (SgQuant IndefArt) NoOrd) y))) ; lin ovrld255_mkVP = \y -> (UseComp (CompNP (DetCN (DetSg (SgQuant IndefArt) NoOrd) (UseN y)))) ; lin ovrld256_mkVP = \a -> UseComp (CompAdv a) ; lin ovrld257_mkVP = AdvVP ; lin ovrld258_mkVP = AdVVP ; lin ovrld259_reflexiveVP = ReflV2 ; lin ovrld260_passiveVP = PassV2 ; lin ovrld261_passiveVP = \v,np -> (AdvVP (PassV2 v) (PrepNP by8agent_Prep np)) ; lin ovrld262_progressiveVP = ProgrVP ; lin ovrld263_mkListS = BaseS ; lin ovrld264_mkListS = ConsS ; lin ovrld265_mkListAP = BaseAP ; lin ovrld266_mkListAP = ConsAP ; lin ovrld267_mkListAdv = BaseAdv ; lin ovrld268_mkListAdv = ConsAdv ; lin ovrld269_mkListNP = BaseNP ; lin ovrld270_mkListNP = ConsNP ; }