How kartikjograna/sih26148 works
JOCKY is a command-line compiler for a forensic programming language. A user supplies a source file; the CLI reads it, tokenizes and parses it, checks semantics, generates LLVM-backed object code, and links an executable. The language model includes forensic probes and platform-specific functions. The CLI also offers optional hash reporting, while the source labels polymorphic obfuscation as a TODO. Relationships below follow the shown CLI and module references; unsampled implementation details are not inferred.
Main entry points: main.rs CLI driver · parser.rs Parser · mod.rs LLVM code generator · ast.rs Program AST
Components 13
Language Frontend
- Lexer
compiler/src/lexer/scanner.rs - Token types
compiler/src/lexer/token.rs - Parser
compiler/src/parser/parser.rs - Program AST
compiler/src/parser/ast.rs
Semantic Analysis
- Semantic analyzer
compiler/src/sema/mod.rs
Code Generation
- LLVM code generator
compiler/src/codegen/mod.rs
Compiler CLI
- CLI driver
compiler/src/main.rs - SHA-256 digest
compiler/src/main.rs
Other components
- Compiler user
- JOCKY source
- Object file
- System linker
- Executable
Connections 17
- Compiler user → CLI driver: invokes
compiler/src/main.rs - JOCKY source → CLI driver: read by
compiler/src/main.rs - CLI driver → Lexer: tokenizes with
compiler/src/main.rs - Lexer → Token types: produces
compiler/src/lexer/scanner.rs - CLI driver → Parser: parses with
compiler/src/main.rs - Parser → Token types: consumes
compiler/src/parser/parser.rs - Parser → Program AST: builds
compiler/src/parser/parser.rs - CLI driver → Semantic analyzer: analyzes with
compiler/src/main.rs - Semantic analyzer → Program AST: checks
compiler/src/sema/mod.rs - CLI driver → LLVM code generator: generates from
compiler/src/main.rs - LLVM code generator → Program AST: consumes
compiler/src/codegen/mod.rs - LLVM code generator → Object file: emits
compiler/src/codegen/mod.rs - CLI driver → System linker: links with
compiler/src/main.rs - System linker → Executable: produces
- CLI driver → Object file: passes to linker
compiler/src/main.rs - CLI driver → Executable: hashes optionally
compiler/src/main.rs - CLI driver → SHA-256 digest: computes
compiler/src/main.rs