mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-20 18:29:33 -06:00
Nonlinear patterns in concrete syntax are now detected and reported as errors
Before, they were silently converted to linear patterns. Nonlinear patterns in MorphoCat.gf, ParadigmsGre.gf and ParadigmsFin.gf have been make linear by renaming pattern variables.
This commit is contained in:
@@ -236,7 +236,7 @@ oper
|
||||
mkAdj2Reg : Str -> Str -> Adj = \petit,petita ->
|
||||
case <petit,petita> of {
|
||||
<_, _ + ("b"|"c"|"d"|"e"|"f"|"g"|"h"|"i"|"j"|"k"|"l"|"m"|"n"|"o"|"p"|"q"|"r"|"s"|"t"|"u"|"v"|"x"|"y"|"z")> => adjFidel petit ; --feminine doesn't end in "a"
|
||||
<p@(_ + ("t"|"l"|"ç")), p+"a"> => adjPrim petit ; --1) petit~petita 2) ridícul~ridícula, dolç~dolça
|
||||
<p@(_ + ("t"|"l"|"ç")), p2+"a"> => adjPrim petit ; --1) petit~petita 2) ridícul~ridícula, dolç~dolça -- was nonlinear
|
||||
<_ + "ig", _> => adjIg petit petita ; --lleig~letja
|
||||
<_, _+ "na"> => adjVn petit ; --pla~plana
|
||||
<_, _ + ("à"|"é"|"è"|"í"|"ó"|"ò"|"ú") + _> => adjBlau petit petita ; --diari~diària
|
||||
|
||||
@@ -522,9 +522,9 @@ mkVS = overload {
|
||||
dSilakka ukko ukon ukkoja ; -- auto,auton
|
||||
<_ + "mpi", _ + ("emman" | "emmän")> => dSuurempi ukko ;
|
||||
<_ + "in", _ + ("imman" | "immän")> => dSuurin ukko ;
|
||||
<terv + "e", terv + "een"> =>
|
||||
<terv + "e", terv2 + "een"> => -- was nonlinear
|
||||
dRae ukko ukon ;
|
||||
<taiv + ("as" | "äs"), taiv + ("aan" | "ään")> =>
|
||||
<taiv + ("as" | "äs"), taiv2 + ("aan" | "ään")> => -- was nonlinear
|
||||
dRae ukko ukon ;
|
||||
<nukk + "e", nuk + "een"> => dRae ukko ukon ;
|
||||
<arp + "i", arv + "en"> => dArpi ukko ukon ;
|
||||
|
||||
@@ -42,14 +42,15 @@ oper
|
||||
|
||||
mkNending : Str -> Str -> Gender -> N = \x,n,g ->
|
||||
case <x,n> of {
|
||||
<c + "ος", c + "ων"> => mkNoun_anthropos x n g ;
|
||||
<c + "η", c + "εις"> => mkNoun_kivernisi x n g ;
|
||||
<c + "ης", c + "ηδες"> => mkNoun_fournaris x n g ;
|
||||
<c + "ας", c + "ων"> => mkNoun_filakas x n g ;
|
||||
<c + "ο", c + "ων"> => mkNoun_prosopo x n g ;
|
||||
<c + ("ώς" | "ός" | "ως" ) , c + ("ος"|"ός" ) > => mkNoun_fws x n g ;
|
||||
<c + ("μα" | "ιμο" ), c + "ατα"> => mkNoun_provlima x n g ;
|
||||
<c + "ος", c + "η"> => mkNoun_megethos x n g
|
||||
-- all of these were nonlinear
|
||||
<c + "ος", c2 + "ων"> => mkNoun_anthropos x n g ;
|
||||
<c + "η", c2 + "εις"> => mkNoun_kivernisi x n g ;
|
||||
<c + "ης", c2 + "ηδες"> => mkNoun_fournaris x n g ;
|
||||
<c + "ας", c2 + "ων"> => mkNoun_filakas x n g ;
|
||||
<c + "ο", c2 + "ων"> => mkNoun_prosopo x n g ;
|
||||
<c + ("ώς" | "ός" | "ως" ) , c2 + ("ος"|"ός" ) > => mkNoun_fws x n g ;
|
||||
<c + ("μα" | "ιμο" ), c2 + "ατα"> => mkNoun_provlima x n g ;
|
||||
<c + "ος", c2 + "η"> => mkNoun_megethos x n g
|
||||
} ** {lock_N = <>} ;
|
||||
|
||||
|
||||
@@ -128,9 +129,9 @@ oper
|
||||
|
||||
mkA1 : Str -> Str -> A = \x,n ->
|
||||
case <x,n> of {
|
||||
<c + "ης", c + "ες"> => mkAdjective4 x n ;
|
||||
<c + "ων", c + "όντων"> => mkAdjective3 x n ;
|
||||
<c + "ύς", c + "έως"> => mkAdjectiveIr x n
|
||||
<c + "ης", c2 + "ες"> => mkAdjective4 x n ; -- was nonlinear
|
||||
<c + "ων", c2 + "όντων"> => mkAdjective3 x n ; -- was nonlinear
|
||||
<c + "ύς", c2 + "έως"> => mkAdjectiveIr x n -- was nonlinear
|
||||
} ** {lock_A = <>} ;
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user