Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Has been cancelled
"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 */
- Single line:
- 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/
│ ├── parser/ -> Performs tests on the parser
│ └── semantic/
└── resources/ -> Ressources for running the Tests
├──input
│ ├── combinedFeatureTests
│ ├── endabgabeTests
│ ├── failureTests
│ ├── singleFeatureSemanticTests
│ ├── singleFeatureTests
│ ├── typedAstExceptionsTests
│ └── typedAstFeatureTests
└──output
├── javac
└── raupenpiler
Class-Diagramm AST
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
Languages
Java
97.9%
ANTLR
1.6%
Makefile
0.5%
