Loki is an experimental programming language that I am building both to learn more about compilers and test ideas about language design.
graph TD
A[Tokenize] -->|Produces Token Stream| B[Parser]
B --> |Produces AST| C[Semantic Analyzer]
C -->|Produces AST| D[IR Gen]
D --> |IR| X[Semantic Analysis again]
X --> |Produces IR| E[Target Code Generator]
E --> |Target Project| F[Target Toolchain]
Loki tries to give same experience on all supported platforms but it's not always possible, so in the standard library and any other loki code there can be checks(comptime if) so if a certain code cannot be compiled against target compiler just removes it and if you use a code which can not be used in your target compiler will emit an error.
Loki has a direct interface to it's host programming languages so you can call directly to their libraries and apis. Both standard library and third party ones
Loki has it's own build tool which is a wrapper and generator for it's target build tools. It will generate necessary files and set necessary env values from your loki.yml file.
author: "amirrezaask"
name: "sample loki project"
deps:
loki:
- github.com/a1/lib1
go:
- github.com/lib/pq
Async webserver implemented in both Zig and Rust
My world in code
Simple, Customizable start screen for Neovim
Simple statusline for neovim, all in lua, all the time :)
define same behaviour across different file types.
Made luv.spawn easy :))
Fuzzy matching for Neovim
Another lisp that compiles to lua