Skip to content

Commit 4c79ed0

Browse files
committed
Fix bantu-verbal G5 second-sweep grammar bugs
The session that added the mprRRealTest MorphologicalPhonologicalRuleFeature appended it after the FeatureGroup elements, violating the DTD's element ordering and crashing the loader. Reordered it before the groups. Also, snG5's StemName Region carried an AssignedHeadFeatures constraint (featTense=symPres) that nothing in the daleh/daheh derivation ever assigns, so RootAllomorph's StemName.IsRequiredMatch check failed root selection before the intended SynthesisAffixProcessRule.RequiredStemName check could even run. Dropped the head-feature constraint so the region only requires posV7, restoring the intended failure/success split (daleh parses, daheh does not). Self-check 15/15, coverage 24/24 in-scope constructs, HC tests 67/67, csharpier clean.
1 parent e522da4 commit 4c79ed0

3 files changed

Lines changed: 19 additions & 5 deletions

File tree

conformance/coverage.csv

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,12 @@ Velamba,dabepez,DAB+NUMPL+AGR|dabepez,Syntactic feature agreement (RequiredHeadF
118118
Velamba,dabez,DAB+AGR|dabez,Syntactic feature agreement (RequiredHeadFeatures/OutputHeadFeatures/RequiredFootFeatures/OutputFootFeatures)
119119
Velamba,kes,KES|kes,Syntactic feature agreement (RequiredHeadFeatures/OutputHeadFeatures/RequiredFootFeatures/OutputFootFeatures)
120120
Velamba,kesez,,Syntactic feature agreement (RequiredHeadFeatures/OutputHeadFeatures/RequiredFootFeatures/OutputFootFeatures)
121+
Velamba,siliz,SIL+RECURSUF|siliz,Ordinary/realizational rule constraints (MaxApplicationCount/RequiredStemName/Blockable)
122+
Velamba,siliziz,,Ordinary/realizational rule constraints (MaxApplicationCount/RequiredStemName/Blockable)
123+
Velamba,daleh,DAL+STEMREQ|daleh,Ordinary/realizational rule constraints (MaxApplicationCount/RequiredStemName/Blockable)
124+
Velamba,daheh,,Ordinary/realizational rule constraints (MaxApplicationCount/RequiredStemName/Blockable)
125+
Velamba,zimed,,Ordinary/realizational rule constraints (MaxApplicationCount/RequiredStemName/Blockable)
126+
Velamba,zamed,,Ordinary/realizational rule constraints (MaxApplicationCount/RequiredStemName/Blockable)
121127
Vetruna,mun,STEM|mun,Stem names
122128
Vetruna,muno,,Stem names
123129
Vetruna,muns,,Stem names

conformance/languages/bantu-verbal/grammar.xml

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -112,24 +112,29 @@
112112
<MorphologicalPhonologicalRuleFeature id="mprConcB">ConcB</MorphologicalPhonologicalRuleFeature>
113113
<MorphologicalPhonologicalRuleFeature id="mprConcC">ConcC</MorphologicalPhonologicalRuleFeature>
114114
<MorphologicalPhonologicalRuleFeature id="mprConcD">ConcD</MorphologicalPhonologicalRuleFeature>
115-
<MorphologicalPhonologicalRuleFeatureGroup isActive="yes" matchType="any" outputType="overwrite" features="mprExtA mprExtB"><Name>ExtGroup</Name></MorphologicalPhonologicalRuleFeatureGroup>
116-
<MorphologicalPhonologicalRuleFeatureGroup isActive="yes" matchType="all" outputType="overwrite" features="mprConcA mprConcB"><Name>AllConc</Name></MorphologicalPhonologicalRuleFeatureGroup>
117-
<MorphologicalPhonologicalRuleFeatureGroup isActive="yes" matchType="any" outputType="overwrite" features="mprConcC mprConcD"><Name>AnyConc</Name></MorphologicalPhonologicalRuleFeatureGroup>
118115
<!-- G5 (code-coverage-driven, second sweep): gates mrRRealTest below (SynthesisRealizationalAffixProcessRule),
119116
a hard set-membership check so that rule can never spuriously apply to any pre-existing
120117
word (RequiredHeadFeatures/RealizationalFeatures unify vacuously against a feature no
121118
other entry ever sets, per the mrAgr/dabez finding above, but requiredMPRFeatures is a
122119
genuine set-membership gate, not unification). -->
123120
<MorphologicalPhonologicalRuleFeature id="mprRRealTest">RRealTest</MorphologicalPhonologicalRuleFeature>
121+
<MorphologicalPhonologicalRuleFeatureGroup isActive="yes" matchType="any" outputType="overwrite" features="mprExtA mprExtB"><Name>ExtGroup</Name></MorphologicalPhonologicalRuleFeatureGroup>
122+
<MorphologicalPhonologicalRuleFeatureGroup isActive="yes" matchType="all" outputType="overwrite" features="mprConcA mprConcB"><Name>AllConc</Name></MorphologicalPhonologicalRuleFeatureGroup>
123+
<MorphologicalPhonologicalRuleFeatureGroup isActive="yes" matchType="any" outputType="overwrite" features="mprConcC mprConcD"><Name>AnyConc</Name></MorphologicalPhonologicalRuleFeatureGroup>
124124
</MorphologicalPhonologicalRuleFeatures>
125125
<!-- G5 (code-coverage-driven, second sweep): snG5 gates mrStemReq below
126126
(SynthesisAffixProcessRule.RequiredStemName), previously zero coverage for the FAILURE case
127-
(a candidate root without the required stem name). -->
127+
(a candidate root without the required stem name). Region carries no AssignedHeadFeatures:
128+
RootAllomorph.CheckAllomorphConstraints (StemName.IsRequiredMatch) unifies the region against
129+
the word's SyntacticFeatureStruct at root-selection time, and posV7 alone (already on the
130+
region via partsOfSpeech) is all we want to require; adding a tense feature there would gate
131+
root selection itself on a feature nothing in this derivation ever assigns, masking the
132+
RequiredStemName rule-level check (SynthesisAffixProcessRule) this fixture actually targets. -->
128133
<StemNames>
129134
<StemName id="snG5" partsOfSpeech="posV7">
130135
<Name>G5Stem</Name>
131136
<Regions>
132-
<Region><AssignedHeadFeatures><FeatureValue feature="featTense" symbolValues="symPres" /></AssignedHeadFeatures></Region>
137+
<Region></Region>
133138
</Regions>
134139
</StemName>
135140
</StemNames>

conformance/rules.csv

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,13 @@ Velamba,mrExtX,xkib;yxkib;xkibz
5454
Velamba,mrExtY,yxkib
5555
Velamba,mrFV,andika;andikisha;andikila;andikishila;andikilisha
5656
Velamba,mrNumPl,dabep;dabepez
57+
Velamba,mrRecurSuf,siliz;!siliziz
5758
Velamba,mrRedup,kimbiakimbia
59+
Velamba,mrStemReq,daleh;!daheh
5860
Velamba,mrTense,limape
5961
Velamba,prNasalMutation,mba;!mpa
6062
Velamba,rrPast,limaile;!limapeile
63+
Velamba,rrRRealTest,!zimed;!zamed
6164
Vetruna,mrAblaut,sang
6265
Vetruna,mrCircumfixGeT,gelobt;gelobth
6366
Vetruna,mrCompoundConstrained,mitlav;ficlav;!seclav;!genlav;!mitlavlav

0 commit comments

Comments
 (0)