-
Notifications
You must be signed in to change notification settings - Fork 0
Closed
Labels
P0Priority 0 - CriticalPriority 0 - Criticalbreaking-changeBreaking API changeBreaking API changecoreCore system componentCore system componentparserIDL parserIDL parser
Milestone
Description
Consolidate and Complete IDL Parser
Priority
P0 (Critical) - Blocks all downstream development
Labels
coreparserbreaking-changeP0
Estimated Effort
2 weeks
Description
The codebase currently has three different parser implementations (pest, lalrpop, chumsky) for the .ids schema files. This creates maintenance overhead and the LALRPOP generated code conflicts with strict linting.
We need to:
- Benchmark all three approaches
- Choose the best one for production
- Complete the chosen parser
- Remove the alternatives
Current State
Location: core/src/schema/idl/parser/
Three parser implementations exist:
pest/- Pest grammar-based parserlalrpop/- LALR parser generatorcstree/- Concrete syntax tree approach
TODO References
lib.rs:1- LALRPOP clashes withdeny(rust_2018_idioms)parser/cstree/mod.rs:24,30- Incomplete implementationsparser/pest/parser.rs:344- TODO placeholder
Acceptance Criteria
- Only one parser implementation remains in
core/src/schema/idl/parser/ - All example
.idsfiles parse successfully - Parser has comprehensive error messages using
ariadne - All grammar rules from documentation are implemented
- Parser benchmarks show acceptable performance (<100ms for typical schemas)
- No TODO items remain in parser code
Tasks
- Create benchmark suite comparing all three parsers
- Document decision rationale in ADR (Architecture Decision Record)
- Complete chosen parser implementation
- Remove deprecated parsers
- Update imports throughout codebase
- Add parser tests for all schema features (struct, enum, protocol, etc.)
- Update documentation with parser architecture
Dependencies
None - this is a foundational task
Blocks
- CLI Tool Implementation #2 (CAS System)
- Consolidate and Complete IDL Parser #3 (IR Compilation)
- All other development work
Metadata
Metadata
Assignees
Labels
P0Priority 0 - CriticalPriority 0 - Criticalbreaking-changeBreaking API changeBreaking API changecoreCore system componentCore system componentparserIDL parserIDL parser
Type
Projects
Status
Done