How ayazxdev/compiler works
Luna is a custom scripting language whose source is compiled to Gravity bytecode and run by a quota-limited VM. The main workflow is a script passed to the CLI, which delegates compilation and execution to the VM; a separate sandbox service accepts execution requests and captures output. The README also documents an AST tree-walking interpreter as a differential oracle. The VM excerpt shows its compilation dependencies, but does not expose the complete interpret sequence; arrows below reflect only the orchestration and data flow supported by the available code and documentation.
Main entry points: VM.cpp Gravity VM · Parser.cpp Pratt parser · Compiler.cpp Bytecode compiler · SandboxService.cpp Sandbox service
Components 17
Entry points
- Luna CLI
src/main.cpp
Luna frontend
- Lexer
src/lexer/Lexer.cpp - Token definitions
src/lexer/Token.hpp - Pratt parser
src/parser/Parser.cpp - Luna AST
src/ast/AST.hpp - AST arena
src/memory/Arena.hpp - Scope resolver
src/resolver/Resolver.cpp - Operator precedence
src/gravity/Gravity.cpp
Bytecode runtime
- Bytecode compiler
src/compiler/Compiler.cpp - Bytecode chunk
src/compiler/Chunk.hpp - Opcode set
src/compiler/Opcode.hpp - Gravity VM
src/vm/VM.cpp - Runtime values
src/vm/Value.cpp
Sandbox service
- Sandbox service
src/service/SandboxService.cpp
Reference interpreter
- Tree-walking oracle
src/interpreter/TreeWalker.cpp
Other components
- Script user
- Sandbox client
Connections 19
- Script user → Luna CLI: provides script
- Luna CLI → Gravity VM: interprets source
- Sandbox client → Sandbox service: submits request
- Sandbox service → Gravity VM: executes code
- Sandbox service → Sandbox client: returns response
- Gravity VM → Lexer: uses frontend
- Pratt parser → Lexer: scans tokens
- Pratt parser → Luna AST: builds nodes
- Pratt parser → AST arena: allocates nodes
- Pratt parser → Operator precedence: uses precedence
- Lexer → Token definitions: emits tokens
- Gravity VM → Pratt parser: parses source
- Gravity VM → Scope resolver: resolves scopes
- Gravity VM → Bytecode compiler: compiles program
- Bytecode compiler → Bytecode chunk: emits bytecode
- Bytecode compiler → Opcode set: emits instructions
- Gravity VM → Bytecode chunk: dispatches bytecode
- Gravity VM → Runtime values: evaluates values
- Tree-walking oracle → Runtime values: uses runtime values