i22007 4f688474a2 Revert "Merge remote-tracking branch 'origin/Endabgabe' into code-generator"
This reverts commit 721e1caa7994ead2b1d1cadffecbb9e4ffe1bfc9, reversing
changes made to 6d3e1f859e1fabd93b82a4e802473953e23fb1a6.
2024-07-04 13:59:20 -04:00
2024-05-14 17:59:53 +02:00
2024-07-04 15:22:05 +02:00

"Nicht Haskel 2.0" Java Compiler

Realisation of a subset of the Java Standard Compiler in the course Compiler Construction of the 4th semester Computer Science at the Duale Hochschule Suttgart (Horb).

This project aims to provide a simplified version of the Java compiler, focusing on key language features and demonstrating the principles of compiler construction.

Realised Java syntax

  • Data types: int, boolean, char
  • Access modifier: public, protected, private
  • Operators: = + - * % / > < >= <= == != ! && || ++ --
  • Keywords: class, this, while, do, if, else, for, return, new, switch, case, break, default, :
  • Statements:
    • if ... if else ... else;
    • while ... ;
    • do ... while;
    • for;
    • switch ... case ... ;
  • Comments:
    • Single line: // comment
    • Multi-line: /* comment */
  • Further functions:
    • All methods are overloadable
    • High maintainability and expandability through implementation of the visitor pattern
    • Logging Input and Outputs
    • Error Handling in the Semantic Check

Project Structure

src/
└── main/
    ├── java/
    │   ├── ast/              -> Defining the structure of the AST
    │   ├── bytecode/         -> Generate Java bytecode
    │   ├── main/             -> Running the compiler
    │   ├── parser/
    │   │   ├── astBuilder/   -> Builder creating the AST
    │   │   ├── generated/    -> Antlr generated grammar
    │   │   └── grammar/      -> Antlr grammar
    │   ├── semantic/         -> Running the semantic check
    │   └── visitor/          -> Visitor interface
    └── resources/
test/
└── java/
│   ├── main/                 -> MainTest, E2ETests, UtilityTests
│   ├── parser/               -> Performs tests on the parser
│   └── semantic/             -> Performs tests on the semantic check
└── resources/                -> Ressources for running the Tests

Class-Diagramm AST

AST Diagramm

Used Tools

  • Maven 4.0
    • Used for automating the build process and managing dependencies.
  • ANTLR4 v.13.1
    • Used to parse the input Java code into the Abstract Syntax Tree.

How to run the compiler

Download

Description
No description provided
Readme 9.9 MiB
Languages
Java 97.9%
ANTLR 1.6%
Makefile 0.5%