57
README.md
Normal file
57
README.md
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
# clox — Crafting Interpreters (clox, C)
|
||||||
|
|
||||||
|
A tiny bytecode VM + compiler for the Lox language, built while following *Crafting Interpreters*. This is a personal learning project.
|
||||||
|
**Status:** up through Chapter 14 (“Chunks of Bytecode”).
|
||||||
|
|
||||||
|
## Build
|
||||||
|
|
||||||
|
Requires a C99 compiler (tested with `clang` on macOS). Uses the provided Makefile.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Build the executable to bin/clox
|
||||||
|
make
|
||||||
|
|
||||||
|
# Clean build artifacts
|
||||||
|
make clean
|
||||||
|
|
||||||
|
# Show discovered sources/objects (diagnostic)
|
||||||
|
make debug
|
||||||
|
|
||||||
|
# (Optional) regenerate compile_commands.json for clangd/etc.
|
||||||
|
make bear
|
||||||
|
```
|
||||||
|
|
||||||
|
## Run (current behavior)
|
||||||
|
|
||||||
|
The current `main` builds a tiny test chunk and disassembles it—there’s no REPL or script runner yet.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
./bin/clox
|
||||||
|
```
|
||||||
|
|
||||||
|
Example output:
|
||||||
|
|
||||||
|
```
|
||||||
|
== test chunk ==
|
||||||
|
0000 123 OP_CONSTANT 0 '1.2'
|
||||||
|
0002 | OP_RETURN
|
||||||
|
```
|
||||||
|
|
||||||
|
## Layout
|
||||||
|
|
||||||
|
```
|
||||||
|
include/ # headers
|
||||||
|
src/ # .c files (chunk, value, memory, debug, main)
|
||||||
|
obj/ # build objects (generated)
|
||||||
|
bin/ # executable output (generated)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
- Tracks the book’s **clox** implementation; commits may follow chapters.
|
||||||
|
- `compile_commands.json` can be generated via `make bear` for editor tooling.
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
Private / for learning.
|
||||||
|
|
||||||
Reference in New Issue
Block a user