JVMud is an experimental LPMUD platform for the JVM. This repository is a
monorepo: the LPC compiler lives under compiler/, a basic LPC mudlib lives
under mudlib/, and future runtime/server work will live under runtime/.
| Path | Purpose |
|---|---|
compiler/ |
JVMud compiler Java source. It currently contains the LPC scanner, preprocessor, parser, semantic analysis, IR, bytecode compiler, efun interfaces, and host-facing runtime loader classes. |
runtime/ |
Placeholder for JVMud runtime/server code that will host compiled LPC objects and provide game-engine services. |
mudlib/ |
Basic LPC mudlib content. It currently includes reusable objects under obj/ and rooms/world content under room/. |
docs/ |
Static project site published from simple HTML. |
The compiler source is present at:
compiler/src/main/java/io/github/protasm/jvmud/compiler/
The compiler is now under the JVMud umbrella package,
io.github.protasm.jvmud.compiler.
Important compiler packages include:
preproc: include resolution, macro expansion, conditional directives, and source mapping.scannerandtoken: lexical analysis and token model.parser: Pratt parser, parselets, AST nodes, and LPC type/operator models.semanticandir: semantic analysis, type checking, and typed intermediate representation.bytecode: JVM bytecode generation using ASM.efun,runtime, andexec: efun contracts, generated-code helpers, class loading, and host-facing runtime APIs.pipeline: orchestration for preprocessing, scanning, parsing, semantic analysis, IR lowering, and bytecode generation.
io.github.protasm.jvmud.compiler.JvmudCompiler is the current facade and
command-line entry point. It compiles one LPC source file to a JVM class file
when invoked with:
JvmudCompiler <source-file> [output-dir]
There is not yet a repository-level Maven or Gradle build descriptor checked in. When adding build wiring, keep it aligned with the monorepo layout. The compiler source imports ASM, so the compiler module will need an ASM dependency once build metadata is added.
- Keep changes scoped to the relevant top-level area (
compiler/,runtime/,mudlib/, ordocs/). - Treat
runtime/andmudlib/as intentionally separate from compiler internals: compiler helpers used by generated bytecode currently remain undercompiler/src/main/java/io/github/protasm/jvmud/compiler/runtime/.