Acorn
common
: Common types and utilities across multiple unrelated dependencieslexer
: Standalone lexer for Acornsyntax
: Standalone syntax tree implementation with language specific syntax elements-
- Depends
lexer
- Depends
ast
: Abstract syntax tree on top of the syntax tree built by the parser- Depends
syntax
- Depends
hir
: High level intermediate representation, no longer maintains a full source code representation.- Depends
ast
- Depends
vm
: Virtual machine which executes HIR directly.- Depends
hir
- Depends
interpreter
: (todo) Tree walking interpreter based on HIR- Depends
hir
- Depends
cli
: (todo) General purpose command line interface.- Depends
vm
for launching vm - Probably depends on parse, ast, hir, etc for pretty error rendering? Or maybe common has an interface for error rendering and this implements that.
- Depends
Tooling
intellij
: Intellij plugin for Acornlsp
: (maybe) LSP implementation for Acornvscode
: (maybe) VSCode plugin for Acorn
Bootstrapping
examples
: will contain example Acorn programs- Eventually there will be some Acorn sources for standard library and the bootstrapped compiler.
Scratch spot:
- Currently have a syntax problem. A void return type is an empty tuple, but typing
fn() ()
is extremely weird. Need to either introduce a:
after param list, or figure somethign else out.