Open dobijan opened 6 years ago
And you defined the flag diacritic symbols (inc. the @'s) in Multichar_Symbols
? The tags, e.g. [/Adj]
should be defined there as well.
Multichar_Symbols *{1}* *{2}* *[/Supl]* *[_Comp/Adj][Nom]* *[/Adj]* *[Acc]* *[Pl]* *[/N]* @U.HARM.FRONT@ @U.HARM.BACK@ @P.SUPERLATIVE.YES@ @P.SUPERLATIVE.NO@ @R.SUPERLATIVE.YES@ @R.SUPERLATIVE.NO@
I first tried with asterisks, as the rest, but then errors were thrown, so i tried removing them, and it worked, at least for vowel harmony. They are all in one line, in case you wonder. The first two are only my tracing tags.
The issue is subtle: flag diacritics are special in many ways, and one of these is that they must appear on both the upper and lower sides. This is something I forgot to mention in the slides; I'll fix it ASAP.
Thank you! I even thought about that, but I rejected it at once, since that would be dumb :D Turns out I should have rewritten the rules that way...
This question is somewhat related to #9 . I traced the rules with dummy tags. I realized that flag diacritics are to blame for the two derivations. I'm not sure how that's possible, but both branches of an 'if-else' are being traversed. I have a flag, which signals whether the adjective is superlative (has a (leges*)leg tag). Later down the lexicon chain I test for this flag and depending on this test I either place a -bb prefix for sure, or I place it only optionally. Now, both these branches are traversed, and on both branches the bb prefix can be derived, so I have two derivations. How can this be? Once I set a flag, its value should be determined and only one R test can succeed, or am I completely misunderstanding flag diacritics?
Please consider this partial grammar:
I decide early on whether an adjective is in superlative form and I set the flag with P:
LEXICON Root @P.SUPERLATIVE.YES@ Exaggerative ; @P.SUPERLATIVE.NO@ Adj ;
Then, later on I test for this, when I derive the -bb postfix:
LEXICON AdjectiveTag @R.SUPERLATIVE.YES@[/Adj]:0 Superlative ; ! RULE 1 @R.SUPERLATIVE.NO@[/Adj]:0 SuperlativeConditional ; ! RULE 2
Now, since I traced rule application I am absolutely sure that RULE 1 and RULE 2 are the two forks. Also, i traced the rules under Root, and the branch which sets SUPERLATIVE to NO never runs. So the Require Superlative disregards the value of the SUPERLATIVE flag somehow. What am I doing wrong?