Skip to content

Parser follow-ups from the multi-spelling / choices / argfile rounds #102

Description

@sadigaxund

One tracking issue for the measured-but-unshipped leftovers of #95#101. Each item has a repro and a reason it did not ship; none is a regression.

1. Alias-run fold needs a real discriminator

Adjacent single-spelling rows with identical description, value and at most one long-like name still fabricate merges: as -w/-X (both "Ignored."), lto-dump -C/-CC (both "[disabled]", ×505 in one document), sysctl, mkfs.bfs, llvm-size-18. Repeat-count of the shared description does not separate these from genuine runs (ffplay -h/-?/-help/--help, -loglevel/-v, ffmpeg -c/-codec) — several genuine aliases sit at the same count as the fabrications. Withdrawn from #97; only the evidence-anchored value recovery shipped. Needs an axis other than description equality.

2. Choices-block ownership beyond literal matches

#99 attaches a heading's choices only when the heading literally names the flag or contains its value_name as a word. Morphological variants stay unproven and render as before: automake's "Warning categories include:" belongs to -W, --warnings=CATEGORY ("categories" ≠ CATEGORY); cp/install/ln/mv's backup-control block. A stem/plural rule needs a fleet measurement of its false-positive cost before it can be admitted.

3. List rows naming independent options

ld's ten-name row and socat-mux's -b|-S|-t|-T|-l read as one multi-spelling entity because the row's own grammar says alias list; the tool means "any of these". No shape-level evidence distinguishes them from -h|--help. Accepted as a faithful reading; a fix needs evidence outside the row.

4. Wrapped-prose row boundary

zgrep, resolvconf, jpackage: a description that wraps onto a line starting with a dash-led word is read as the next row. Pre-existing; the C3 whitespace-continuation rules in #97 do not reach it.

5. Smaller items

  • ffplay --help (11k lines) parses in ~3.3s in debug builds, over the corpus runner's 100ms advisory ceiling; non-failing.
  • The corpus [contract] schema has no field asserting a flag's description text, so argfile rows become real flags: @<file> renders, searches, and copies (closes #93) #100's --target/--output description recovery is guarded only by the snapshot.
  • is_value_spec_token accepts an all-uppercase prose word (--flag NOTE this does X) as a value name; documented in its tests, unobserved in the fleet.
  • as-style =WORD placeholder-word choices (--foo=FILE|DIR) are still read as choices, not as alternative placeholders.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions