mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-09 04:59:31 -06:00
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
|
||||
|
||||
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
|
||||
|
||||
|
||||
@@ -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 ;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 } ;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user