2.2 KiB
2.2 KiB
Step 3: parser-foundation
Sprint Contract
Objective
Implement the Abaqus input lexical/keyword parser foundation plus Factory + Registry plumbing for Phase 1 objects.
Required Reading
- /AGENTS.md
- /PROGRESS.md
- /PLAN.md
- /docs/README.md
- /docs/HARNESS_ENGINEERING.md
- /docs/ARCHITECTURE.md
- /docs/ADR.md
- /docs/ABAQUS_INPUT_SUBSET.md
- /phases/1-linear-static-mitc4/step2.md
Scope
- Tokenize Abaqus keyword lines, parameters, data lines, comments, continuations if documented, and source locations.
- Add a parser result shape that returns Domain data or diagnostics.
- Add keyword Factory + Registry structure without completing every Phase 1 keyword.
- Add smoke parsing for a tiny supported subset such as
*Nodeand*Element, TYPE=S4.
Allowed Files
include/**src/**tests/**PLAN.mdPROGRESS.mdphases/1-linear-static-mitc4/index.json
Explicit Non-Goals
- Do not complete all Phase 1 Abaqus keywords in this step.
- Do not silently accept unsupported keywords or unknown parameters.
- Do not parse
quad_01.inpas a supported Phase 1 case.
Tests To Write First
- Lexer tests for keyword names, parameters, comments, blank lines, and source locations.
- Registry tests for supported and unsupported keyword dispatch.
- Parser smoke tests for minimal nodes and S4 elements.
Reference Artifacts
- None. Existing
references/quad_01.inpis not a Phase 1 parser acceptance case.
Acceptance Commands
python scripts/validate_workspace.py
Evaluator Checklist
- Unsupported input produces diagnostics with line context.
- Factory + Registry is present and parser logic is not hardwired into Domain constructors.
- Parser tests do not expand Phase 1 support beyond
docs/ABAQUS_INPUT_SUBSET.md.
Handoff Requirements
- Record progress and validation in
PROGRESS.md. - Update
PLAN.mdif parser-scope risks change. - Update the matching phase index entry: use
completedwith a one-linesummary, orblockedwithblocked_reason, orerrorwitherror_message.
Verification
- Run the acceptance command.
- Inspect parser tests for line-numbered diagnostic coverage.
Do Not
- Do not normalize away Abaqus labels that later diagnostics or references need.