mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-23 03:32:51 -06:00
Use overloaded API in peace keeping grammar. Still not compiling, "no instance of mkS for Cl among ... Cl ... ?"
This commit is contained in:
@@ -1,10 +1,16 @@
|
|||||||
abstract PeaceCat = Cat ** {
|
abstract PeaceCat = {
|
||||||
|
|
||||||
cat
|
cat
|
||||||
|
N; A; V; V2; V3; Pron;
|
||||||
|
IP; IAdv;
|
||||||
|
Adv; NP; CN; Imp; Det; Num;
|
||||||
MassN ;
|
MassN ;
|
||||||
Phrase ;
|
Phrase ;
|
||||||
PhraseWritten ;
|
PhraseWritten ;
|
||||||
PhraseSpoken ;
|
PhraseSpoken ;
|
||||||
|
Sent ;
|
||||||
|
Quest ;
|
||||||
|
MassCN ;
|
||||||
|
|
||||||
fun
|
fun
|
||||||
Written : Phrase -> PhraseWritten ;
|
Written : Phrase -> PhraseWritten ;
|
||||||
|
|||||||
@@ -1,12 +1,20 @@
|
|||||||
incomplete concrete PeaceCatI of PeaceCat =
|
incomplete concrete PeaceCatI of PeaceCat =
|
||||||
Cat ** open Lang, PeaceRes, Prelude in {
|
open Lang, PeaceRes, Prelude in {
|
||||||
|
|
||||||
lincat
|
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 ;
|
MassN = N ;
|
||||||
Phrase = { s : Str; p : Punct } ;
|
Phrase = { s : Str; p : Punct } ;
|
||||||
PhraseWritten = { s : Str } ;
|
PhraseWritten = { s : Str } ;
|
||||||
PhraseSpoken = { s : Str } ;
|
PhraseSpoken = { s : Str } ;
|
||||||
|
|
||||||
|
Sent = {s : SForm => Str} ;
|
||||||
|
Quest = { s : Str } ;
|
||||||
|
MassCN = CN ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
Written x = mkWritten x.s x.p ;
|
Written x = mkWritten x.s x.p ;
|
||||||
Spoken x = { s = x.s } ;
|
Spoken x = { s = x.s } ;
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ resource PeaceRes = {
|
|||||||
|
|
||||||
param Punct = FullStop | QuestMark | ExclMark ;
|
param Punct = FullStop | QuestMark | ExclMark ;
|
||||||
|
|
||||||
|
param SForm = SPos | SNeg | SQuest ;
|
||||||
|
|
||||||
oper
|
oper
|
||||||
stop, quest, excl : Str -> { s : Str; p : Punct } ;
|
stop, quest, excl : Str -> { s : Str; p : Punct } ;
|
||||||
stop x = { s = x; p = FullStop } ;
|
stop x = { s = x; p = FullStop } ;
|
||||||
|
|||||||
@@ -1,10 +1,5 @@
|
|||||||
abstract PeaceSyntax = PeaceCat ** {
|
abstract PeaceSyntax = PeaceCat ** {
|
||||||
|
|
||||||
cat
|
|
||||||
Sent ;
|
|
||||||
Quest ;
|
|
||||||
MassCN ;
|
|
||||||
|
|
||||||
fun
|
fun
|
||||||
PhrPos : Sent -> Phrase ;
|
PhrPos : Sent -> Phrase ;
|
||||||
PhrNeg : Sent -> Phrase ;
|
PhrNeg : Sent -> Phrase ;
|
||||||
|
|||||||
@@ -1,86 +1,77 @@
|
|||||||
incomplete concrete PeaceSyntaxI of PeaceSyntax =
|
incomplete concrete PeaceSyntaxI of PeaceSyntax =
|
||||||
PeaceCatI ** open Lang,PeaceRes in {
|
PeaceCatI ** open Lang,Constructors,PeaceRes in {
|
||||||
|
|
||||||
flags
|
flags
|
||||||
unlexer = text ; lexer = text ;
|
unlexer = text ; lexer = text ;
|
||||||
|
|
||||||
lincat
|
|
||||||
Sent = {s : SForm => Str} ;
|
|
||||||
Quest = { s : Str } ;
|
|
||||||
MassCN = CN ;
|
|
||||||
|
|
||||||
lin
|
lin
|
||||||
PhrPos sent = stop (sent.s!SPos) ;
|
PhrPos sent = stop (sent.s!SPos) ;
|
||||||
PhrNeg sent = stop (sent.s!SNeg) ;
|
PhrNeg sent = stop (sent.s!SNeg) ;
|
||||||
PhrQuest q = quest q.s ;
|
PhrQuest q = quest q.s ;
|
||||||
PhrImp imp = excl (PhrUtt NoPConj (UttImpSg PPos imp) NoVoc).s;
|
PhrImp imp = excl (mkPhr (mkUtt imp)).s;
|
||||||
PhrImpNeg imp = excl (PhrUtt NoPConj (UttImpSg PNeg imp) NoVoc).s;
|
PhrImpNeg imp = excl (mkPhr (mkUtt negativePol imp)).s;
|
||||||
|
|
||||||
PhrYes = stop yes_Phr.s ;
|
PhrYes = stop yes_Utt.s ;
|
||||||
PhrNo = stop no_Phr.s ;
|
PhrNo = stop no_Utt.s ;
|
||||||
|
|
||||||
|
{-
|
||||||
QuestSent sent = { s = sent.s!SQuest } ;
|
QuestSent sent = { s = sent.s!SQuest } ;
|
||||||
QuestIP_V v ip = mkQuest (QuestVP ip (UseV v)) ;
|
QuestIP_V v ip = mkQuest (QuestVP ip (UseV v)) ;
|
||||||
QuestIP_V2 v ip x = mkQuest (QuestVP ip (ComplV2 v x)) ;
|
QuestIP_V2 v2 ip x = mkQuest (QuestVP ip (mkVP v2 x)) ;
|
||||||
QuestIP_V2Mass v ip x = mkQuest (QuestVP ip (ComplV2 v (massNP x))) ;
|
QuestIP_V2Mass v2 ip x = mkQuest (QuestVP ip (mkVP v2 (MassNP x))) ;
|
||||||
QuestIP_V3 v ip x y = mkQuest (QuestVP ip (ComplV3 v x y)) ;
|
QuestIP_V3 v3 ip x y = mkQuest (QuestVP ip (mkVP v3 x y)) ;
|
||||||
QuestIP_V3Mass v ip x y = mkQuest (QuestVP ip (ComplV3 v (massNP 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))));
|
QuestIP_A a ip = mkQuest (QuestVP ip (UseComp (CompAP (PositA a))));
|
||||||
QuestIAdv_NP x ia = mkQuest (QuestIComp (CompIAdv ia) x);
|
QuestIAdv_NP x ia = mkQuest (QuestIComp (CompIAdv ia) x);
|
||||||
|
|
||||||
QuestIAdv_V v x ia = mkQuest (QuestIAdv ia (PredVP x (UseV v)));
|
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)));
|
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) ;
|
SentV2 v2 x y = mkSent (mkCl x v2 y) ;
|
||||||
SentV2Mass v x y = mkSent x (ComplV2 v (massNP y)) ;
|
SentV2Mass v2 x y = mkSent (mkCl x v2 (MassNP y)) ;
|
||||||
SentV3 v x y z = mkSent x (ComplV3 v y z) ;
|
SentV3 v3 x y z = mkSent (mkCl x v3 y z) ;
|
||||||
SentV3Mass v x y z = mkSent x (ComplV3 v (massNP y) z) ;
|
SentV3Mass v3 x y z = mkSent (mkCl x v3 (MassNP y) z) ;
|
||||||
SentA a x = mkSent x (UseComp (CompAP (PositA a))) ;
|
SentA a x = mkSent (mkCl x a) ;
|
||||||
SentNP a x = mkSent x (UseComp (CompNP a)) ;
|
SentNP np x = mkSent (mkCl x np) ;
|
||||||
|
|
||||||
SentAdvV v np adv = mkSent np (AdvVP (UseV v) adv) ;
|
SentAdvV v x adv = mkSent (mkCl x (mkVP (mkVP v) adv)) ;
|
||||||
SentAdvV2 v x y adv = mkSent x (AdvVP (ComplV2 v y) adv) ;
|
SentAdvV2 v2 x y adv = mkSent (mkCl x (mkVP (mkVP v2 y) adv)) ;
|
||||||
|
|
||||||
ImpV v = ImpVP (UseV v) ;
|
ImpV v = mkImp v ;
|
||||||
ImpV2 v x = ImpVP (ComplV2 v x) ;
|
ImpV2 v2 x = mkImp v2 x ;
|
||||||
ImpV2Mass v x = ImpVP (ComplV2 v (massNP x)) ;
|
ImpV2Mass v2 x = mkImp v2 (MassNP x) ;
|
||||||
ImpV3 v x y = ImpVP (ComplV3 v x y) ;
|
ImpV3 v3 x y = mkImp (mkVP v3 x y) ;
|
||||||
ImpV3Mass v x y = ImpVP (ComplV3 v (massNP x) y) ;
|
ImpV3Mass v3 x y = mkImp (mkVP v3 (MassNP x) y) ;
|
||||||
|
|
||||||
UsePron p = UsePron p ;
|
UsePron p = mkNP p ;
|
||||||
PossPronCNSg p n = DetCN (DetSg (SgQuant (PossPron p)) NoOrd) n;
|
-- PossPronCNSg p n = DetCN (DetSg (SgQuant (PossPron p)) NoOrd) n;
|
||||||
PossPronCNPl p n = DetCN (DetPl (PlQuant (PossPron p)) NoNum NoOrd) n;
|
-- PossPronCNPl p n = mkNP (DetPl (PlQuant (PossPron p)) NoNum NoOrd) n;
|
||||||
DetCN d n = DetCN d n ;
|
DetCN d n = mkNP d n ;
|
||||||
NumCN k cn = DetCN (DetPl (PlQuant IndefArt) k NoOrd) cn ;
|
NumCN k cn = mkNP a_Art k cn ;
|
||||||
|
|
||||||
UseN n = UseN n ;
|
UseN n = mkCN n ;
|
||||||
ModCN a cn = AdjCN (PositA a) cn ;
|
ModCN a cn = mkCN a cn ;
|
||||||
|
|
||||||
UseMassN mn = UseN mn ;
|
UseMassN mn = mkCN mn ;
|
||||||
ModMass a cn = AdjCN (PositA a) cn ;
|
ModMass a cn = mkCN a cn ;
|
||||||
|
|
||||||
param
|
|
||||||
SForm = SPos | SNeg | SQuest ;
|
|
||||||
|
|
||||||
oper
|
oper
|
||||||
mkSent : NP -> VP -> Sent ;
|
mkSent : Cl -> Sent ;
|
||||||
mkSent np vp =
|
mkSent cl =
|
||||||
let cl = PredVP np vp
|
{
|
||||||
in {
|
|
||||||
s = table {
|
s = table {
|
||||||
SPos => Predef.toStr S (UseCl TPres ASimul PPos cl) ;
|
SPos => Predef.toStr S (mkS cl) ;
|
||||||
SNeg => Predef.toStr S (UseCl TPres ASimul PNeg cl) ;
|
SNeg => Predef.toStr S (mkS negativePol cl) ;
|
||||||
SQuest => Predef.toStr QS (UseQCl TPres ASimul PPos (QuestCl cl))
|
SQuest => Predef.toStr QS (mkQS cl)
|
||||||
} ;
|
} ;
|
||||||
lock_Sent = <>
|
lock_Sent = <>
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
massNP : CN -> NP = \mcn -> DetCN (DetSg MassDet NoOrd) mcn ;
|
|
||||||
|
|
||||||
mkQuest : QCl -> Quest ;
|
mkQuest : QCl -> Quest ;
|
||||||
mkQuest q = { s = Predef.toStr QS (UseQCl TPres ASimul PPos q);
|
mkQuest q = { s = Predef.toStr QS (mkQS q);
|
||||||
lock_Quest = <> } ;
|
lock_Quest = <> } ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
--# -path=.:present:prelude
|
--# -path=.:present:prelude
|
||||||
|
|
||||||
concrete PeaceCat_Eng of PeaceCat = CatEng ** PeaceCatI with (Lang = LangEng);
|
concrete PeaceCat_Eng of PeaceCat = PeaceCatI with (Lang = LangEng);
|
||||||
@@ -1,3 +1,3 @@
|
|||||||
--# -path=.:present:prelude
|
--# -path=.:present:prelude
|
||||||
|
|
||||||
concrete PeaceCat_Fin of PeaceCat = CatFin ** PeaceCatI with (Lang = LangFin);
|
concrete PeaceCat_Fin of PeaceCat = PeaceCatI with (Lang = LangFin);
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
--# -path=.:present:prelude
|
--# -path=.:present:prelude
|
||||||
|
|
||||||
concrete PeaceCat_Swe of PeaceCat = CatSwe ** PeaceCatI with (Lang = LangSwe);
|
concrete PeaceCat_Swe of PeaceCat = PeaceCatI with (Lang = LangSwe);
|
||||||
Reference in New Issue
Block a user