2026-06-18 21:04:02 +02:00
2026-06-18 18:53:33 +02:00
2026-06-18 21:04:02 +02:00
2026-04-27 16:03:04 +02:00
2026-04-22 12:26:22 +00:00
2026-06-18 19:47:04 +02:00
2026-06-18 18:53:33 +02:00
2026-06-17 23:38:36 +02:00
2026-06-17 23:38:36 +02:00

Compoiler

Mini-Java compiler written in Haskell.

Build

From the repository root:

make build

This builds:

  • src/Main (compiler binary)
  • Runner.class (Java execution harness)

Compile a Java file

./src/Main src/Testsuite/javaFiles/ArithmeticTest.java

Generated class files are written to out/.

Runner usage

Runner loads classes from a directory, instantiates the class (constructor with fewest params, default values), prints declared fields, and can optionally invoke public methods.

Basic usage:

java Runner <ClassName> [classesDir]
  • classesDir defaults to out

Invoke public methods:

java Runner <ClassName> [classesDir] --invoke-public

Provide shared method args (comma-separated):

java Runner <ClassName> [classesDir] --invoke-public --method-args=v1,v2,...

Restrict invocation to specific method names:

java Runner <ClassName> [classesDir] --invoke-public --only-methods=m1,m2,...

Example:

java Runner LoopTest out --invoke-public --only-methods=factorial --method-args=4

TestDriver usage

After all the Test-Cases are Compiled you can run the following Command:

javac -cp out/javac:. TestDriver.java
java -cp .:out/javac TestDriver

Test suite

Static tests

Run all static checks:

runghc -isrc src/Testsuite/ExecutableTests/Main.hs

Run one test:

runghc -isrc src/Testsuite/ExecutableTests/Main.hs WhileTest

Dynamic mode

Dynamic mode runs only the alternative classfile-derived checks.

Run all:

runghc -isrc src/Testsuite/ExecutableTests/Main.hs --dynamic

Run one:

runghc -isrc src/Testsuite/ExecutableTests/Main.hs --dynamic WhileTest

E2E mode

E2E mode runs compile-and-execute comparison between:

  • Compoiler output in out/
  • javac output in out/javac

Run all:

runghc -isrc src/Testsuite/ExecutableTests/Main.hs --e2e

Run one:

runghc -isrc src/Testsuite/ExecutableTests/Main.hs --e2e WhileTest

E2E with method invocation:

runghc -isrc src/Testsuite/ExecutableTests/Main.hs --e2e --e2e-invoke-public WhileTest

E2E with method args:

runghc -isrc src/Testsuite/ExecutableTests/Main.hs --e2e --e2e-invoke-public --e2e-method-args=3 AllSyntaxTest

E2E invoking only selected methods:

runghc -isrc src/Testsuite/ExecutableTests/Main.hs --e2e --e2e-invoke-public --e2e-only-methods=factorial LoopTest
runghc -isrc src/Testsuite/ExecutableTests/Main.hs --e2e --e2e-invoke-public --e2e-only-methods=factorial --e2e-method-args=4 LoopTest
S
Description
compoiler fuer java--
Readme MIT 1.5 MiB
Languages
Haskell 82.3%
Java 13.3%
Yacc 3.1%
Linker Script 1.1%
Makefile 0.2%