The Yoakke Compiler Infrastructure
Language- and Compiler development tools in .NET.
What is Yoakke?
Yoakke is a collection of libraries aimed at compiler- and language developers to help them in their development. Most common tasks - like lexing and parsing - are completely automated, but extensibility is kept in mind at every step. All components let you roll your custom solution, but are capable enough to fit most cases by default.
Status warning
Yoakke is still early in development. You can play around with the libraries, but there may be bugs or missing features. Please open an issue if you find a bug, or miss an important feature. All contributions are welcome!
If you want to try out the latest features, there are nightly releases on NuGet!
A note for Visual Studio users
If you are experiencing build issues when using Visual Studio around Source Generators, please try enabling the option described here.
What components are there?
The most usable component is probably the syntax toolkit, called SynKit. There are many more components planned, see the next section for the roadmap.
Library roadmap
This is a list of the libraries that are planned for implementation, along with their status:
- SynKit (π): A syntax toolkit to cover most syntax needs
- Lexer (π)
- Parser (π)
- Error reporting (π)
- Language Server Protocol (π)
- Custom IR and VM (π)
- Native backends (π)
- C front-end (π§)
Legend
- Done: β
- Consider mostly done: π
- Work in progress: π§
- Planned: π
Documentation
Documentation is very much work-in-progress, but you can always find the latest version in the Documentation folder. Feel free to open up Pull-Requests, if you see mistakes!
Developer documentation
Make sure to read our contributing document! Some developer documents about describing the projects is - hopefully - coming soon aswell.
Examples
Work in progress...
Sample projects
Work in progress...
Using Yoakke Badge
If you use Yoakke and would be willing to show it, here is a badge you can copy-paste into your readme:
<a href="https://github.com/LanguageDev/Yoakke" alt="Using Yoakke"><img src="https://raw.githubusercontent.com/LanguageDev/Yoakke/master/.github/resources/UsingYoakke.svg" title="Using Yoakke" alt="Using Yoakke"/></a>
Contributors β¨
Thanks goes to these wonderful people (emoji key):
LPeter1997 |
WhiteBlackGoose |
Zachary Patten |
Neko |
Sang |
lucyelle |
PΓ©ter FΓ³nad |
Andrii Kurdiumov |
Friedrich von Never |
Chris |
Sam Harwell |
Cole Tobin |
Ikko Ashimine |
This project follows the all-contributors specification. Contributions of any kind welcome!