fix(parser): split "and he/she <verb>" gendered-pronoun compound continuations#5446
Merged
matthewevans merged 2 commits intoJul 9, 2026
Conversation
Contributor
|
Warning Gemini encountered an error creating the review. You can try again by commenting |
Parse changes introduced by this PR · 1 card(s), 3 signature(s) (baseline: main
|
…inuations
A bare gendered pronoun ("he"/"she") used as an Oracle-text subject refers to
the card itself (CR 109.3 + CR 201.4b). In a compound effect chain the clause-
boundary splitter (`starts_bare_and_clause_lower`) recognized the singular
anaphor "it <verb>" as a subject-predicate clause start but omitted the
gendered pronouns, so a conjunct like Machine Man, Model X-51's "... put a
+1/+1 counter on ~ and he gains flying until end of turn" fell through to the
imperative-only path and failed closed to `Effect::Unimplemented { name: "he" }`.
Add a composed `("he"|"she") × (gains|gets|has|loses|doesn't|can't|cannot)`
arm mirroring the singular "it" verb set (not the plural "they" arm, which
excludes P/T "get"). The split routes the conjunct through the subject-predicate
parser, where `parse_subject_application` already maps "he"/"she" to `SelfRef`.
Machine Man now parses to PutCounter(self) + a sub_ability granting Flying
(SelfRef, until end of turn). Full-corpus parser-gap sweep shows zero
regressions (3977 unsupported cards unchanged).
davion-knight
force-pushed
the
fix/gendered-pronoun-compound-continuation
branch
from
July 9, 2026 15:29
55c9ee3 to
5834b01
Compare
matthewevans
approved these changes
Jul 9, 2026
matthewevans
left a comment
Member
There was a problem hiding this comment.
Reviewed current head 5834b01: the parser split is at the existing subject-predicate boundary seam, composes the pronoun and verb axes, keeps negative guards for non-continuous clauses, and the current parse-diff is limited to Machine Man gaining the intended Flying grant while removing the stale duration from the counter effect.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #5445.
Problem
A bare gendered pronoun ("he"/"she") used as an Oracle-text subject refers to the card itself (CR 109.3 + CR 201.4b). In a compound effect chain the clause-boundary splitter (
starts_bare_and_clause_lower) recognized the singular anaphorit <verb>as a subject-predicate clause start but omitted the gendered pronouns, so a conjunct like Machine Man, Model X-51'sfell through to the imperative-only path and failed closed to
Effect::Unimplemented { name: "he" }. (The... and it gains flying ...form and the standalonehe gains flyingboth already parse correctly.)Fix
Add a composed
("he"|"she") × (gains|gets|has|loses|doesn't|can't|cannot)arm mirroring the singularitverb set — not the pluraltheyarm, which excludes P/Tgetfor its conditional-rider path. The split routes the conjunct through the subject-predicate parser, whereparse_subject_applicationalready maps "he"/"she" toSelfRef. Pronoun × verb are composed rather than enumerated per permutation (per the parser's combinator conventions).Parser-only: no new engine type, variant, or runtime — the grant reuses the existing
SelfRefcontinuous-modification path.Verification
he gains flyingconjunct goes fromUnimplemented { name: "he" }→sub_abilitygrantingAddKeyword(Flying)onSelfRef,UntilEndOfTurn— matching theit-form parse.she gains,he gets +1/+1,he loses …variants likewise resolve.and he/she <verb>boundaries, which previously always producedUnimplemented, so it cannot alter a currently-working parse.bare_and_clause_starts_on_gendered_pronoun_subjectsnext to the existingit/theyboundary tests (positive verb-axis coverage + negative guards for non-continuous tails).cargo check -p engine+cargo fmtclean.