1
0
forked from GitHub/gf-core

Add more unit tests for missing lin functions

This commit is contained in:
John J. Camilleri
2021-08-10 11:32:51 +02:00
parent 42bdee1e5f
commit b96fa7e08a
5 changed files with 156 additions and 18 deletions

View File

@@ -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

View File

@@ -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 ;
}

View File

@@ -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

View File

@@ -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)

View File

@@ -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 } ;
}