Aether is a personal learning project focused on applied compiler design, built incrementally in C.
The goal of this project is to understand how a compiler is constructed from first principles by actually building one, step by step, rather than relying on abstractions or frameworks.
At the moment, the project is intentionally minimal and exploratory.
- Single source file:
main.c - Basic lexer implementation
- Reads a
.aesource file - Tokenizes simple constructs (keywords, numbers, symbols)
- Prints tokens for inspection and debugging
There is no parser, AST, or code generation yet.
Input (test.ae):
exit(100);Current lexer output:
EXIT
OPEN_PAREN
NUMBER(100)
CLOSE_PAREN
SEMICOLON
This output is meant purely for learning and verification while developing the lexer.
- Lexical analysis
- Parsing and AST construction
- Arithmetic expressions
- Assembly code generation
- Variables and scopes
- Stack management
- Control flow (
if,while) - Console output
- Compiling simple programs
This project exists to:
- Learn how real compilers work internally
- Practice systems programming in C
- Build intuition around lexing, parsing, and code generation
- Gain hands-on experience before moving to more advanced compiler work
There are no ambitions yet beyond learning and experimentation.
🚧 Work in progress
The code is expected to be rewritten, refactored, and broken frequently as understanding improves.