mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-20 00:22:51 -06:00
Add Phrasebook to testsuite. Move grammars into subfolders. Add run-bench script.
This commit is contained in:
12
testsuite/lpgf/walking/Walking.gf
Normal file
12
testsuite/lpgf/walking/Walking.gf
Normal file
@@ -0,0 +1,12 @@
|
||||
-- From Angelov, Bringert, Ranta (2009)
|
||||
abstract Walking = {
|
||||
flags startcat = S ;
|
||||
cat
|
||||
S; NP; VP;
|
||||
fun
|
||||
And : S -> S -> S ;
|
||||
Pred : NP -> VP -> S ;
|
||||
John : NP ;
|
||||
We : NP ;
|
||||
Walk : VP ;
|
||||
}
|
||||
78
testsuite/lpgf/walking/Walking.hs
Normal file
78
testsuite/lpgf/walking/Walking.hs
Normal file
@@ -0,0 +1,78 @@
|
||||
import LPGF
|
||||
import PGF (Tree, mkCId, mkApp)
|
||||
|
||||
import qualified Data.Map as Map
|
||||
|
||||
main = return ()
|
||||
|
||||
-- Pred John Walk
|
||||
tree1 :: Tree
|
||||
tree1 = mkApp (mkCId "Pred") [mkApp (mkCId "John") [], mkApp (mkCId "Walk") []]
|
||||
|
||||
-- Pred We Walk
|
||||
tree2 :: Tree
|
||||
tree2 = mkApp (mkCId "Pred") [mkApp (mkCId "We") [], mkApp (mkCId "Walk") []]
|
||||
|
||||
-- And (Pred John Walk) (Pred We Walk)
|
||||
tree3 :: Tree
|
||||
tree3 = mkApp (mkCId "And") [tree1, tree2]
|
||||
|
||||
-- Initial LPGF, Figures 6 & 7
|
||||
walking :: LPGF
|
||||
walking = LPGF {
|
||||
absname = mkCId "Walking",
|
||||
abstract = Abstr {
|
||||
-- cats = Map.fromList [
|
||||
-- (mkCId "S", ()),
|
||||
-- (mkCId "NP", ()),
|
||||
-- (mkCId "VP", ())
|
||||
-- ],
|
||||
-- funs = Map.fromList [
|
||||
-- (mkCId "And", Type [mkCId "S", mkCId "S"] (mkCId "S")),
|
||||
-- (mkCId "Pred", Type [mkCId "NP", mkCId "VP"] (mkCId "S")),
|
||||
-- (mkCId "John", Type [] (mkCId "NP")),
|
||||
-- (mkCId "We", Type [] (mkCId "NP")),
|
||||
-- (mkCId "Walk", Type [] (mkCId "VP"))
|
||||
-- ]
|
||||
},
|
||||
concretes = Map.fromList [
|
||||
(mkCId "WalkingEng", Concr {
|
||||
-- lincats = Map.fromList [
|
||||
-- (mkCId "S", LTStr),
|
||||
-- (mkCId "NP", LTProduct [LTStr, LTInt 2]),
|
||||
-- (mkCId "VP", LTProduct [LTStr, LTStr])
|
||||
-- ],
|
||||
lins = Map.fromList [
|
||||
(mkCId "And", mkConcat [LFArgument 1, LFToken "and", LFArgument 2]),
|
||||
-- (mkCId "Pred", mkConcat [LFProjection (LFArgument 1) (LFInt 1), LFProjection (LFArgument 2) (LFProjection (LFArgument 1) (LFInt 2))]),
|
||||
(mkCId "Pred", mkConcat [LFProjection (LFArgument 1) (LFInt 1), LFProjection (LFProjection (LFArgument 2) (LFInt 1)) (LFProjection (LFArgument 1) (LFInt 2))]),
|
||||
(mkCId "John", LFTuple [LFToken "John", LFInt 1]),
|
||||
(mkCId "We", LFTuple [LFToken "we", LFInt 2]),
|
||||
-- (mkCId "Walk", LFTuple [LFToken "walks", LFToken "walk"])
|
||||
(mkCId "Walk", LFTuple [LFTuple [LFToken "walks", LFToken "walk"]])
|
||||
]
|
||||
}),
|
||||
(mkCId "WalkingGer", Concr {
|
||||
-- lincats = Map.fromList [
|
||||
-- (mkCId "S", LTStr),
|
||||
-- (mkCId "NP", LTProduct [LTStr, LTInt 2, LTInt 3]),
|
||||
-- (mkCId "VP", LTProduct [LTProduct [LTStr, LTStr, LTStr], LTProduct [LTStr, LTStr, LTStr]])
|
||||
-- ],
|
||||
lins = Map.fromList [
|
||||
(mkCId "And", mkConcat [LFArgument 1, LFToken "und", LFArgument 2]),
|
||||
-- (mkCId "Pred", mkConcat [LFProjection (LFArgument 1) (LFInt 1), LFProjection (LFProjection (LFArgument 2) (LFProjection (LFArgument 1) (LFInt 2))) (LFProjection (LFArgument 1) (LFInt 3))]),
|
||||
(mkCId "Pred", mkConcat [LFProjection (LFArgument 1) (LFInt 1), LFProjection (LFProjection (LFProjection (LFArgument 2) (LFInt 1)) (LFProjection (LFArgument 1) (LFInt 2))) (LFProjection (LFArgument 1) (LFInt 3))]),
|
||||
(mkCId "John", LFTuple [LFToken "John", LFInt 1, LFInt 3]),
|
||||
(mkCId "We", LFTuple [LFToken "wir", LFInt 2, LFInt 1]),
|
||||
-- (mkCId "Walk", LFTuple [LFTuple [LFToken "gehe", LFToken "gehst", LFToken "geht"], LFTuple [LFToken "gehen", LFToken "geht", LFToken "gehen"]])
|
||||
(mkCId "Walk", LFTuple [LFTuple [LFTuple [LFToken "gehe", LFToken "gehst", LFToken "geht"], LFTuple [LFToken "gehen", LFToken "geht", LFToken "gehen"]]])
|
||||
]
|
||||
})
|
||||
]
|
||||
}
|
||||
|
||||
-- | Helper for building concat trees
|
||||
mkConcat :: [LinFun] -> LinFun
|
||||
mkConcat [] = LFEmpty
|
||||
mkConcat [x] = x
|
||||
mkConcat xs = foldl1 LFConcat xs
|
||||
11
testsuite/lpgf/walking/Walking.treebank
Normal file
11
testsuite/lpgf/walking/Walking.treebank
Normal file
@@ -0,0 +1,11 @@
|
||||
Walking: Pred John Walk
|
||||
WalkingEng: John walks
|
||||
WalkingGer: John geht
|
||||
|
||||
Walking: Pred We Walk
|
||||
WalkingEng: we walk
|
||||
WalkingGer: wir gehen
|
||||
|
||||
Walking: And (Pred John Walk) (Pred We Walk)
|
||||
WalkingEng: John walks and we walk
|
||||
WalkingGer: John geht und wir gehen
|
||||
3
testsuite/lpgf/walking/Walking.trees
Normal file
3
testsuite/lpgf/walking/Walking.trees
Normal file
@@ -0,0 +1,3 @@
|
||||
Pred John Walk
|
||||
Pred We Walk
|
||||
And (Pred John Walk) (Pred We Walk)
|
||||
19
testsuite/lpgf/walking/WalkingEng.gf
Normal file
19
testsuite/lpgf/walking/WalkingEng.gf
Normal file
@@ -0,0 +1,19 @@
|
||||
-- From Angelov, Bringert, Ranta (2009)
|
||||
concrete WalkingEng of Walking = {
|
||||
lincat
|
||||
S = Str ;
|
||||
NP = {s : Str; n : Number} ;
|
||||
VP = {s : Number => Str} ;
|
||||
lin
|
||||
And s1 s2 = s1 ++ "and" ++ s2 ;
|
||||
Pred np vp = np.s ++ vp.s ! np.n ;
|
||||
John = {s = "John"; n = Sg} ;
|
||||
We = {s = "we"; n = Pl} ;
|
||||
Walk = {s = table {
|
||||
Sg => "walks";
|
||||
Pl => "walk"
|
||||
}
|
||||
} ;
|
||||
param
|
||||
Number = Sg | Pl ;
|
||||
}
|
||||
28
testsuite/lpgf/walking/WalkingGer.gf
Normal file
28
testsuite/lpgf/walking/WalkingGer.gf
Normal file
@@ -0,0 +1,28 @@
|
||||
-- From Angelov, Bringert, Ranta (2009)
|
||||
concrete WalkingGer of Walking = {
|
||||
lincat
|
||||
S = Str ;
|
||||
NP = {s : Str; n : Number; p : Person} ;
|
||||
VP = {s : Number => Person => Str} ;
|
||||
lin
|
||||
And s1 s2 = s1 ++ "und" ++ s2 ;
|
||||
Pred np vp = np.s ++ vp.s ! np.n ! np.p ;
|
||||
John = {s = "John"; n = Sg ; p = P3} ;
|
||||
We = {s = "wir"; n = Pl; p = P1} ;
|
||||
Walk = {s = table {
|
||||
Sg => table {
|
||||
P1 => "gehe" ;
|
||||
P2 => "gehst" ;
|
||||
P3 => "geht"
|
||||
} ;
|
||||
Pl => table {
|
||||
P1 => "gehen" ;
|
||||
P2 => "geht" ;
|
||||
P3 => "gehen"
|
||||
}
|
||||
}
|
||||
} ;
|
||||
param
|
||||
Number = Sg | Pl ;
|
||||
Person = P1 | P2 | P3 ;
|
||||
}
|
||||
Reference in New Issue
Block a user