From 77ecefafbb8cafd4546a7eae1880d65c002abe70 Mon Sep 17 00:00:00 2001 From: aarne Date: Mon, 8 Dec 2014 10:18:57 +0000 Subject: [PATCH] more coverage of Chunk grammar, including a general fallback rule Symb_Chunk --- lib/src/chunk/Chunk.gf | 6 +++++- lib/src/chunk/ChunkCat.gf | 4 +++- lib/src/chunk/ChunkEng.gf | 12 ++++++++++-- lib/src/chunk/ChunkFre.gf | 4 +++- lib/src/chunk/ChunkFunctor.gf | 4 +++- lib/src/chunk/ChunkIta.gf | 4 +++- lib/src/chunk/ChunkSpa.gf | 3 ++- 7 files changed, 29 insertions(+), 8 deletions(-) diff --git a/lib/src/chunk/Chunk.gf b/lib/src/chunk/Chunk.gf index 2f6828308..c50ee5b7e 100644 --- a/lib/src/chunk/Chunk.gf +++ b/lib/src/chunk/Chunk.gf @@ -1,4 +1,4 @@ -abstract Chunk = Cat, Extensions [VPS,VPI] ** { +abstract Chunk = Cat, Symbol [Symb], Extensions [VPS,VPI] ** { cat Chunks ; @@ -27,6 +27,7 @@ fun CN_Pl_Gen_Chunk : CN -> Chunk ; CN_Sg_Gen_Chunk : CN -> Chunk ; Conj_Chunk : Conj -> Chunk ; + Det_Chunk : Det -> Chunk ; -- needed if article form is different from NP form, e.g. English a/an IAdv_Chunk : IAdv -> Chunk ; IP_Chunk : IP -> Chunk ; NP_Nom_Chunk : NP -> Chunk ; @@ -63,6 +64,9 @@ fun UseVC : Temp -> Pol -> VC -> VPS ; +-- for unknown words that are not names + + Symb_Chunk : Symb -> Chunk ; -- syncategorematic chunks refl_SgP1_Chunk, diff --git a/lib/src/chunk/ChunkCat.gf b/lib/src/chunk/ChunkCat.gf index b6d06041d..527011a90 100644 --- a/lib/src/chunk/ChunkCat.gf +++ b/lib/src/chunk/ChunkCat.gf @@ -1,11 +1,13 @@ concrete ChunkCat of Chunk = CatCat, ExtensionsCat [VPS,VPI] ** - ChunkFunctor - [SSlash_Chunk] + ChunkFunctor - [AP_Chunk, SSlash_Chunk] with (Syntax = SyntaxCat), (Extensions = ExtensionsCat) ** open SyntaxCat, (E = ExtensionsCat), Prelude, ResCat, CommonRomance, (P = ParadigmsCat) in { lin + AP_Chunk ap = {s = ap.s ! AF (Masc | Fem) (Sg | Pl)} ; + SSlash_Chunk s = mkUtt ; lin diff --git a/lib/src/chunk/ChunkEng.gf b/lib/src/chunk/ChunkEng.gf index 64cf33ce4..d11bb9205 100644 --- a/lib/src/chunk/ChunkEng.gf +++ b/lib/src/chunk/ChunkEng.gf @@ -1,10 +1,18 @@ -concrete ChunkEng of Chunk = CatEng, ExtensionsEng [VPS,VPI] ** - ChunkFunctor with (Syntax = SyntaxEng), (Extensions = ExtensionsEng) ** +concrete ChunkEng of Chunk = CatEng, SymbolEng [Symb], ExtensionsEng [VPS,VPI] ** + ChunkFunctor - [Det_Chunk] + with (Syntax = SyntaxEng), (Extensions = ExtensionsEng) ** open SyntaxEng, (E = ExtensionsEng), Prelude, (R = ResEng), (P = ParadigmsEng) in { lin + Det_Chunk det = lin Utt { + s = case det.n of { + R.Sg => det.s ; + R.Pl => det.sp ! R.NCase R.Nom + } + } ; + NP_Acc_Chunk np = ss (np.s ! R.NPAcc) ; NP_Gen_Chunk np = ss (np.s ! R.NCase R.Gen) | ss (np.s ! R.NPNomPoss) ; diff --git a/lib/src/chunk/ChunkFre.gf b/lib/src/chunk/ChunkFre.gf index 9bf6e4d6b..6ace1243c 100644 --- a/lib/src/chunk/ChunkFre.gf +++ b/lib/src/chunk/ChunkFre.gf @@ -1,11 +1,13 @@ concrete ChunkFre of Chunk = CatFre, ExtensionsFre [VPS,VPI] ** - ChunkFunctor - [SSlash_Chunk] + ChunkFunctor - [AP_Chunk, SSlash_Chunk] with (Syntax = SyntaxFre), (Extensions = ExtensionsFre) ** open SyntaxFre, (E = ExtensionsFre), Prelude, ResFre, PhonoFre, CommonRomance, (P = ParadigmsFre) in { lin + AP_Chunk ap = {s = ap.s ! AF (Masc | Fem) (Sg | Pl)} ; + SSlash_Chunk s = mkUtt ; lin diff --git a/lib/src/chunk/ChunkFunctor.gf b/lib/src/chunk/ChunkFunctor.gf index 395785a5f..726806dbb 100644 --- a/lib/src/chunk/ChunkFunctor.gf +++ b/lib/src/chunk/ChunkFunctor.gf @@ -1,4 +1,4 @@ -incomplete concrete ChunkFunctor of Chunk = Cat, Extensions [VPS,VPI] ** +incomplete concrete ChunkFunctor of Chunk = Cat, Symbol [Symb], Extensions [VPS,VPI] ** open Syntax, Extensions, Prelude in { @@ -29,6 +29,7 @@ lin ---- CN_Pl_Gen_Chunk cn = ss (cn.s ! Pl ! Gen) ; ---- CN_Sg_Gen_Chunk cn = ss (cn.s ! Sg ! Gen) ; Conj_Chunk conj = ss conj.s2 ; ---- + Det_Chunk det = mkUtt (Syntax.mkNP det) ; IAdv_Chunk iadv = iadv ; IP_Chunk ip = mkUtt ip ; NP_Nom_Chunk np = mkUtt np ; @@ -64,6 +65,7 @@ lin UseVC t p vc = E.MkVPS t p (mkVP vc) ; + Symb_Chunk s = lin Utt s ; fullstop_Chunk = ss "." ; exclmark_Chunk = ss "!" ; diff --git a/lib/src/chunk/ChunkIta.gf b/lib/src/chunk/ChunkIta.gf index 5ac9d7feb..66814868a 100644 --- a/lib/src/chunk/ChunkIta.gf +++ b/lib/src/chunk/ChunkIta.gf @@ -1,11 +1,13 @@ concrete ChunkIta of Chunk = CatIta, ExtensionsIta [VPS,VPI] ** - ChunkFunctor - [SSlash_Chunk] + ChunkFunctor - [AP_Chunk, SSlash_Chunk] with (Syntax = SyntaxIta), (Extensions = ExtensionsIta) ** open SyntaxIta, (E = ExtensionsIta), Prelude, ResIta, CommonRomance, (P = ParadigmsIta) in { lin + AP_Chunk ap = {s = ap.s ! AF (Masc | Fem) (Sg | Pl)} ; + SSlash_Chunk s = mkUtt ; lin diff --git a/lib/src/chunk/ChunkSpa.gf b/lib/src/chunk/ChunkSpa.gf index 6ee58e069..319acd4ca 100644 --- a/lib/src/chunk/ChunkSpa.gf +++ b/lib/src/chunk/ChunkSpa.gf @@ -1,11 +1,12 @@ concrete ChunkSpa of Chunk = CatSpa, ExtensionsSpa [VPS,VPI] ** - ChunkFunctor - [SSlash_Chunk] + ChunkFunctor - [AP_Chunk, SSlash_Chunk] with (Syntax = SyntaxSpa), (Extensions = ExtensionsSpa) ** open SyntaxSpa, (E = ExtensionsSpa), Prelude, ResSpa, CommonRomance, (P = ParadigmsSpa) in { lin + AP_Chunk ap = {s = ap.s ! AF (Masc | Fem) (Sg | Pl)} ; SSlash_Chunk s = mkUtt ; lin