oto is an experimental compiler and runtime study project written in C.
The project is being developed incrementally as a way to study how source code becomes execution: from lexing and parsing to ASTs, bytecode, virtual machines, and runtime systems.
The .oto language does not aim to be production-ready or revolutionary. It exists primarily as a vehicle for exploring compiler and runtime engineering concepts from scratch.
The implementation and language design are expected to evolve over time as the project grows.
The current stage of the project does not focus on compilation yet.
Instead, the initial goal is to build the frontend of the language and understand the earliest stages of execution through a tree-walk interpreter architecture.
Current pipeline:
source file
↓
lexer
↓
tokens
↓
parser
↓
AST
↓
interpreterCurrent goals:
- Read
.otosource files - Implement lexical analysis
- Generate tokens
- Parse expressions and statements
- Build an Abstract Syntax Tree (AST)
- Execute AST nodes using a tree-walk interpreter
- Understand how source code becomes executable structures
As the project evolves, the interpreter-based architecture is expected to grow into a bytecode compiler and virtual machine system.
Future pipeline:
source file
↓
lexer
↓
tokens
↓
parser
↓
AST
↓
compiler
↓
bytecode
↓
virtual machineLong-term areas of study include:
- Bytecode compilation
- Virtual machines
- Runtime systems
- Stack frames
- Scope handling
- Runtime object representation
- Heap allocation
- Garbage collection experiments
- Memory management
The project is currently in its earliest stage.
Initial work is focused on:
- Project structure
- Compiler architecture planning
- Language grammar planning
- Token system design
- Lexer implementation