feat(developer): Next Generation KMN Compiler 🤔
- Dominant language
- Pascal
- Stars
- 534
- Forks
- 143
- Avg merge
- 2d 10h
- Merged PRs (30d)
- 113
Description
Develop a next generation KMN compiler in Typescript
- should be backward compatible with the existing compiler(s)
- should use lexer-analyser-AST-semantic model approach
- should provide Keyman language LSP [#9370](https://github.com/keymanapp/keyman/issues/9370)
- if possible, should share a common semantic model (in-memory model) with `kmc-convert`
Main Tasks:
- [x] Lexer (positive path i.e. no error messages; no backward compatability)
- [ ] Parser (Syntax Analyser) (positive path i.e. no error messages; no backward compatability)
- [ ] Semantic Model Builder (AST -> in-memory model) (positive path i.e. no error messages; no backward compatability)
- [ ] Working across full keyboard repository
- [ ] Add error messages (no backward compatability)
- [ ] Integrate with the `kmc-kmn` codebase
- [ ] Keyman language LSP[This is a stretch goal that will be tackled later]
- [x] Backward compatibility
Design Document
[Next Generation KMN Compiler](https://docs.google.com/document/d/19MqA2rhTX5ibY8NuYqviKfH-R39-MIRisTRWRGaOoFE/edit?tab=t.0#heading=h.m0tbta4qzj0r)
Linked PRs:
- Lexer [#13350](https://github.com/keymanapp/keyman/pull/13350)
- TokenBuffer [#15240](https://github.com/keymanapp/keyman/pull/15240)
- Parser Foundation [#15309](https://github.com/keymanapp/keyman/pull/15309)
- Parser [#13492](https://github.com/keymanapp/keyman/pull/13492)
Linked Issues:
- bug(developer): &TARGETS store is too sensitive to whitespace [#13721](https://github.com/keymanapp/keyman/issues/13721)
- docs(developer): document the internal kmc module interface design patterns [#13672](https://github.com/keymanapp/keyman/issues/13672)
- feat(developer): Allow having nul in a store & still output nul with context [#13471](https://github.com/keymanapp/keyman/issues/13471)
- feat(developer): Compiler needs to error on compile targets for &VERSION >= 19.0 [#13431](https://github.com/keymanapp/keyman/issues/13431)
- chore(developer): remove support for compile targets [#12688](https://github.com/keymanapp/keyman/issues/12688)
- refactor(developer): remove support for downlevel Keyman versions [#11956](https://github.com/keymanapp/keyman/issues/11956)
- feat(developer): write a formal grammar for .kmn [#11821](https://github.com/keymanapp/keyman/issues/11821)
- docs(developer): document compiler messages in more detail [#10887](https://github.com/keymanapp/keyman/issues/10887)
Future language additions: see #13761
Implemented in `epic/ng-compiler` [#13553](https://github.com/keymanapp/keyman/pull/13553)
Contributor guide
Assessment
This issue has not been assessed yet.