diff --git a/testsuite/lpgf/README.md b/testsuite/lpgf/README.md index 3e60f631d..bbef9d5f1 100644 --- a/testsuite/lpgf/README.md +++ b/testsuite/lpgf/README.md @@ -13,6 +13,10 @@ Phrasebook doesn't compile with RGL after 1131058b68c204a8d1312d2e2a610748eb8032 ### Running +Because Stack insists on rebuilding things all the time, I use separate `.stack-work` folders for testing and benchmarking. + +Assumes treebank in same folder with same abstract name as grammar, e.g. `unittests/Params.treebank` + ``` stack build --work-dir .stack-work-test --test --no-run-tests stack test --work-dir .stack-work-test gf:test:lpgf # all LPGF tests @@ -21,7 +25,9 @@ stack test --work-dir .stack-work-test gf:test:lpgf --test-arguments="foods/Foo stack test --work-dir .stack-work-test gf:test:lpgf --test-arguments="phrasebook/Phrasebook" ``` -Set environment variable `DEBUG=1` to enable dumping of intermediate formats. +Set environment variable `DEBUG=1` to enable dumping of intermediate formats into `DEBUG/` folder. + +--- ## Benchmark diff --git a/testsuite/lpgf/unittests/Missing.gf b/testsuite/lpgf/unittests/Missing.gf index 940645058..d7b796dbd 100644 --- a/testsuite/lpgf/unittests/Missing.gf +++ b/testsuite/lpgf/unittests/Missing.gf @@ -1,7 +1,12 @@ abstract Missing = { - cat S; NP; V2; + cat S; Det; N; NP; V2; -- A; fun Pred: NP -> V2 -> NP -> S; - John, Dogs, Fish: NP ; + ASg, {- APl, TheSg, -} ThePl : Det ; + Dog, Fish: N ; Love, Eat: V2 ; + -- Big, Red: A ; + + mkNP : Det -> N -> NP ; + -- mkANP : Det -> A -> N -> NP ; } diff --git a/testsuite/lpgf/unittests/Missing.treebank b/testsuite/lpgf/unittests/Missing.treebank index dfcf7e18a..28c5c1c03 100644 --- a/testsuite/lpgf/unittests/Missing.treebank +++ b/testsuite/lpgf/unittests/Missing.treebank @@ -1,12 +1,96 @@ -Missing: Pred John Love Fish -MissingCnc: John loves fish a lot +Missing: Pred (mkNP ASg Dog) Eat (mkNP ASg Dog) +MissingCnc: a dog [Eat] a dog [Eat] -Missing: Pred John Eat Fish -MissingCnc: John [Eat] fish [Eat] +Missing: Pred (mkNP ASg Dog) Eat (mkNP ASg Fish) +MissingCnc: a dog [Eat] a [Fish] [Eat] -Missing: Pred Fish Love Dogs -MissingCnc: fish love [Dogs] a lot +Missing: Pred (mkNP ASg Dog) Eat (mkNP ThePl Dog) +MissingCnc: a dog [Eat] [ThePl] dog [Eat] -Missing: Pred Dogs Eat Fish -MissingCnc: [Dogs] [Eat] fish [Eat] +Missing: Pred (mkNP ASg Dog) Eat (mkNP ThePl Fish) +MissingCnc: a dog [Eat] [ThePl] [Fish] [Eat] + +Missing: Pred (mkNP ASg Dog) Love (mkNP ASg Dog) +MissingCnc: a dog loves a dog a lot + +Missing: Pred (mkNP ASg Dog) Love (mkNP ASg Fish) +MissingCnc: a dog loves a [Fish] a lot + +Missing: Pred (mkNP ASg Dog) Love (mkNP ThePl Dog) +MissingCnc: a dog loves [ThePl] dog a lot + +Missing: Pred (mkNP ASg Dog) Love (mkNP ThePl Fish) +MissingCnc: a dog loves [ThePl] [Fish] a lot + +Missing: Pred (mkNP ASg Fish) Eat (mkNP ASg Dog) +MissingCnc: a [Fish] [Eat] a dog [Eat] + +Missing: Pred (mkNP ASg Fish) Eat (mkNP ASg Fish) +MissingCnc: a [Fish] [Eat] a [Fish] [Eat] + +Missing: Pred (mkNP ASg Fish) Eat (mkNP ThePl Dog) +MissingCnc: a [Fish] [Eat] [ThePl] dog [Eat] + +Missing: Pred (mkNP ASg Fish) Eat (mkNP ThePl Fish) +MissingCnc: a [Fish] [Eat] [ThePl] [Fish] [Eat] + +Missing: Pred (mkNP ASg Fish) Love (mkNP ASg Dog) +MissingCnc: a [Fish] loves a dog a lot + +Missing: Pred (mkNP ASg Fish) Love (mkNP ASg Fish) +MissingCnc: a [Fish] loves a [Fish] a lot + +Missing: Pred (mkNP ASg Fish) Love (mkNP ThePl Dog) +MissingCnc: a [Fish] loves [ThePl] dog a lot + +Missing: Pred (mkNP ASg Fish) Love (mkNP ThePl Fish) +MissingCnc: a [Fish] loves [ThePl] [Fish] a lot + +Missing: Pred (mkNP ThePl Dog) Eat (mkNP ASg Dog) +MissingCnc: [ThePl] dog [Eat] a dog [Eat] + +Missing: Pred (mkNP ThePl Dog) Eat (mkNP ASg Fish) +MissingCnc: [ThePl] dog [Eat] a [Fish] [Eat] + +Missing: Pred (mkNP ThePl Dog) Eat (mkNP ThePl Dog) +MissingCnc: [ThePl] dog [Eat] [ThePl] dog [Eat] + +Missing: Pred (mkNP ThePl Dog) Eat (mkNP ThePl Fish) +MissingCnc: [ThePl] dog [Eat] [ThePl] [Fish] [Eat] + +Missing: Pred (mkNP ThePl Dog) Love (mkNP ASg Dog) +MissingCnc: [ThePl] dog loves a dog a lot + +Missing: Pred (mkNP ThePl Dog) Love (mkNP ASg Fish) +MissingCnc: [ThePl] dog loves a [Fish] a lot + +Missing: Pred (mkNP ThePl Dog) Love (mkNP ThePl Dog) +MissingCnc: [ThePl] dog loves [ThePl] dog a lot + +Missing: Pred (mkNP ThePl Dog) Love (mkNP ThePl Fish) +MissingCnc: [ThePl] dog loves [ThePl] [Fish] a lot + +Missing: Pred (mkNP ThePl Fish) Eat (mkNP ASg Dog) +MissingCnc: [ThePl] [Fish] [Eat] a dog [Eat] + +Missing: Pred (mkNP ThePl Fish) Eat (mkNP ASg Fish) +MissingCnc: [ThePl] [Fish] [Eat] a [Fish] [Eat] + +Missing: Pred (mkNP ThePl Fish) Eat (mkNP ThePl Dog) +MissingCnc: [ThePl] [Fish] [Eat] [ThePl] dog [Eat] + +Missing: Pred (mkNP ThePl Fish) Eat (mkNP ThePl Fish) +MissingCnc: [ThePl] [Fish] [Eat] [ThePl] [Fish] [Eat] + +Missing: Pred (mkNP ThePl Fish) Love (mkNP ASg Dog) +MissingCnc: [ThePl] [Fish] loves a dog a lot + +Missing: Pred (mkNP ThePl Fish) Love (mkNP ASg Fish) +MissingCnc: [ThePl] [Fish] loves a [Fish] a lot + +Missing: Pred (mkNP ThePl Fish) Love (mkNP ThePl Dog) +MissingCnc: [ThePl] [Fish] loves [ThePl] dog a lot + +Missing: Pred (mkNP ThePl Fish) Love (mkNP ThePl Fish) +MissingCnc: [ThePl] [Fish] loves [ThePl] [Fish] a lot diff --git a/testsuite/lpgf/unittests/Missing.trees b/testsuite/lpgf/unittests/Missing.trees index 5e68cf3ec..cd0898715 100644 --- a/testsuite/lpgf/unittests/Missing.trees +++ b/testsuite/lpgf/unittests/Missing.trees @@ -1,4 +1,32 @@ -Pred John Love Fish -Pred John Eat Fish -Pred Fish Love Dogs -Pred Dogs Eat Fish +Pred (mkNP ASg Dog) Eat (mkNP ASg Dog) +Pred (mkNP ASg Dog) Eat (mkNP ASg Fish) +Pred (mkNP ASg Dog) Eat (mkNP ThePl Dog) +Pred (mkNP ASg Dog) Eat (mkNP ThePl Fish) +Pred (mkNP ASg Dog) Love (mkNP ASg Dog) +Pred (mkNP ASg Dog) Love (mkNP ASg Fish) +Pred (mkNP ASg Dog) Love (mkNP ThePl Dog) +Pred (mkNP ASg Dog) Love (mkNP ThePl Fish) +Pred (mkNP ASg Fish) Eat (mkNP ASg Dog) +Pred (mkNP ASg Fish) Eat (mkNP ASg Fish) +Pred (mkNP ASg Fish) Eat (mkNP ThePl Dog) +Pred (mkNP ASg Fish) Eat (mkNP ThePl Fish) +Pred (mkNP ASg Fish) Love (mkNP ASg Dog) +Pred (mkNP ASg Fish) Love (mkNP ASg Fish) +Pred (mkNP ASg Fish) Love (mkNP ThePl Dog) +Pred (mkNP ASg Fish) Love (mkNP ThePl Fish) +Pred (mkNP ThePl Dog) Eat (mkNP ASg Dog) +Pred (mkNP ThePl Dog) Eat (mkNP ASg Fish) +Pred (mkNP ThePl Dog) Eat (mkNP ThePl Dog) +Pred (mkNP ThePl Dog) Eat (mkNP ThePl Fish) +Pred (mkNP ThePl Dog) Love (mkNP ASg Dog) +Pred (mkNP ThePl Dog) Love (mkNP ASg Fish) +Pred (mkNP ThePl Dog) Love (mkNP ThePl Dog) +Pred (mkNP ThePl Dog) Love (mkNP ThePl Fish) +Pred (mkNP ThePl Fish) Eat (mkNP ASg Dog) +Pred (mkNP ThePl Fish) Eat (mkNP ASg Fish) +Pred (mkNP ThePl Fish) Eat (mkNP ThePl Dog) +Pred (mkNP ThePl Fish) Eat (mkNP ThePl Fish) +Pred (mkNP ThePl Fish) Love (mkNP ASg Dog) +Pred (mkNP ThePl Fish) Love (mkNP ASg Fish) +Pred (mkNP ThePl Fish) Love (mkNP ThePl Dog) +Pred (mkNP ThePl Fish) Love (mkNP ThePl Fish) diff --git a/testsuite/lpgf/unittests/MissingCnc.gf b/testsuite/lpgf/unittests/MissingCnc.gf index 678727083..320f0c673 100644 --- a/testsuite/lpgf/unittests/MissingCnc.gf +++ b/testsuite/lpgf/unittests/MissingCnc.gf @@ -1,13 +1,22 @@ concrete MissingCnc of Missing = open Prelude, ParamX in { lincat S = SS ; + Det = { s : Str ; n : Number } ; + N = { s : Number => Str } ; NP = { s : Str ; n : Number } ; V2 = { s : Number => Str; s2 : Str } ; + -- A = { s : Number => Str } ; lin Pred subj verb obj = ss (subj.s ++ verb.s ! subj.n ++ obj.s ++ verb.s2) ; - John = { s = "John" ; n = Sg } ; - -- Dogs = { s = "dogs" ; n = Pl } ; - Fish = { s = "fish" ; n = Pl } ; + + ASg = { s = "a" ; n = Sg } ; + -- APl = { s = "" ; n = Pl } ; + -- TheSg = { s = "the" ; n = Sg } ; + -- ThePl = { s = "the" ; n = Pl } ; + + Dog = { s = table { Sg => "dog" ; Pl => "dogs" } } ; + -- Fish = { s = \\_ => "fish" } ; + Love = { s = table { Sg => "loves" ; @@ -22,4 +31,10 @@ concrete MissingCnc of Missing = open Prelude, ParamX in { -- } ; -- s2 = "often" -- } ; + + -- Big = { s = \\_ => "big" } ; + -- Red = { s = \\_ => "red" } ; + + mkNP d n = { s = d.s ++ n.s ! d.n ; n = d.n } ; + -- mkANP d a n = { s = d.s ++ a.s ! d.n ++ n.s ! d.n ; n = d.n } ; }