How pyrotek45/nova-lang works
Nova is a statically typed language toolchain and runtime: users run or check source through one CLI, which delegates language processing to NovaCore and executes compiled bytecode on a stack VM. The documented workflow also includes REPL, debugging, disassembly, and GitHub-based dependency operations. The graph preserves those product branches and the built-in native/game capabilities. Pipeline links are based on the documented behavior and sampled imports; unsampled module internals limit certainty about finer-grained dispatch.
Main entry points: main.rs CLI commands · src/lib.rs NovaCore · src/lib.rs Parser · src/lib.rs Stack VM
Components 17
Language Front End
- Lexer
lexer/src/lib.rs - Parser
parser/src/lib.rs - Type checker
typechecker/src/lib.rs - Language data
common/src/lib.rs
Compilation
- Bytecode compiler
compiler/src/lib.rs - Optimizer
optimizer/src/lib.rs - Assembler
assembler/src/lib.rs
User Tools
- CLI commands
novacli/src/main.rs - Disassembler
disassembler/src/lib.rs - Debugger
debugger/src/lib.rs
Native Capabilities
- Native functions
native/src/lib.rs - Raylib bindings
native/src/raylib.rs
Other components
- Nova user
- GitHub
Connections 18
- Nova user → CLI commands: runs commands
- CLI commands → NovaCore: invokes processing
- NovaCore → Lexer: tokenizes source
- Lexer → Parser: provides tokens
- Parser → Type checker: checks program
- Type checker → Bytecode compiler: provides checked program
- Bytecode compiler → Optimizer: provides bytecode
- Optimizer → Assembler: provides instructions
- Assembler → NovaCore: returns bytecode
- NovaCore → Stack VM: runs bytecode
- Stack VM → VM memory: manages values
- NovaCore → Native functions: registers built-ins
- Native functions → Raylib bindings: exposes game APIs
- CLI commands → GitHub: fetches imports
- Parser → GitHub: fetches imported source
- CLI commands → Disassembler: disassembles output
- CLI commands → Debugger: starts debug run
- Debugger → Stack VM: inspects execution