forked from GitHub/gf-core
Swedish functor implementation of Base
This commit is contained in:
@@ -11,13 +11,12 @@ domain = [0 .. 100]
|
|||||||
iS :: GS -> Prop
|
iS :: GS -> Prop
|
||||||
iS s = case s of
|
iS s = case s of
|
||||||
GPredAP np ap -> iNP np (iAP ap)
|
GPredAP np ap -> iNP np (iAP ap)
|
||||||
GConjS c s t -> iConj c (iS s) (iS t)
|
|
||||||
|
|
||||||
iNP :: GNP -> (Ent -> Prop) -> Prop
|
iNP :: GNP -> (Ent -> Prop) -> Prop
|
||||||
iNP np p = case np of
|
iNP np p = case np of
|
||||||
GEvery cn -> all (\x -> not (iCN cn x) || p x) domain
|
GEvery cn -> all (\x -> not (iCN cn x) || p x) domain
|
||||||
GSome cn -> any (\x -> iCN cn x && p x) domain
|
GSome cn -> any (\x -> iCN cn x && p x) domain
|
||||||
GNone cn -> not (any (\x -> iCN cn x && p x) domain)
|
GNone -> not (any (\x -> p x) domain)
|
||||||
GMany pns -> and (map p (iListPN pns))
|
GMany pns -> and (map p (iListPN pns))
|
||||||
GConjNP c np1 np2 -> iConj c (iNP np1 p) (iNP np2 p)
|
GConjNP c np1 np2 -> iConj c (iNP np1 p) (iNP np2 p)
|
||||||
GUsePN a -> p (iPN a)
|
GUsePN a -> p (iPN a)
|
||||||
@@ -74,7 +73,7 @@ question2answer :: GQuestion -> GAnswer
|
|||||||
question2answer q = case iQuestion q of
|
question2answer q = case iQuestion q of
|
||||||
Left True -> GYes
|
Left True -> GYes
|
||||||
Left False -> GNo
|
Left False -> GNo
|
||||||
Right [] -> GValue (GNone GNumber)
|
Right [] -> GValue GNone
|
||||||
Right [v] -> GValue (GUsePN (ent2pn v))
|
Right [v] -> GValue (GUsePN (ent2pn v))
|
||||||
Right vs -> GValue (GMany (GListPN (map ent2pn vs)))
|
Right vs -> GValue (GMany (GListPN (map ent2pn vs)))
|
||||||
|
|
||||||
|
|||||||
@@ -19,14 +19,12 @@ fun
|
|||||||
|
|
||||||
ModCN : AP -> CN -> CN ;
|
ModCN : AP -> CN -> CN ;
|
||||||
|
|
||||||
ConjS : Conj -> S -> S -> S ;
|
|
||||||
ConjAP : Conj -> AP -> AP -> AP ;
|
ConjAP : Conj -> AP -> AP -> AP ;
|
||||||
ConjNP : Conj -> NP -> NP -> NP ;
|
ConjNP : Conj -> NP -> NP -> NP ;
|
||||||
|
|
||||||
UsePN : PN -> NP ;
|
UsePN : PN -> NP ;
|
||||||
Every : CN -> NP ;
|
Every : CN -> NP ;
|
||||||
Some : CN -> NP ;
|
Some : CN -> NP ;
|
||||||
None : CN -> NP ;
|
|
||||||
|
|
||||||
And, Or : Conj ;
|
And, Or : Conj ;
|
||||||
|
|
||||||
@@ -55,6 +53,7 @@ fun
|
|||||||
No : Answer ;
|
No : Answer ;
|
||||||
Value : NP -> Answer ;
|
Value : NP -> Answer ;
|
||||||
|
|
||||||
|
None : NP ;
|
||||||
Many : ListPN -> NP ;
|
Many : ListPN -> NP ;
|
||||||
BasePN : PN -> PN -> ListPN ;
|
BasePN : PN -> PN -> ListPN ;
|
||||||
ConsPN : PN -> ListPN -> ListPN ;
|
ConsPN : PN -> ListPN -> ListPN ;
|
||||||
|
|||||||
@@ -13,14 +13,12 @@ lin
|
|||||||
|
|
||||||
ModCN = cc2 ;
|
ModCN = cc2 ;
|
||||||
|
|
||||||
ConjS c = infixSS c.s ;
|
|
||||||
ConjAP c = infixSS c.s ;
|
ConjAP c = infixSS c.s ;
|
||||||
ConjNP c = infixSS c.s ;
|
ConjNP c = infixSS c.s ;
|
||||||
|
|
||||||
UsePN a = a ;
|
UsePN a = a ;
|
||||||
Every = prefixSS "every" ;
|
Every = prefixSS "every" ;
|
||||||
Some = prefixSS "some" ;
|
Some = prefixSS "some" ;
|
||||||
None = prefixSS "no" ;
|
|
||||||
|
|
||||||
And = ss "and" ;
|
And = ss "and" ;
|
||||||
Or = ss "or" ;
|
Or = ss "or" ;
|
||||||
@@ -49,6 +47,7 @@ lin
|
|||||||
No = ss "no" ;
|
No = ss "no" ;
|
||||||
|
|
||||||
Value np = np ;
|
Value np = np ;
|
||||||
|
None = ss "none" ;
|
||||||
Many list = list ;
|
Many list = list ;
|
||||||
|
|
||||||
BasePN = infixSS "and" ;
|
BasePN = infixSS "and" ;
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ flags lexer=literals ; unlexer=text ;
|
|||||||
lincat
|
lincat
|
||||||
Question = G.Phr ;
|
Question = G.Phr ;
|
||||||
Answer = G.Phr ;
|
Answer = G.Phr ;
|
||||||
S = Cl ;
|
S = G.Cl ;
|
||||||
NP = G.NP ;
|
NP = G.NP ;
|
||||||
PN = G.NP ;
|
PN = G.NP ;
|
||||||
CN = G.CN ;
|
CN = G.CN ;
|
||||||
@@ -22,14 +22,12 @@ lin
|
|||||||
|
|
||||||
ModCN = mkCN ;
|
ModCN = mkCN ;
|
||||||
|
|
||||||
--- ConjS = mkS ;
|
|
||||||
ConjAP = mkAP ;
|
ConjAP = mkAP ;
|
||||||
ConjNP = mkNP ;
|
ConjNP = mkNP ;
|
||||||
|
|
||||||
UsePN p = p ;
|
UsePN p = p ;
|
||||||
Every = mkNP every_Det ;
|
Every = mkNP every_Det ;
|
||||||
Some = mkNP someSg_Det ;
|
Some = mkNP someSg_Det ;
|
||||||
--- None = mkNP noSg_Det ; ---
|
|
||||||
|
|
||||||
And = and_Conj ;
|
And = and_Conj ;
|
||||||
Or = or_Conj ;
|
Or = or_Conj ;
|
||||||
@@ -48,7 +46,8 @@ lin
|
|||||||
|
|
||||||
Sum = prefix sum_N2 ;
|
Sum = prefix sum_N2 ;
|
||||||
Product = prefix product_N2 ;
|
Product = prefix product_N2 ;
|
||||||
--- GCD = prefixSS ["the greatest common divisor of"] ;
|
GCD nps = mkNP (mkDet (mkQuantSg defQuant) (mkOrd great_A))
|
||||||
|
(mkCN common_A (mkCN divisor_N2 (mkNP and_Conj nps))) ;
|
||||||
|
|
||||||
WhatIs np = mkPhr (mkQS (mkQCl whatSg_IP (mkVP np))) ;
|
WhatIs np = mkPhr (mkQS (mkQCl whatSg_IP (mkVP np))) ;
|
||||||
WhichAre cn ap = mkPhr (mkQS (mkQCl (mkIP whichPl_IDet cn) (mkVP ap))) ;
|
WhichAre cn ap = mkPhr (mkQS (mkQCl (mkIP whichPl_IDet cn) (mkVP ap))) ;
|
||||||
@@ -59,6 +58,7 @@ lin
|
|||||||
|
|
||||||
Value np = mkPhr (mkUtt np) ;
|
Value np = mkPhr (mkUtt np) ;
|
||||||
Many list = mkNP and_Conj list ;
|
Many list = mkNP and_Conj list ;
|
||||||
|
None = none_NP ;
|
||||||
|
|
||||||
BasePN = G.BaseNP ;
|
BasePN = G.BaseNP ;
|
||||||
ConsPN = G.ConsNP ;
|
ConsPN = G.ConsNP ;
|
||||||
|
|||||||
8
examples/tutorial/semantics/BaseSwe.gf
Normal file
8
examples/tutorial/semantics/BaseSwe.gf
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
--# -path=.:prelude:present:api:mathematical
|
||||||
|
|
||||||
|
concrete BaseSwe of Base = BaseI with
|
||||||
|
(Syntax = SyntaxSwe),
|
||||||
|
(Grammar = GrammarSwe),
|
||||||
|
(G = GrammarSwe),
|
||||||
|
(Symbolic = SymbolicSwe),
|
||||||
|
(LexBase = LexBaseSwe) ;
|
||||||
@@ -83,7 +83,7 @@ data GNP =
|
|||||||
GConjNP GConj GNP GNP
|
GConjNP GConj GNP GNP
|
||||||
| GEvery GCN
|
| GEvery GCN
|
||||||
| GMany GListPN
|
| GMany GListPN
|
||||||
| GNone GCN
|
| GNone
|
||||||
| GSome GCN
|
| GSome GCN
|
||||||
| GUsePN GPN
|
| GUsePN GPN
|
||||||
deriving Show
|
deriving Show
|
||||||
@@ -101,9 +101,7 @@ data GQuestion =
|
|||||||
| GWhichAre GCN GAP
|
| GWhichAre GCN GAP
|
||||||
deriving Show
|
deriving Show
|
||||||
|
|
||||||
data GS =
|
data GS = GPredAP GNP GAP
|
||||||
GConjS GConj GS GS
|
|
||||||
| GPredAP GNP GAP
|
|
||||||
deriving Show
|
deriving Show
|
||||||
|
|
||||||
|
|
||||||
@@ -141,7 +139,7 @@ instance Gf GNP where
|
|||||||
gf (GConjNP x1 x2 x3) = DTr [] (AC (CId "ConjNP")) [gf x1, gf x2, gf x3]
|
gf (GConjNP x1 x2 x3) = DTr [] (AC (CId "ConjNP")) [gf x1, gf x2, gf x3]
|
||||||
gf (GEvery x1) = DTr [] (AC (CId "Every")) [gf x1]
|
gf (GEvery x1) = DTr [] (AC (CId "Every")) [gf x1]
|
||||||
gf (GMany x1) = DTr [] (AC (CId "Many")) [gf x1]
|
gf (GMany x1) = DTr [] (AC (CId "Many")) [gf x1]
|
||||||
gf (GNone x1) = DTr [] (AC (CId "None")) [gf x1]
|
gf GNone = DTr [] (AC (CId "None")) []
|
||||||
gf (GSome x1) = DTr [] (AC (CId "Some")) [gf x1]
|
gf (GSome x1) = DTr [] (AC (CId "Some")) [gf x1]
|
||||||
gf (GUsePN x1) = DTr [] (AC (CId "UsePN")) [gf x1]
|
gf (GUsePN x1) = DTr [] (AC (CId "UsePN")) [gf x1]
|
||||||
|
|
||||||
@@ -156,9 +154,7 @@ instance Gf GQuestion where
|
|||||||
gf (GWhatIs x1) = DTr [] (AC (CId "WhatIs")) [gf x1]
|
gf (GWhatIs x1) = DTr [] (AC (CId "WhatIs")) [gf x1]
|
||||||
gf (GWhichAre x1 x2) = DTr [] (AC (CId "WhichAre")) [gf x1, gf x2]
|
gf (GWhichAre x1 x2) = DTr [] (AC (CId "WhichAre")) [gf x1, gf x2]
|
||||||
|
|
||||||
instance Gf GS where
|
instance Gf GS where gf (GPredAP x1 x2) = DTr [] (AC (CId "PredAP")) [gf x1, gf x2]
|
||||||
gf (GConjS x1 x2 x3) = DTr [] (AC (CId "ConjS")) [gf x1, gf x2, gf x3]
|
|
||||||
gf (GPredAP x1 x2) = DTr [] (AC (CId "PredAP")) [gf x1, gf x2]
|
|
||||||
|
|
||||||
|
|
||||||
instance Fg GA2 where
|
instance Fg GA2 where
|
||||||
@@ -215,7 +211,7 @@ instance Fg GNP where
|
|||||||
DTr [] (AC (CId "ConjNP")) [x1,x2,x3] -> GConjNP (fg x1) (fg x2) (fg x3)
|
DTr [] (AC (CId "ConjNP")) [x1,x2,x3] -> GConjNP (fg x1) (fg x2) (fg x3)
|
||||||
DTr [] (AC (CId "Every")) [x1] -> GEvery (fg x1)
|
DTr [] (AC (CId "Every")) [x1] -> GEvery (fg x1)
|
||||||
DTr [] (AC (CId "Many")) [x1] -> GMany (fg x1)
|
DTr [] (AC (CId "Many")) [x1] -> GMany (fg x1)
|
||||||
DTr [] (AC (CId "None")) [x1] -> GNone (fg x1)
|
DTr [] (AC (CId "None")) [] -> GNone
|
||||||
DTr [] (AC (CId "Some")) [x1] -> GSome (fg x1)
|
DTr [] (AC (CId "Some")) [x1] -> GSome (fg x1)
|
||||||
DTr [] (AC (CId "UsePN")) [x1] -> GUsePN (fg x1)
|
DTr [] (AC (CId "UsePN")) [x1] -> GUsePN (fg x1)
|
||||||
_ -> error ("no NP " ++ show t)
|
_ -> error ("no NP " ++ show t)
|
||||||
@@ -240,7 +236,6 @@ instance Fg GQuestion where
|
|||||||
instance Fg GS where
|
instance Fg GS where
|
||||||
fg t =
|
fg t =
|
||||||
case t of
|
case t of
|
||||||
DTr [] (AC (CId "ConjS")) [x1,x2,x3] -> GConjS (fg x1) (fg x2) (fg x3)
|
|
||||||
DTr [] (AC (CId "PredAP")) [x1,x2] -> GPredAP (fg x1) (fg x2)
|
DTr [] (AC (CId "PredAP")) [x1,x2] -> GPredAP (fg x1) (fg x2)
|
||||||
_ -> error ("no S " ++ show t)
|
_ -> error ("no S " ++ show t)
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ oper
|
|||||||
even_A : A ;
|
even_A : A ;
|
||||||
odd_A : A ;
|
odd_A : A ;
|
||||||
prime_A : A ;
|
prime_A : A ;
|
||||||
|
common_A : A ;
|
||||||
|
great_A : A ;
|
||||||
equal_A2 : A2 ;
|
equal_A2 : A2 ;
|
||||||
greater_A2 : A2 ;
|
greater_A2 : A2 ;
|
||||||
smaller_A2 : A2 ;
|
smaller_A2 : A2 ;
|
||||||
@@ -11,7 +13,7 @@ oper
|
|||||||
number_N : N ;
|
number_N : N ;
|
||||||
sum_N2 : N2 ;
|
sum_N2 : N2 ;
|
||||||
product_N2 : N2 ;
|
product_N2 : N2 ;
|
||||||
gcd_N2 : N2 ;
|
divisor_N2 : N2 ;
|
||||||
|
|
||||||
noSg_Det : Det ;
|
none_NP : NP ; ---
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,14 +4,17 @@ oper
|
|||||||
even_A = mkA "even" ;
|
even_A = mkA "even" ;
|
||||||
odd_A = mkA "odd" ;
|
odd_A = mkA "odd" ;
|
||||||
prime_A = mkA "prime" ;
|
prime_A = mkA "prime" ;
|
||||||
|
great_A = mkA "great" ;
|
||||||
|
common_A = mkA "common" ;
|
||||||
equal_A2 = mkA2 (mkA "equal") (mkPrep "to") ;
|
equal_A2 = mkA2 (mkA "equal") (mkPrep "to") ;
|
||||||
greater_A2 = mkA2 (mkA "greater") (mkPrep "than") ; ---
|
greater_A2 = mkA2 (mkA "greater") (mkPrep "than") ; ---
|
||||||
smaller_A2 = mkA2 (mkA "smaller") (mkPrep "than") ; ---
|
smaller_A2 = mkA2 (mkA "smaller") (mkPrep "than") ; ---
|
||||||
divisible_A2 = mkA2 (mkA "divisible") (mkPrep "by") ;
|
divisible_A2 = mkA2 (mkA "divisible") (mkPrep "by") ;
|
||||||
number_N = mkN "number" ;
|
number_N = mkN "number" ;
|
||||||
sum_N2 = mkN2 (mkN "sum") (mkPrep "of") ;
|
sum_N2 = mkN2 (mkN "sum") (mkPrep "of") ;
|
||||||
-- product_N2 : N2 ;
|
product_N2 = mkN2 (mkN "product") (mkPrep "of") ;
|
||||||
-- gcd_N2 : N2 ;
|
divisor_N2 = mkN2 (mkN "divisor") (mkPrep "of") ;
|
||||||
|
|
||||||
|
none_NP = mkNP (mkPN "none") ; ---
|
||||||
|
|
||||||
-- noSg_Det : Det ;
|
|
||||||
}
|
}
|
||||||
|
|||||||
22
examples/tutorial/semantics/LexBaseSwe.gf
Normal file
22
examples/tutorial/semantics/LexBaseSwe.gf
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
instance LexBaseSwe of LexBase = open SyntaxSwe, ParadigmsSwe in {
|
||||||
|
|
||||||
|
oper
|
||||||
|
even_A = mkA "jämn" ;
|
||||||
|
odd_A = invarA "udda" ;
|
||||||
|
prime_A = mkA "prim" ;
|
||||||
|
great_A = mkA "stor" "större" "störst" ;
|
||||||
|
common_A = mkA "gemensam" ;
|
||||||
|
equal_A2 = mkA2 (invarA "lika") (mkPrep "med") ;
|
||||||
|
greater_A2 = mkA2 (invarA "större") (mkPrep "än") ; ---
|
||||||
|
smaller_A2 = mkA2 (invarA "mindre") (mkPrep "än") ; ---
|
||||||
|
divisible_A2 = mkA2 (mkA "delbar") (mkPrep "med") ;
|
||||||
|
number_N = mkN "tal" "tal" ;
|
||||||
|
sum_N2 = mkN2 (mkN "summa") (mkPrep "av") ;
|
||||||
|
product_N2 = mkN2 (mkN "produkt") (mkPrep "av") ;
|
||||||
|
divisor_N2 = mkN2 (mkN "delare") (mkPrep "av") ;
|
||||||
|
|
||||||
|
none_NP = mkNP (mkPN "inget" neutrum) ; ---
|
||||||
|
|
||||||
|
invarA : Str -> A = \x -> mkA x x x x x ; ---
|
||||||
|
|
||||||
|
}
|
||||||
@@ -25,7 +25,7 @@ concrete StructuralSwe of Structural = CatSwe **
|
|||||||
during_Prep = ss "under" ;
|
during_Prep = ss "under" ;
|
||||||
either7or_DConj = sd2 "antingen" "eller" ** {n = Sg} ;
|
either7or_DConj = sd2 "antingen" "eller" ** {n = Sg} ;
|
||||||
everybody_NP = regNP "alla" "allas" Plg ;
|
everybody_NP = regNP "alla" "allas" Plg ;
|
||||||
every_Det = {s = \\_,_ => "varje" ; n = Sg ; det = DDef Indef} ;
|
every_Det = {s = \\_,_ => "varje" ; n = Sg ; det = DIndef} ;
|
||||||
everything_NP = regNP "allting" "alltings" SgNeutr ;
|
everything_NP = regNP "allting" "alltings" SgNeutr ;
|
||||||
everywhere_Adv = ss "överallt" ;
|
everywhere_Adv = ss "överallt" ;
|
||||||
few_Det = {s = \\_,_ => "få" ; n = Pl ; det = DDef Indef} ;
|
few_Det = {s = \\_,_ => "få" ; n = Pl ; det = DDef Indef} ;
|
||||||
|
|||||||
Reference in New Issue
Block a user