diff --git a/examples/peacekeeping/PeaceCat.gf b/examples/peacekeeping/PeaceCat.gf index 103295396..033a33097 100644 --- a/examples/peacekeeping/PeaceCat.gf +++ b/examples/peacekeeping/PeaceCat.gf @@ -1,10 +1,16 @@ -abstract PeaceCat = Cat ** { +abstract PeaceCat = { cat + N; A; V; V2; V3; Pron; + IP; IAdv; + Adv; NP; CN; Imp; Det; Num; MassN ; Phrase ; PhraseWritten ; PhraseSpoken ; + Sent ; + Quest ; + MassCN ; fun Written : Phrase -> PhraseWritten ; diff --git a/examples/peacekeeping/PeaceCatI.gf b/examples/peacekeeping/PeaceCatI.gf index 312bc1b1e..67db1351d 100644 --- a/examples/peacekeeping/PeaceCatI.gf +++ b/examples/peacekeeping/PeaceCatI.gf @@ -1,12 +1,20 @@ incomplete concrete PeaceCatI of PeaceCat = - Cat ** open Lang, PeaceRes, Prelude in { + open Lang, PeaceRes, Prelude in { lincat + N = N; A = A; V = V; V2 = V2; V3 = V3; Pron = Pron; + IP = IP; IAdv = IAdv; + Adv = Adv; NP = NP; CN = CN; Imp = Imp; Det = Det; Num = Num; + MassN = N ; Phrase = { s : Str; p : Punct } ; PhraseWritten = { s : Str } ; PhraseSpoken = { s : Str } ; + Sent = {s : SForm => Str} ; + Quest = { s : Str } ; + MassCN = CN ; + lin Written x = mkWritten x.s x.p ; Spoken x = { s = x.s } ; diff --git a/examples/peacekeeping/PeaceRes.gf b/examples/peacekeeping/PeaceRes.gf index 52d77ce3b..f39107a1e 100644 --- a/examples/peacekeeping/PeaceRes.gf +++ b/examples/peacekeeping/PeaceRes.gf @@ -2,6 +2,8 @@ resource PeaceRes = { param Punct = FullStop | QuestMark | ExclMark ; + param SForm = SPos | SNeg | SQuest ; + oper stop, quest, excl : Str -> { s : Str; p : Punct } ; stop x = { s = x; p = FullStop } ; diff --git a/examples/peacekeeping/PeaceSyntax.gf b/examples/peacekeeping/PeaceSyntax.gf index 21b852d63..adbf42571 100644 --- a/examples/peacekeeping/PeaceSyntax.gf +++ b/examples/peacekeeping/PeaceSyntax.gf @@ -1,10 +1,5 @@ abstract PeaceSyntax = PeaceCat ** { - cat - Sent ; - Quest ; - MassCN ; - fun PhrPos : Sent -> Phrase ; PhrNeg : Sent -> Phrase ; diff --git a/examples/peacekeeping/PeaceSyntaxI.gf b/examples/peacekeeping/PeaceSyntaxI.gf index 9f29f9f3c..6be637d84 100644 --- a/examples/peacekeeping/PeaceSyntaxI.gf +++ b/examples/peacekeeping/PeaceSyntaxI.gf @@ -1,86 +1,77 @@ incomplete concrete PeaceSyntaxI of PeaceSyntax = - PeaceCatI ** open Lang,PeaceRes in { + PeaceCatI ** open Lang,Constructors,PeaceRes in { flags unlexer = text ; lexer = text ; - lincat - Sent = {s : SForm => Str} ; - Quest = { s : Str } ; - MassCN = CN ; - lin PhrPos sent = stop (sent.s!SPos) ; PhrNeg sent = stop (sent.s!SNeg) ; PhrQuest q = quest q.s ; - PhrImp imp = excl (PhrUtt NoPConj (UttImpSg PPos imp) NoVoc).s; - PhrImpNeg imp = excl (PhrUtt NoPConj (UttImpSg PNeg imp) NoVoc).s; + PhrImp imp = excl (mkPhr (mkUtt imp)).s; + PhrImpNeg imp = excl (mkPhr (mkUtt negativePol imp)).s; - PhrYes = stop yes_Phr.s ; - PhrNo = stop no_Phr.s ; + PhrYes = stop yes_Utt.s ; + PhrNo = stop no_Utt.s ; +{- QuestSent sent = { s = sent.s!SQuest } ; QuestIP_V v ip = mkQuest (QuestVP ip (UseV v)) ; - QuestIP_V2 v ip x = mkQuest (QuestVP ip (ComplV2 v x)) ; - QuestIP_V2Mass v ip x = mkQuest (QuestVP ip (ComplV2 v (massNP x))) ; - QuestIP_V3 v ip x y = mkQuest (QuestVP ip (ComplV3 v x y)) ; - QuestIP_V3Mass v ip x y = mkQuest (QuestVP ip (ComplV3 v (massNP x) y)) ; + QuestIP_V2 v2 ip x = mkQuest (QuestVP ip (mkVP v2 x)) ; + QuestIP_V2Mass v2 ip x = mkQuest (QuestVP ip (mkVP v2 (MassNP x))) ; + QuestIP_V3 v3 ip x y = mkQuest (QuestVP ip (mkVP v3 x y)) ; + QuestIP_V3Mass v3 ip x y = mkQuest (QuestVP ip (mkVP v3 (MassNP x) y)) ; QuestIP_A a ip = mkQuest (QuestVP ip (UseComp (CompAP (PositA a)))); QuestIAdv_NP x ia = mkQuest (QuestIComp (CompIAdv ia) x); QuestIAdv_V v x ia = mkQuest (QuestIAdv ia (PredVP x (UseV v))); QuestIAdv_V2 v x y ia = mkQuest (QuestIAdv ia (PredVP x (ComplV2 v y))); +-} - SentV v np = mkSent np (UseV v) ; + SentV v np = mkSent (mkS np v) ; - SentV2 v x y = mkSent x (ComplV2 v y) ; - SentV2Mass v x y = mkSent x (ComplV2 v (massNP y)) ; - SentV3 v x y z = mkSent x (ComplV3 v y z) ; - SentV3Mass v x y z = mkSent x (ComplV3 v (massNP y) z) ; - SentA a x = mkSent x (UseComp (CompAP (PositA a))) ; - SentNP a x = mkSent x (UseComp (CompNP a)) ; + SentV2 v2 x y = mkSent (mkCl x v2 y) ; + SentV2Mass v2 x y = mkSent (mkCl x v2 (MassNP y)) ; + SentV3 v3 x y z = mkSent (mkCl x v3 y z) ; + SentV3Mass v3 x y z = mkSent (mkCl x v3 (MassNP y) z) ; + SentA a x = mkSent (mkCl x a) ; + SentNP np x = mkSent (mkCl x np) ; - SentAdvV v np adv = mkSent np (AdvVP (UseV v) adv) ; - SentAdvV2 v x y adv = mkSent x (AdvVP (ComplV2 v y) adv) ; + SentAdvV v x adv = mkSent (mkCl x (mkVP (mkVP v) adv)) ; + SentAdvV2 v2 x y adv = mkSent (mkCl x (mkVP (mkVP v2 y) adv)) ; - ImpV v = ImpVP (UseV v) ; - ImpV2 v x = ImpVP (ComplV2 v x) ; - ImpV2Mass v x = ImpVP (ComplV2 v (massNP x)) ; - ImpV3 v x y = ImpVP (ComplV3 v x y) ; - ImpV3Mass v x y = ImpVP (ComplV3 v (massNP x) y) ; + ImpV v = mkImp v ; + ImpV2 v2 x = mkImp v2 x ; + ImpV2Mass v2 x = mkImp v2 (MassNP x) ; + ImpV3 v3 x y = mkImp (mkVP v3 x y) ; + ImpV3Mass v3 x y = mkImp (mkVP v3 (MassNP x) y) ; - UsePron p = UsePron p ; - PossPronCNSg p n = DetCN (DetSg (SgQuant (PossPron p)) NoOrd) n; - PossPronCNPl p n = DetCN (DetPl (PlQuant (PossPron p)) NoNum NoOrd) n; - DetCN d n = DetCN d n ; - NumCN k cn = DetCN (DetPl (PlQuant IndefArt) k NoOrd) cn ; + UsePron p = mkNP p ; +-- PossPronCNSg p n = DetCN (DetSg (SgQuant (PossPron p)) NoOrd) n; +-- PossPronCNPl p n = mkNP (DetPl (PlQuant (PossPron p)) NoNum NoOrd) n; + DetCN d n = mkNP d n ; + NumCN k cn = mkNP a_Art k cn ; - UseN n = UseN n ; - ModCN a cn = AdjCN (PositA a) cn ; + UseN n = mkCN n ; + ModCN a cn = mkCN a cn ; - UseMassN mn = UseN mn ; - ModMass a cn = AdjCN (PositA a) cn ; - - param - SForm = SPos | SNeg | SQuest ; + UseMassN mn = mkCN mn ; + ModMass a cn = mkCN a cn ; oper - mkSent : NP -> VP -> Sent ; - mkSent np vp = - let cl = PredVP np vp - in { + mkSent : Cl -> Sent ; + mkSent cl = + { s = table { - SPos => Predef.toStr S (UseCl TPres ASimul PPos cl) ; - SNeg => Predef.toStr S (UseCl TPres ASimul PNeg cl) ; - SQuest => Predef.toStr QS (UseQCl TPres ASimul PPos (QuestCl cl)) + SPos => Predef.toStr S (mkS cl) ; + SNeg => Predef.toStr S (mkS negativePol cl) ; + SQuest => Predef.toStr QS (mkQS cl) } ; lock_Sent = <> } ; - massNP : CN -> NP = \mcn -> DetCN (DetSg MassDet NoOrd) mcn ; - mkQuest : QCl -> Quest ; - mkQuest q = { s = Predef.toStr QS (UseQCl TPres ASimul PPos q); + mkQuest q = { s = Predef.toStr QS (mkQS q); lock_Quest = <> } ; } diff --git a/examples/peacekeeping/english/PeaceCat_Eng.gf b/examples/peacekeeping/english/PeaceCat_Eng.gf index d73e1d581..0f3e59bf5 100644 --- a/examples/peacekeeping/english/PeaceCat_Eng.gf +++ b/examples/peacekeeping/english/PeaceCat_Eng.gf @@ -1,3 +1,3 @@ --# -path=.:present:prelude -concrete PeaceCat_Eng of PeaceCat = CatEng ** PeaceCatI with (Lang = LangEng); \ No newline at end of file +concrete PeaceCat_Eng of PeaceCat = PeaceCatI with (Lang = LangEng); \ No newline at end of file diff --git a/examples/peacekeeping/finnish/PeaceCat_Fin.gf b/examples/peacekeeping/finnish/PeaceCat_Fin.gf index b5e73aaf1..1a0c6ac9c 100644 --- a/examples/peacekeeping/finnish/PeaceCat_Fin.gf +++ b/examples/peacekeeping/finnish/PeaceCat_Fin.gf @@ -1,3 +1,3 @@ --# -path=.:present:prelude -concrete PeaceCat_Fin of PeaceCat = CatFin ** PeaceCatI with (Lang = LangFin); +concrete PeaceCat_Fin of PeaceCat = PeaceCatI with (Lang = LangFin); diff --git a/examples/peacekeeping/swedish/PeaceCat_Swe.gf b/examples/peacekeeping/swedish/PeaceCat_Swe.gf index 5ccfb2ed5..e056dc86a 100644 --- a/examples/peacekeeping/swedish/PeaceCat_Swe.gf +++ b/examples/peacekeeping/swedish/PeaceCat_Swe.gf @@ -1,3 +1,3 @@ --# -path=.:present:prelude -concrete PeaceCat_Swe of PeaceCat = CatSwe ** PeaceCatI with (Lang = LangSwe); \ No newline at end of file +concrete PeaceCat_Swe of PeaceCat = PeaceCatI with (Lang = LangSwe); \ No newline at end of file