keymanapp / keymanapp/keyman

feat(developer): Next Generation KMN Compiler 🤔

Open
#13,349 1 comment 0 reactions 1 assignee Claimed by @markcsinclair View on GitHub
developer/ developer/compilers/ epic-ng-compiler feat m:kmn
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.