mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-10-29 10:23:18 -06:00
polish: complete the RGL enough to build an application grammar
Adding Polish to informath (grammars/next) exposed a set of gaps. Unlike
Czech, StructuralPol was already complete; what was missing was a handful
of lins, a way to govern the nominative, and some outright mistakes.
Missing lins, all reached as qualified Grammar.X by the application's
functors and so not shimmable from the application side:
AdjectivePol AdvAP
SentencePol SSubjS
IdiomPol ImpP3
StructuralPol that_Subj
MarkupPol new module (Markup is not part of the RGL build script,
so it is compiled on demand, as MarkupCze is)
ParadigmsPol mkAdv (every other ParadigmsX has it; the application
interfaces reach it as Paradigms.mkAdv)
ImpP3 has no third-person imperative to use, so it takes the standard
"niech" periphrasis. The copula takes the future ("niech x będzie grupą")
and every other verb the present ("niech x należy do A"): być is the only
Polish verb with a synthetic future, and imienne marks exactly the copular
VPs.
NomPrep: ComplCase had no nominative at all, so "jako", "niż" and
"zdefiniowany jako" -- all of which govern the nominative -- came out
locative ("mniejszy niż liczbie"). mkCompl now maps Nom to a new NomPrep,
and the dep tables of the pronouns, nounPN, mkPN and the structural NPs
cover it. LexiconNounPol is marked DO NOT EDIT, but paris_PN and john_PN
inline their own dep tables and so had to be extended too.
Two corrections:
VerbPol.CompCN used the nominative for a predicative noun, giving
"x jest grupa"; Polish uses the instrumental, as CompNP right below it
already does.
ExtendPol.ExistsNP inherited ExistNP from ExtendFunctor, giving
"jest macierz". Polish distinguishes the two: "there exists" is istnieć,
which is what mathematical prose uses.
ParadigmsPol.guess_paradigm_basic never matched -ość, the productive
feminine abstract suffix, so sprzeczność took a masculine declension
(*sprzeczności/a, *sprzecznościowi) despite being tagged feminine. It now
routes to the kość paradigm.
Also documents, without changing, why the 2-string mkN throws its genitive
away: guess_paradigm's 2-string table is unsound (its first branch matches
every noun in -a, and its branches disagree about whether mkNTable* takes
the nominative or the bare stem), so passing sggen to it turns
"liczba"/"liczby" into *liczbaa. The 1-string guesser is the sound path
until that table is repaired.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
11f73acc28
commit
8c4cd58bd1
13 files changed
+108
-12
No files matched your search
@@ -60,6 +60,7 @@ oper
|
||||
nom = "wszyscy" ;
|
||||
voc = "wszyscy" ;
|
||||
dep = table {
|
||||
NomPrep => "wszyscy";
|
||||
(GenNoPrep|GenPrep) => "wszystkich";
|
||||
(DatNoPrep|DatPrep) => "wszystkim";
|
||||
(AccNoPrep|AccPrep) => "wszystkich";
|
||||
@@ -74,6 +75,7 @@ oper
|
||||
nom = "wszystko" ;
|
||||
voc = "wszystko" ;
|
||||
dep = table {
|
||||
NomPrep => "wszystko";
|
||||
(GenNoPrep|GenPrep) => "wszystkiego";
|
||||
(DatNoPrep|DatPrep) => "wszystkiemu";
|
||||
(AccNoPrep|AccPrep) => "wszystko";
|
||||
@@ -88,6 +90,7 @@ oper
|
||||
nom = "ktoś" ;
|
||||
voc = "ktosiu" ;
|
||||
dep = table {
|
||||
NomPrep => "ktoś";
|
||||
(GenNoPrep|GenPrep) => "kogoś";
|
||||
(DatNoPrep|DatPrep) => "komuś";
|
||||
(AccNoPrep|AccPrep) => "kogoś";
|
||||
@@ -102,6 +105,7 @@ oper
|
||||
nom = "coś" ;
|
||||
voc = "coś" ;
|
||||
dep = table {
|
||||
NomPrep => "coś";
|
||||
(GenNoPrep|GenPrep) => "czegoś";
|
||||
(DatNoPrep|DatPrep) => "czemuś";
|
||||
(AccNoPrep|AccPrep) => "coś";
|
||||
@@ -117,6 +121,7 @@ oper
|
||||
nom = "kto" ;
|
||||
voc = "kto" ;
|
||||
dep = table {
|
||||
NomPrep => "kto";
|
||||
(GenNoPrep|GenPrep) => "kogo";
|
||||
(DatNoPrep|DatPrep) => "komu";
|
||||
(AccNoPrep|AccPrep) => "kogo";
|
||||
@@ -131,6 +136,7 @@ oper
|
||||
nom = "co" ;
|
||||
voc = "co" ;
|
||||
dep = table {
|
||||
NomPrep => "co";
|
||||
(GenNoPrep|GenPrep) => "czego";
|
||||
(DatNoPrep|DatPrep) => "czemu";
|
||||
(AccNoPrep|AccPrep) => "co";
|
||||
@@ -216,6 +222,7 @@ oper
|
||||
oper niktNP : NounPhrase =
|
||||
{ voc,nom="nikt";
|
||||
dep = table {
|
||||
NomPrep => "nikt";
|
||||
(GenNoPrep|GenPrep) => "nikogo";
|
||||
(DatNoPrep|DatPrep) => "nikomu";
|
||||
(AccNoPrep|AccPrep) => "nikogo";
|
||||
@@ -230,6 +237,7 @@ oper
|
||||
oper nicNP : NounPhrase =
|
||||
{ voc,nom="nic";
|
||||
dep = table {
|
||||
NomPrep => "nic";
|
||||
(GenNoPrep|GenPrep) => "niczego";
|
||||
(DatNoPrep|DatPrep) => "niczemu";
|
||||
(AccNoPrep|AccPrep) => "nic";
|
||||
|
||||
Reference in new issue
Block a user