forked from GitHub/gf-core
Add more unit tests for missing lin functions
This commit is contained in:
@@ -13,6 +13,10 @@ Phrasebook doesn't compile with RGL after 1131058b68c204a8d1312d2e2a610748eb8032
|
|||||||
|
|
||||||
### Running
|
### 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 build --work-dir .stack-work-test --test --no-run-tests
|
||||||
stack test --work-dir .stack-work-test gf:test:lpgf # all LPGF 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"
|
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
|
## Benchmark
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,12 @@
|
|||||||
abstract Missing = {
|
abstract Missing = {
|
||||||
cat S; NP; V2;
|
cat S; Det; N; NP; V2; -- A;
|
||||||
fun
|
fun
|
||||||
Pred: NP -> V2 -> NP -> S;
|
Pred: NP -> V2 -> NP -> S;
|
||||||
John, Dogs, Fish: NP ;
|
ASg, {- APl, TheSg, -} ThePl : Det ;
|
||||||
|
Dog, Fish: N ;
|
||||||
Love, Eat: V2 ;
|
Love, Eat: V2 ;
|
||||||
|
-- Big, Red: A ;
|
||||||
|
|
||||||
|
mkNP : Det -> N -> NP ;
|
||||||
|
-- mkANP : Det -> A -> N -> NP ;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,96 @@
|
|||||||
Missing: Pred John Love Fish
|
Missing: Pred (mkNP ASg Dog) Eat (mkNP ASg Dog)
|
||||||
MissingCnc: John loves fish a lot
|
MissingCnc: a dog [Eat] a dog [Eat]
|
||||||
|
|
||||||
Missing: Pred John Eat Fish
|
Missing: Pred (mkNP ASg Dog) Eat (mkNP ASg Fish)
|
||||||
MissingCnc: John [Eat] fish [Eat]
|
MissingCnc: a dog [Eat] a [Fish] [Eat]
|
||||||
|
|
||||||
Missing: Pred Fish Love Dogs
|
Missing: Pred (mkNP ASg Dog) Eat (mkNP ThePl Dog)
|
||||||
MissingCnc: fish love [Dogs] a lot
|
MissingCnc: a dog [Eat] [ThePl] dog [Eat]
|
||||||
|
|
||||||
Missing: Pred Dogs Eat Fish
|
Missing: Pred (mkNP ASg Dog) Eat (mkNP ThePl Fish)
|
||||||
MissingCnc: [Dogs] [Eat] fish [Eat]
|
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
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,32 @@
|
|||||||
Pred John Love Fish
|
Pred (mkNP ASg Dog) Eat (mkNP ASg Dog)
|
||||||
Pred John Eat Fish
|
Pred (mkNP ASg Dog) Eat (mkNP ASg Fish)
|
||||||
Pred Fish Love Dogs
|
Pred (mkNP ASg Dog) Eat (mkNP ThePl Dog)
|
||||||
Pred Dogs Eat Fish
|
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)
|
||||||
|
|||||||
@@ -1,13 +1,22 @@
|
|||||||
concrete MissingCnc of Missing = open Prelude, ParamX in {
|
concrete MissingCnc of Missing = open Prelude, ParamX in {
|
||||||
lincat
|
lincat
|
||||||
S = SS ;
|
S = SS ;
|
||||||
|
Det = { s : Str ; n : Number } ;
|
||||||
|
N = { s : Number => Str } ;
|
||||||
NP = { s : Str ; n : Number } ;
|
NP = { s : Str ; n : Number } ;
|
||||||
V2 = { s : Number => Str; s2 : Str } ;
|
V2 = { s : Number => Str; s2 : Str } ;
|
||||||
|
-- A = { s : Number => Str } ;
|
||||||
lin
|
lin
|
||||||
Pred subj verb obj = ss (subj.s ++ verb.s ! subj.n ++ obj.s ++ verb.s2) ;
|
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 } ;
|
ASg = { s = "a" ; n = Sg } ;
|
||||||
Fish = { s = "fish" ; n = Pl } ;
|
-- 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 = {
|
Love = {
|
||||||
s = table {
|
s = table {
|
||||||
Sg => "loves" ;
|
Sg => "loves" ;
|
||||||
@@ -22,4 +31,10 @@ concrete MissingCnc of Missing = open Prelude, ParamX in {
|
|||||||
-- } ;
|
-- } ;
|
||||||
-- s2 = "often"
|
-- 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 } ;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user