You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
/// <para>Two kinds of correction, because the defects differ in kind:</para>
38
+
/// <para><see cref="Entries" /> — a rule whose name does not match the metaclass it builds and which
39
+
/// omits the explicit target the grammar normally writes in that case
40
+
/// (<c>RequirementKind : RequirementConstraintMembership</c>). Without it the rule name resolves to no
41
+
/// metaclass, and the generator falls back to inferring one from the assigned property names, silently
42
+
/// selecting an unrelated class that happens to declare the same property.</para>
43
+
/// <para><see cref="ProductionEntries" /> — a production whose token sequence cannot derive notation the
44
+
/// metamodel and the specification's own normative examples require. Applied to the grammar TEXT before
45
+
/// it is parsed, so the corrected production flows through the normal pipeline and nothing downstream
46
+
/// needs to special-case the rule.</para>
47
+
/// <para>Scope is deliberately narrow, and the bar for both kinds is the same: the generator would
48
+
/// otherwise produce output that is WRONG, not merely different. A production that admits more than one
49
+
/// valid spelling is NOT an erratum — choosing between admissible spellings is the writer's business.
50
+
/// The reference test is whether the pilot's Xtext grammar accepts what we emit: where it does, any
51
+
/// difference is a style choice; where it cannot, the grammar is genuinely deficient.</para>
47
52
/// <para>These corrections are expected to become unnecessary as OMG publishes fixes. On a new KEBNF
48
53
/// release, run the generator and prune whatever <see cref="QueryUnappliedErrata" /> reports — an entry
49
54
/// that no longer matches has been fixed upstream.</para>
@@ -59,6 +64,34 @@ public static class GrammarErrata
59
64
"KerML 8.2.2.24 writes 'LiteralReal = value = RealValue' with no target, but no metaclass named 'LiteralReal' exists — KerML 8.3.4.9 names it 'LiteralRational'. Its sibling literal rules (LiteralBoolean, LiteralString, LiteralInteger, LiteralInfinity) all match a metaclass by name, so only this one is left unresolved.")
60
65
];
61
66
67
+
/// <summary>
68
+
/// The production-text corrections applied to the grammar before it is parsed.
69
+
/// </summary>
70
+
/// <remarks>
71
+
/// An entry belongs here only when the grammar cannot derive the notation at all. A production that
72
+
/// merely admits a spelling we do not emit is NOT an erratum — see the class remarks.
0 commit comments