From 4f688474a2c12f45588e818e5ff4198acaabb9ef Mon Sep 17 00:00:00 2001 From: i22007 Date: Thu, 4 Jul 2024 13:59:20 -0400 Subject: [PATCH] Revert "Merge remote-tracking branch 'origin/Endabgabe' into code-generator" This reverts commit 721e1caa7994ead2b1d1cadffecbb9e4ffe1bfc9, reversing changes made to 6d3e1f859e1fabd93b82a4e802473953e23fb1a6. --- .gitignore | 6 +- README.md | 149 -- readme.md | 68 + src/main/java/ast/ASTNode.java | 14 + src/main/java/ast/ClassNode.java | 9 +- src/main/java/ast/ProgramNode.java | 2 +- .../binaryexpressions/BinaryNode.java | 4 +- .../binaryexpressions/CalculationNode.java | 11 +- .../binaryexpressions/DotNode.java | 24 +- ...tionNode.java => DotSubstractionNode.java} | 89 +- .../binaryexpressions/NonCalculationNode.java | 30 +- .../unaryexpressions/MemberAccessNode.java | 14 +- .../expressions/unaryexpressions/NotNode.java | 18 +- .../unaryexpressions/UnaryNode.java | 6 +- .../java/ast/literal/BooleanLiteralNode.java | 11 + .../java/ast/literal/CharLiteralNode.java | 11 + src/main/java/ast/literal/LiteralNode.java | 31 + .../java/ast/members/ConstructorNode.java | 3 +- src/main/java/ast/members/FieldNode.java | 5 +- src/main/java/ast/members/MemberNode.java | 5 +- src/main/java/ast/members/MethodNode.java | 10 +- .../java/ast/parameters/ParameterNode.java | 2 +- .../ast/statementexpressions/AssignNode.java | 2 +- .../statementexpressions/AssignableNode.java | 8 +- .../IStatementExpressionNode.java | 3 +- .../NewDeclarationNode.java | 2 +- .../crementexpressions/DecrementNode.java | 4 +- .../crementexpressions/IncrementNode.java | 2 +- .../ChainedMethodNode.java | 2 +- .../MethodCallNode.java | 2 +- .../TargetNode.java | 3 +- src/main/java/ast/statements/BlockNode.java | 6 +- .../ast/statements/BlockStatementNode.java | 10 + src/main/java/ast/statements/ElseNode.java | 2 +- src/main/java/ast/statements/IfElseNode.java | 2 +- src/main/java/ast/statements/IfNode.java | 2 +- .../LocalVariableDeclarationNode.java | 2 +- src/main/java/ast/statements/ReturnNode.java | 4 +- src/main/java/ast/statements/WhileNode.java | 3 +- .../java/ast/type/AccessModifierNode.java | 2 +- src/main/java/ast/type/ValueNode.java | 2 +- src/main/java/ast/type/type/BaseType.java | 6 +- src/main/java/ast/type/type/ITypeNode.java | 1 + .../java/ast/type/type/ReferenceType.java | 11 +- src/main/java/ast/type/type/TypeEnum.java | 3 +- src/main/java/bytecode/ByteCodeGenerator.java | 6 +- src/main/java/bytecode/ClassCodeGen.java | 10 +- src/main/java/bytecode/MethodCodeGen.java | 43 +- .../java/bytecode/visitor/MethodVisitor.java | 15 +- .../java/bytecode/visitor/ProgramVisitor.java | 2 +- src/main/java/main/Main.java | 28 +- ...iCompilerLogger.java => RaupenLogger.java} | 10 +- .../java/parser/astBuilder/ASTBuilder.java | 22 +- src/main/java/semantic/Scope.java | 2 +- src/main/java/semantic/SemanticAnalyzer.java | 8 +- src/main/java/semantic/SemanticVisitor.java | 3 +- .../java/semantic/context/ClassContext.java | 4 +- src/main/java/semantic/context/Context.java | 2 +- .../java/semantic/context/FieldContext.java | 4 +- .../TypeCheckResult.java | 44 +- src/main/java/visitor/Visitable.java | 2 +- src/test/Makefile | 12 +- src/test/java/main/E2EReflectionsTest.java | 1250 ++++++++--------- src/test/java/main/EndToEndTester.java | 2 + src/test/java/main/MainTest.java | 4 + src/test/java/parser/AstBuilderTest.java | 12 +- src/test/java/parser/Helper.java | 4 +- src/test/java/parser/ParserTest.java | 138 ++ src/test/java/parser/ScannerTest.java | 45 + src/test/java/semantic/SemanticHelper.java | 2 +- 70 files changed, 1249 insertions(+), 1031 deletions(-) delete mode 100644 README.md create mode 100644 readme.md rename src/main/java/ast/expressions/binaryexpressions/{DotSubtractionNode.java => DotSubstractionNode.java} (70%) create mode 100644 src/main/java/ast/literal/BooleanLiteralNode.java create mode 100644 src/main/java/ast/literal/CharLiteralNode.java create mode 100644 src/main/java/ast/literal/LiteralNode.java create mode 100644 src/main/java/ast/statements/BlockStatementNode.java rename src/main/java/main/{MiniCompilerLogger.java => RaupenLogger.java} (96%) rename src/main/java/{semantic => typechecker}/TypeCheckResult.java (72%) create mode 100644 src/test/java/parser/ParserTest.java create mode 100644 src/test/java/parser/ScannerTest.java diff --git a/.gitignore b/.gitignore index 5d19a24..cb648af 100644 --- a/.gitignore +++ b/.gitignore @@ -77,10 +77,10 @@ fabric.properties .idea/caches/build_file_checksums.ser /target -src/main/resources/logs/miniCompilerLog.log +src/main/resources/logs/RaupenLog.log src/main/resources/output/CompilerInput.class src/test/resources/output/javac/CompilerInput$Test.class src/test/resources/output/javac/CompilerInput.class -src/test/resources/output/miniCompiler/CompilerInput.class -src/test/resources/output/miniCompiler/CompilerInput$Test.class +src/test/resources/output/raupenpiler/CompilerInput.class +src/test/resources/output/raupenpiler/CompilerInput$Test.class .idea/inspectionProfiles/Project_Default.xml diff --git a/README.md b/README.md deleted file mode 100644 index de2bb68..0000000 --- a/README.md +++ /dev/null @@ -1,149 +0,0 @@ -# "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 Stuttgart (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 - -```plain -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/ -> Running E2E tests - │ ├── parser/ -> Performs tests on the parser - │ ├── semantic/ -> Performs tests on the semantic check - └── resources/ -> Ressources for running the Tests -``` - -## Class-Diagramm AST - -![AST Diagramm](ast.png) - -## Distribution of the realisation - -### i22030 & i22035 - -Parser: -- Grammar -> (src/main/java/parser/grammar) -- Scanner -- Parser -- Abstract Syntax Tree (AST) -> (src/main/java/ast) -- AstBuilder -> (src/main/java/parser/astBuilder) - -Parser tests: -- ParserTests -> (src/test/java/parser) -- TestCases -> (src/test/resources/input/singeFeatureTests) - -Other: -- Documentation -> (README.md) -- Ast Class-Diagramm -> (ast.png) -- PowerPoint - -### i22005 -Semantic check: -- Set all types and check whether types have been used correctly -- Contexts -> (src/main/java/semantic/context) -- Exceptions Handling -> (src/main/java/semantic/exceptions) - -Semantic Tests: -- Typing and Type checking -> (src/test/java/semantic/EndToTypedAstTest) -- Exception and feature test -> (src/test/resources/input/typedAstExceptionsTests) - -### i22007 -Bytecode generation: -- Complete bytecode generation -> (src/mein/java/bytecode) - -### i22011 -Tests and execution: -- Makefile -- Running Compiler -> (src/main/main) -- Running E2E tests -> (src/test/main) -- Typing and Type checking -> (src/test/java/semantic/EndToTypedAstTest) - - - -## Used Tools - -- [Maven 4.0](https://maven.apache.org/index.html) - - Used for automating the build process and managing dependencies. -- [ANTLR4 v.13.1](https://www.antlr.org/) - - Used to parse the input Java code into the Abstract Syntax Tree. - -## Used Tools - -- [Maven 4.0](https://maven.apache.org/index.html) - - Used for automating the build process and managing dependencies. -- [ANTLR4 v.13.1](https://www.antlr.org/) - - Used to parse the input Java code into the Abstract Syntax Tree. - -## How to run the compiler -### Possibilities -### 1. Start miniCompiler using make: -Make needs to be installed -```bash -cd .\src\test\ ; make clean compile-miniCompiler -``` - -### 2. Start miniCompiler using jar: -If you do not have the .jar, download it [here](https://gitea.hb.dhbw-stuttgart.de/i22005/NichtHaskell2.0/src/branch/Endabgabe/src) or compile it using mvn package or make first -``` -java.exe -DgenJar=bool -DgenClass=bool -jar path_to_jar\jarName.jar 'path_to_input_file.java' 'path_to_output_directory' -``` - -Example (jar needs to be in the target directory) -```bash - java.exe -DgenJar=true -DgenClass=true -jar .\target\JavaCompiler-1.0-jar-with-dependencies.jar 'src/main/resources/input/CompilerInput.java' 'src/main/resources/output' -``` - -- set DgenJar true, to generate the jar, false for no jar - -``` - DgenJar=true -``` - -- set DgenClass true, to generate class files, false for no class files - -``` - DgenClass=true - ``` - -## How to run tests - -```bash -mvn test -``` -Or start them manually in your IDE \ No newline at end of file diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..fc72bb8 --- /dev/null +++ b/readme.md @@ -0,0 +1,68 @@ +# "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 + +```plain +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](ast.png) + +## Used Tools + +- [Maven 4.0](https://maven.apache.org/index.html) + - Used for automating the build process and managing dependencies. +- [ANTLR4 v.13.1](https://www.antlr.org/) + - Used to parse the input Java code into the Abstract Syntax Tree. + + +## How to run the compiler + +## Download + +```bash \ No newline at end of file diff --git a/src/main/java/ast/ASTNode.java b/src/main/java/ast/ASTNode.java index 8ebf41d..1b666e2 100644 --- a/src/main/java/ast/ASTNode.java +++ b/src/main/java/ast/ASTNode.java @@ -1,6 +1,20 @@ package ast; +import bytecode.visitor.ClassVisitor; +import semantic.SemanticVisitor; +import typechecker.TypeCheckResult; + public interface ASTNode { + + //Todo: @BruderJohn & @i22007 Interface anwenden + geeignetetn Methodename. + + /* + Typecheck: + public TypeCheckResult acceptType(SemanticVisitor visitor); + + Bytecode: + public void accepByteCode(ClassVisitor classVisitor); + */ } diff --git a/src/main/java/ast/ClassNode.java b/src/main/java/ast/ClassNode.java index 4ea826e..6060237 100644 --- a/src/main/java/ast/ClassNode.java +++ b/src/main/java/ast/ClassNode.java @@ -1,11 +1,12 @@ package ast; import ast.type.AccessModifierNode; +import ast.members.ConstructorNode; import ast.members.MemberNode; import ast.members.MethodNode; import bytecode.visitor.ClassVisitor; import semantic.SemanticVisitor; -import semantic.TypeCheckResult; +import typechecker.TypeCheckResult; import visitor.Visitable; import java.util.ArrayList; @@ -16,11 +17,11 @@ public class ClassNode implements ASTNode, Visitable { public String identifier; public List members = new ArrayList<>(); - public ClassNode() { + public ClassNode(){ } - public ClassNode(String accessType, String identifier) { + public ClassNode(String accessType, String identifier){ this.accessType = new AccessModifierNode(accessType); this.identifier = identifier; } @@ -29,7 +30,7 @@ public class ClassNode implements ASTNode, Visitable { members.add(member); } - public List getMethods() { + public List getMethods(){ List methods = new ArrayList<>(); for (MemberNode member : members) { if (member instanceof MethodNode methodNode) { diff --git a/src/main/java/ast/ProgramNode.java b/src/main/java/ast/ProgramNode.java index ed7eee9..f8ad19a 100644 --- a/src/main/java/ast/ProgramNode.java +++ b/src/main/java/ast/ProgramNode.java @@ -2,7 +2,7 @@ package ast; import bytecode.visitor.ProgramVisitor; import semantic.SemanticVisitor; -import semantic.TypeCheckResult; +import typechecker.TypeCheckResult; import visitor.Visitable; import java.util.ArrayList; diff --git a/src/main/java/ast/expressions/binaryexpressions/BinaryNode.java b/src/main/java/ast/expressions/binaryexpressions/BinaryNode.java index 82a7021..40b474a 100644 --- a/src/main/java/ast/expressions/binaryexpressions/BinaryNode.java +++ b/src/main/java/ast/expressions/binaryexpressions/BinaryNode.java @@ -4,12 +4,12 @@ import ast.expressions.IExpressionNode; import ast.type.type.*; import bytecode.visitor.MethodVisitor; import semantic.SemanticVisitor; -import semantic.TypeCheckResult; +import typechecker.TypeCheckResult; import visitor.Visitable; public class BinaryNode implements IExpressionNode, Visitable { - public ITypeNode typeNode; + private ITypeNode typeNode; @Override public TypeCheckResult accept(SemanticVisitor visitor) { diff --git a/src/main/java/ast/expressions/binaryexpressions/CalculationNode.java b/src/main/java/ast/expressions/binaryexpressions/CalculationNode.java index 3c6617f..780fbab 100644 --- a/src/main/java/ast/expressions/binaryexpressions/CalculationNode.java +++ b/src/main/java/ast/expressions/binaryexpressions/CalculationNode.java @@ -1,8 +1,9 @@ package ast.expressions.binaryexpressions; +import ast.type.type.*; import bytecode.visitor.MethodVisitor; import semantic.SemanticVisitor; -import semantic.TypeCheckResult; +import typechecker.TypeCheckResult; public class CalculationNode extends BinaryNode { public CalculationNode calculationExpression; @@ -19,11 +20,11 @@ public class CalculationNode extends BinaryNode { this.dotExpression = dotExpression; } - public void setOperator(String operator) { - if (operator != null) { - if (operator.equals("+")) { + private void setOperator(String operator) { + if(operator != null) { + if(operator.equals("+")) { this.operator = EnumLineOperator.PLUS; - } else if (operator.equals("-")) { + } else if(operator.equals("-")) { this.operator = EnumLineOperator.MINUS; } } diff --git a/src/main/java/ast/expressions/binaryexpressions/DotNode.java b/src/main/java/ast/expressions/binaryexpressions/DotNode.java index 518f004..8e9c183 100644 --- a/src/main/java/ast/expressions/binaryexpressions/DotNode.java +++ b/src/main/java/ast/expressions/binaryexpressions/DotNode.java @@ -2,28 +2,30 @@ package ast.expressions.binaryexpressions; import bytecode.visitor.MethodVisitor; import semantic.SemanticVisitor; -import semantic.TypeCheckResult; +import typechecker.TypeCheckResult; public class DotNode extends BinaryNode { public DotNode dotExpression; public EnumDotOperator operator; - public DotSubtractionNode dotSubtractionExpression; + public DotSubstractionNode dotSubstractionExpression; - public DotNode(DotNode dotExpression, String operator, DotSubtractionNode dotSubtractionExpression) { + public DotNode(DotNode dotExpression, String operator, DotSubstractionNode dotSubstractionExpression) { this.dotExpression = dotExpression; setOperator(operator); - this.dotSubtractionExpression = dotSubtractionExpression; + this.dotSubstractionExpression = dotSubstractionExpression; } - public DotNode(DotSubtractionNode dotSubtractionExpression) { - this.dotSubtractionExpression = dotSubtractionExpression; + public DotNode(DotSubstractionNode dotSubstractionExpression) { + this.dotSubstractionExpression = dotSubstractionExpression; } - public void setOperator(String operator) { - switch (operator) { - case "*" -> this.operator = EnumDotOperator.MULT; - case "/" -> this.operator = EnumDotOperator.DIV; - case "%" -> this.operator = EnumDotOperator.MOD; + private void setOperator(String operator) { + if(operator.equals("*")) { + this.operator = EnumDotOperator.MULT; + } else if(operator.equals("/")) { + this.operator = EnumDotOperator.DIV; + } else if(operator.equals("%")) { + this.operator = EnumDotOperator.MOD; } } diff --git a/src/main/java/ast/expressions/binaryexpressions/DotSubtractionNode.java b/src/main/java/ast/expressions/binaryexpressions/DotSubstractionNode.java similarity index 70% rename from src/main/java/ast/expressions/binaryexpressions/DotSubtractionNode.java rename to src/main/java/ast/expressions/binaryexpressions/DotSubstractionNode.java index e2c64b5..a93d1c4 100644 --- a/src/main/java/ast/expressions/binaryexpressions/DotSubtractionNode.java +++ b/src/main/java/ast/expressions/binaryexpressions/DotSubstractionNode.java @@ -1,44 +1,45 @@ -package ast.expressions.binaryexpressions; - -import ast.expressions.unaryexpressions.MemberAccessNode; -import ast.statementexpressions.methodcallstatementnexpressions.MethodCallNode; -import ast.type.ValueNode; -import bytecode.visitor.MethodVisitor; -import semantic.SemanticVisitor; -import semantic.TypeCheckResult; - -public class DotSubtractionNode extends BinaryNode { - public ValueNode value; - public String identifier; - public MemberAccessNode memberAccess; - public MethodCallNode methodCall; - public CalculationNode calculationExpression; - - public DotSubtractionNode(ValueNode value) { - this.value = value; - } - - public DotSubtractionNode(String identifier) { - this.identifier = identifier; - } - - public DotSubtractionNode(MemberAccessNode memberAccess) { - this.memberAccess = memberAccess; - } - - public DotSubtractionNode(MethodCallNode methodCall, CalculationNode calculationExpression) { - this.methodCall = methodCall; - this.calculationExpression = calculationExpression; - } - - @Override - public TypeCheckResult accept(SemanticVisitor visitor) { - return visitor.analyze(this); - } - - @Override - public void accept(MethodVisitor methodVisitor) { - methodVisitor.visit(this); - } - -} +package ast.expressions.binaryexpressions; + +import ast.expressions.unaryexpressions.MemberAccessNode; +import ast.statementexpressions.methodcallstatementnexpressions.MethodCallNode; +import ast.type.type.*; +import ast.type.ValueNode; +import bytecode.visitor.MethodVisitor; +import semantic.SemanticVisitor; +import typechecker.TypeCheckResult; + +public class DotSubstractionNode extends BinaryNode { + public ValueNode value; + public String identifier; + public MemberAccessNode memberAccess; + public MethodCallNode methodCall; + public CalculationNode calculationExpression; + + public DotSubstractionNode(ValueNode value) { + this.value = value; + } + + public DotSubstractionNode(String identifier) { + this.identifier = identifier; + } + + public DotSubstractionNode(MemberAccessNode memberAccess) { + this.memberAccess = memberAccess; + } + + public DotSubstractionNode(MethodCallNode methodCall, CalculationNode calculationExpression) { + this.methodCall = methodCall; + this.calculationExpression = calculationExpression; + } + + @Override + public TypeCheckResult accept(SemanticVisitor visitor) { + return visitor.analyze(this); + } + + @Override + public void accept(MethodVisitor methodVisitor) { + methodVisitor.visit(this); + } + +} diff --git a/src/main/java/ast/expressions/binaryexpressions/NonCalculationNode.java b/src/main/java/ast/expressions/binaryexpressions/NonCalculationNode.java index ae63b01..c44a103 100644 --- a/src/main/java/ast/expressions/binaryexpressions/NonCalculationNode.java +++ b/src/main/java/ast/expressions/binaryexpressions/NonCalculationNode.java @@ -2,9 +2,10 @@ package ast.expressions.binaryexpressions; import ast.expressions.IExpressionNode; import ast.expressions.unaryexpressions.UnaryNode; +import ast.type.type.*; import bytecode.visitor.MethodVisitor; import semantic.SemanticVisitor; -import semantic.TypeCheckResult; +import typechecker.TypeCheckResult; public class NonCalculationNode extends BinaryNode { public UnaryNode unaryExpression; @@ -17,16 +18,23 @@ public class NonCalculationNode extends BinaryNode { this.expression = expression; } - public void setOperator(String operator) { - switch (operator) { - case "&&" -> this.operator = EnumNonCalculationOperator.AND; - case "||" -> this.operator = EnumNonCalculationOperator.OR; - case ">" -> this.operator = EnumNonCalculationOperator.GREATER; - case "<" -> this.operator = EnumNonCalculationOperator.LESS; - case ">=" -> this.operator = EnumNonCalculationOperator.GREATER_EQUAL; - case "<=" -> this.operator = EnumNonCalculationOperator.LESS_EQUAL; - case "==" -> this.operator = EnumNonCalculationOperator.EQUAL; - case "!=" -> this.operator = EnumNonCalculationOperator.NOT_EQUAL; + private void setOperator(String operator) { + if(operator.equals("&&")) { + this.operator = EnumNonCalculationOperator.AND; + } else if(operator.equals("||")) { + this.operator = EnumNonCalculationOperator.OR; + } else if(operator.equals(">")) { + this.operator = EnumNonCalculationOperator.GREATER; + } else if(operator.equals("<")) { + this.operator = EnumNonCalculationOperator.LESS; + } else if(operator.equals(">=")) { + this.operator = EnumNonCalculationOperator.GREATER_EQUAL; + } else if(operator.equals("<=")) { + this.operator = EnumNonCalculationOperator.LESS_EQUAL; + } else if(operator.equals("==")) { + this.operator = EnumNonCalculationOperator.EQUAL; + } else if(operator.equals("!=")) { + this.operator = EnumNonCalculationOperator.NOT_EQUAL; } } diff --git a/src/main/java/ast/expressions/unaryexpressions/MemberAccessNode.java b/src/main/java/ast/expressions/unaryexpressions/MemberAccessNode.java index 29de4dd..ca688db 100644 --- a/src/main/java/ast/expressions/unaryexpressions/MemberAccessNode.java +++ b/src/main/java/ast/expressions/unaryexpressions/MemberAccessNode.java @@ -2,9 +2,9 @@ package ast.expressions.unaryexpressions; import ast.ASTNode; import bytecode.visitor.MethodVisitor; - +import ast.type.type.ITypeNode; import semantic.SemanticVisitor; -import semantic.TypeCheckResult; +import typechecker.TypeCheckResult; import visitor.Visitable; import java.util.ArrayList; @@ -13,6 +13,7 @@ import java.util.List; public class MemberAccessNode implements ASTNode, Visitable { public Boolean thisExpr; public List identifiers = new ArrayList<>(); + private ITypeNode typeNode; public MemberAccessNode(Boolean thisExpr) { this.thisExpr = thisExpr; @@ -26,10 +27,17 @@ public class MemberAccessNode implements ASTNode, Visitable { public void accept(MethodVisitor methodVisitor) { methodVisitor.visit(this); } - + public TypeCheckResult accept(SemanticVisitor visitor) { return visitor.analyze(this); } + public ITypeNode getTypeNode() { + return typeNode; + } + + public void setTypeNode(ITypeNode typeNode) { + this.typeNode = typeNode; + } } diff --git a/src/main/java/ast/expressions/unaryexpressions/NotNode.java b/src/main/java/ast/expressions/unaryexpressions/NotNode.java index eb651ff..e0c31a3 100644 --- a/src/main/java/ast/expressions/unaryexpressions/NotNode.java +++ b/src/main/java/ast/expressions/unaryexpressions/NotNode.java @@ -1,12 +1,13 @@ package ast.expressions.unaryexpressions; +import ast.ASTNode; import ast.expressions.IExpressionNode; -import ast.type.type.ITypeNode; import bytecode.visitor.MethodVisitor; import semantic.SemanticVisitor; -import semantic.TypeCheckResult; +import typechecker.TypeCheckResult; +import visitor.Visitable; -public class NotNode implements IExpressionNode { +public class NotNode implements ASTNode, Visitable { public IExpressionNode expression; public NotNode(IExpressionNode expression) { @@ -23,13 +24,4 @@ public class NotNode implements IExpressionNode { return null; } - @Override - public ITypeNode getType() { - return expression.getType(); - } - - @Override - public void setType(ITypeNode type) { - this.expression.setType(type); - } -} \ No newline at end of file +} diff --git a/src/main/java/ast/expressions/unaryexpressions/UnaryNode.java b/src/main/java/ast/expressions/unaryexpressions/UnaryNode.java index cd4dd38..21374fa 100644 --- a/src/main/java/ast/expressions/unaryexpressions/UnaryNode.java +++ b/src/main/java/ast/expressions/unaryexpressions/UnaryNode.java @@ -6,7 +6,7 @@ import ast.type.type.*; import ast.type.ValueNode; import bytecode.visitor.MethodVisitor; import semantic.SemanticVisitor; -import semantic.TypeCheckResult; +import typechecker.TypeCheckResult; import java.util.Objects; @@ -18,10 +18,10 @@ public class UnaryNode implements IExpressionNode { public NotNode notExpression; public IStatementNode statement; public IExpressionNode expression; - public ITypeNode type; + private ITypeNode type; public UnaryNode(String value) { - if (Objects.equals(value, "this")) { + if(Objects.equals(value, "this")) { this.thisExp = "this"; } else { this.identifier = value; diff --git a/src/main/java/ast/literal/BooleanLiteralNode.java b/src/main/java/ast/literal/BooleanLiteralNode.java new file mode 100644 index 0000000..4657df7 --- /dev/null +++ b/src/main/java/ast/literal/BooleanLiteralNode.java @@ -0,0 +1,11 @@ +package ast.literal; + +public class BooleanLiteralNode { + private String value; + + public BooleanLiteralNode(String value) {this.value = value;} + + public String getValue() { + return value; + } +} diff --git a/src/main/java/ast/literal/CharLiteralNode.java b/src/main/java/ast/literal/CharLiteralNode.java new file mode 100644 index 0000000..c77c073 --- /dev/null +++ b/src/main/java/ast/literal/CharLiteralNode.java @@ -0,0 +1,11 @@ +package ast.literal; + +public class CharLiteralNode { + public String value; + + public CharLiteralNode(String value) {this.value = value;} + + public String getValue() { + return value; + } +} diff --git a/src/main/java/ast/literal/LiteralNode.java b/src/main/java/ast/literal/LiteralNode.java new file mode 100644 index 0000000..43a16f9 --- /dev/null +++ b/src/main/java/ast/literal/LiteralNode.java @@ -0,0 +1,31 @@ +package ast.literal; + +import ast.expressions.IExpressionNode; +import ast.type.type.ITypeNode; +import semantic.SemanticVisitor; +import typechecker.TypeCheckResult; + +public class LiteralNode implements IExpressionNode { + + public String value; + private ITypeNode type; + + public LiteralNode(String value, ITypeNode type) { + this.value = value; + this.type = type; + } + + public ITypeNode getType() { + return type; + } + + public void setType(ITypeNode type) { + this.type = type; + } + + + @Override + public TypeCheckResult accept(SemanticVisitor visitor) { + return null; + } +} \ No newline at end of file diff --git a/src/main/java/ast/members/ConstructorNode.java b/src/main/java/ast/members/ConstructorNode.java index e149fc6..2ff9f94 100644 --- a/src/main/java/ast/members/ConstructorNode.java +++ b/src/main/java/ast/members/ConstructorNode.java @@ -32,7 +32,8 @@ public class ConstructorNode extends MethodNode implements Visitable { } public boolean isSame(MethodNode methodNode) { - if (!(Objects.equals(this.identifier, methodNode.getIdentifier())) || getParameters().size() != methodNode.getParameters().size()) { + if (!(Objects.equals(this.identifier, methodNode.getIdentifier())) + || getParameters().size() != methodNode.getParameters().size()) { return false; } diff --git a/src/main/java/ast/members/FieldNode.java b/src/main/java/ast/members/FieldNode.java index e223b25..edf434c 100644 --- a/src/main/java/ast/members/FieldNode.java +++ b/src/main/java/ast/members/FieldNode.java @@ -3,8 +3,9 @@ package ast.members; import ast.type.AccessModifierNode; import ast.type.type.ITypeNode; import bytecode.visitor.ClassVisitor; +import bytecode.visitor.MethodVisitor; import semantic.SemanticVisitor; -import semantic.TypeCheckResult; +import typechecker.TypeCheckResult; import visitor.Visitable; public class FieldNode implements MemberNode, Visitable { @@ -12,7 +13,7 @@ public class FieldNode implements MemberNode, Visitable { public ITypeNode type; public String identifier; - public FieldNode(AccessModifierNode accessTypeNode, ITypeNode type, String name) { + public FieldNode(AccessModifierNode accessTypeNode, ITypeNode type, String name){ this.accessTypeNode = accessTypeNode; this.type = type; this.identifier = name; diff --git a/src/main/java/ast/members/MemberNode.java b/src/main/java/ast/members/MemberNode.java index 6f8bcc8..1319c03 100644 --- a/src/main/java/ast/members/MemberNode.java +++ b/src/main/java/ast/members/MemberNode.java @@ -10,8 +10,7 @@ import ast.ASTNode; @JsonSubTypes({ @JsonSubTypes.Type(value = MethodNode.class, name = "Method"), - @JsonSubTypes.Type(value = FieldNode.class, name = "Field")} + @JsonSubTypes.Type(value = FieldNode.class, name = "Field") } ) -public interface MemberNode extends ASTNode { -} +public interface MemberNode extends ASTNode {} diff --git a/src/main/java/ast/members/MethodNode.java b/src/main/java/ast/members/MethodNode.java index 316f77c..46a654d 100644 --- a/src/main/java/ast/members/MethodNode.java +++ b/src/main/java/ast/members/MethodNode.java @@ -6,7 +6,7 @@ import ast.type.AccessModifierNode; import ast.type.type.*; import bytecode.visitor.MethodVisitor; import semantic.SemanticVisitor; -import semantic.TypeCheckResult; +import typechecker.TypeCheckResult; import visitor.Visitable; import java.util.ArrayList; @@ -15,16 +15,16 @@ import java.util.Objects; public class MethodNode implements MemberNode, Visitable { public AccessModifierNode accesModifier; - public ITypeNode type; + private ITypeNode type; public Boolean voidType; - public String identifier; + private String identifier; public List parameters = new ArrayList<>(); public BlockNode block; public MethodNode() { } - public MethodNode(String accessModifier, ITypeNode type, Boolean voidType, String identifier, BlockNode block) { + public MethodNode(String accessModifier, ITypeNode type, Boolean voidType, String identifier, BlockNode block){ this.accesModifier = new AccessModifierNode(accessModifier); this.type = type; this.voidType = voidType; @@ -40,7 +40,7 @@ public class MethodNode implements MemberNode, Visitable { return parameters; } - public boolean isSame(MethodNode methodNode) { + public boolean isSame(MethodNode methodNode){ if (!(Objects.equals(this.identifier, methodNode.getIdentifier())) || type.equals(methodNode.type) || getParameters().size() != methodNode.getParameters().size()) { return false; diff --git a/src/main/java/ast/parameters/ParameterNode.java b/src/main/java/ast/parameters/ParameterNode.java index d3a0713..f3ec9bd 100644 --- a/src/main/java/ast/parameters/ParameterNode.java +++ b/src/main/java/ast/parameters/ParameterNode.java @@ -3,7 +3,7 @@ package ast.parameters; import ast.ASTNode; import ast.type.type.*; import semantic.SemanticVisitor; -import semantic.TypeCheckResult; +import typechecker.TypeCheckResult; import visitor.Visitable; public class ParameterNode implements ASTNode, Visitable { diff --git a/src/main/java/ast/statementexpressions/AssignNode.java b/src/main/java/ast/statementexpressions/AssignNode.java index c181e04..c620abd 100644 --- a/src/main/java/ast/statementexpressions/AssignNode.java +++ b/src/main/java/ast/statementexpressions/AssignNode.java @@ -3,7 +3,7 @@ package ast.statementexpressions; import ast.expressions.IExpressionNode; import bytecode.visitor.MethodVisitor; import semantic.SemanticVisitor; -import semantic.TypeCheckResult; +import typechecker.TypeCheckResult; public class AssignNode implements IStatementExpressionNode { public AssignableNode assignable; diff --git a/src/main/java/ast/statementexpressions/AssignableNode.java b/src/main/java/ast/statementexpressions/AssignableNode.java index aaa8406..83568d8 100644 --- a/src/main/java/ast/statementexpressions/AssignableNode.java +++ b/src/main/java/ast/statementexpressions/AssignableNode.java @@ -3,11 +3,11 @@ package ast.statementexpressions; import ast.expressions.unaryexpressions.MemberAccessNode; import ast.type.type.ITypeNode; import semantic.SemanticVisitor; -import semantic.TypeCheckResult; +import typechecker.TypeCheckResult; public class AssignableNode implements IStatementExpressionNode { public String identifier; - public ITypeNode typeNode; + private ITypeNode typeNode; public MemberAccessNode memberAccess; @@ -24,6 +24,10 @@ public class AssignableNode implements IStatementExpressionNode { return visitor.analyze(this); } + public ITypeNode getTypeNode() { + return typeNode; + } + public void setTypeNode(ITypeNode typeNode) { this.typeNode = typeNode; } diff --git a/src/main/java/ast/statementexpressions/IStatementExpressionNode.java b/src/main/java/ast/statementexpressions/IStatementExpressionNode.java index 0a56216..7458848 100644 --- a/src/main/java/ast/statementexpressions/IStatementExpressionNode.java +++ b/src/main/java/ast/statementexpressions/IStatementExpressionNode.java @@ -2,5 +2,4 @@ package ast.statementexpressions; import ast.statements.IStatementNode; -public interface IStatementExpressionNode extends IStatementNode { -} +public interface IStatementExpressionNode extends IStatementNode {} diff --git a/src/main/java/ast/statementexpressions/NewDeclarationNode.java b/src/main/java/ast/statementexpressions/NewDeclarationNode.java index c822ace..0964a6c 100644 --- a/src/main/java/ast/statementexpressions/NewDeclarationNode.java +++ b/src/main/java/ast/statementexpressions/NewDeclarationNode.java @@ -3,7 +3,7 @@ package ast.statementexpressions; import ast.expressions.IExpressionNode; import bytecode.visitor.MethodVisitor; import semantic.SemanticVisitor; -import semantic.TypeCheckResult; +import typechecker.TypeCheckResult; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/ast/statementexpressions/crementexpressions/DecrementNode.java b/src/main/java/ast/statementexpressions/crementexpressions/DecrementNode.java index df49a87..175c6f4 100644 --- a/src/main/java/ast/statementexpressions/crementexpressions/DecrementNode.java +++ b/src/main/java/ast/statementexpressions/crementexpressions/DecrementNode.java @@ -2,8 +2,10 @@ package ast.statementexpressions.crementexpressions; import ast.statementexpressions.AssignableNode; import ast.statementexpressions.IStatementExpressionNode; +import bytecode.visitor.MethodVisitor; import semantic.SemanticVisitor; -import semantic.TypeCheckResult; +import typechecker.TypeCheckResult; +import visitor.Visitable; public class DecrementNode implements IStatementExpressionNode, Visitable { public CrementType crementType; diff --git a/src/main/java/ast/statementexpressions/crementexpressions/IncrementNode.java b/src/main/java/ast/statementexpressions/crementexpressions/IncrementNode.java index 3735e47..7e9240d 100644 --- a/src/main/java/ast/statementexpressions/crementexpressions/IncrementNode.java +++ b/src/main/java/ast/statementexpressions/crementexpressions/IncrementNode.java @@ -4,8 +4,8 @@ import ast.statementexpressions.AssignableNode; import ast.statementexpressions.IStatementExpressionNode; import bytecode.visitor.MethodVisitor; import semantic.SemanticVisitor; +import typechecker.TypeCheckResult; import visitor.Visitable; -import semantic.TypeCheckResult; public class IncrementNode implements IStatementExpressionNode, Visitable { public CrementType crementType; diff --git a/src/main/java/ast/statementexpressions/methodcallstatementnexpressions/ChainedMethodNode.java b/src/main/java/ast/statementexpressions/methodcallstatementnexpressions/ChainedMethodNode.java index 9b54c35..1d2f0ab 100644 --- a/src/main/java/ast/statementexpressions/methodcallstatementnexpressions/ChainedMethodNode.java +++ b/src/main/java/ast/statementexpressions/methodcallstatementnexpressions/ChainedMethodNode.java @@ -4,7 +4,7 @@ import ast.ASTNode; import ast.expressions.IExpressionNode; import bytecode.visitor.MethodVisitor; import semantic.SemanticVisitor; -import semantic.TypeCheckResult; +import typechecker.TypeCheckResult; import visitor.Visitable; import java.util.ArrayList; diff --git a/src/main/java/ast/statementexpressions/methodcallstatementnexpressions/MethodCallNode.java b/src/main/java/ast/statementexpressions/methodcallstatementnexpressions/MethodCallNode.java index 82f113c..8179b82 100644 --- a/src/main/java/ast/statementexpressions/methodcallstatementnexpressions/MethodCallNode.java +++ b/src/main/java/ast/statementexpressions/methodcallstatementnexpressions/MethodCallNode.java @@ -5,7 +5,7 @@ import ast.statements.IStatementNode; import ast.type.type.ITypeNode; import bytecode.visitor.MethodVisitor; import semantic.SemanticVisitor; -import semantic.TypeCheckResult; +import typechecker.TypeCheckResult; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/ast/statementexpressions/methodcallstatementnexpressions/TargetNode.java b/src/main/java/ast/statementexpressions/methodcallstatementnexpressions/TargetNode.java index 6e3dc2b..fbd0c08 100644 --- a/src/main/java/ast/statementexpressions/methodcallstatementnexpressions/TargetNode.java +++ b/src/main/java/ast/statementexpressions/methodcallstatementnexpressions/TargetNode.java @@ -3,8 +3,9 @@ package ast.statementexpressions.methodcallstatementnexpressions; import ast.ASTNode; import ast.expressions.unaryexpressions.MemberAccessNode; import ast.statementexpressions.NewDeclarationNode; +import bytecode.visitor.MethodVisitor; import semantic.SemanticVisitor; -import semantic.TypeCheckResult; +import typechecker.TypeCheckResult; import visitor.Visitable; public class TargetNode implements ASTNode, Visitable { diff --git a/src/main/java/ast/statements/BlockNode.java b/src/main/java/ast/statements/BlockNode.java index 574fda1..7a5a2ea 100644 --- a/src/main/java/ast/statements/BlockNode.java +++ b/src/main/java/ast/statements/BlockNode.java @@ -1,7 +1,8 @@ package ast.statements; +import ast.ASTNode; import semantic.SemanticVisitor; -import semantic.TypeCheckResult; +import typechecker.TypeCheckResult; import visitor.Visitable; import java.util.ArrayList; @@ -10,8 +11,7 @@ import java.util.List; public class BlockNode implements IStatementNode, Visitable { public List statements = new ArrayList<>(); - public BlockNode() { - } + public BlockNode() {} public void addStatement(IStatementNode statement) { statements.add(statement); diff --git a/src/main/java/ast/statements/BlockStatementNode.java b/src/main/java/ast/statements/BlockStatementNode.java new file mode 100644 index 0000000..8a01783 --- /dev/null +++ b/src/main/java/ast/statements/BlockStatementNode.java @@ -0,0 +1,10 @@ +package ast.statements; + + +import java.util.List; + +public class BlockStatementNode { + List statements; + + public BlockStatementNode(List statements) {this.statements = statements;} +} diff --git a/src/main/java/ast/statements/ElseNode.java b/src/main/java/ast/statements/ElseNode.java index 5f5b550..96e579e 100644 --- a/src/main/java/ast/statements/ElseNode.java +++ b/src/main/java/ast/statements/ElseNode.java @@ -1,7 +1,7 @@ package ast.statements; import semantic.SemanticVisitor; -import semantic.TypeCheckResult; +import typechecker.TypeCheckResult; public class ElseNode implements IStatementNode { public BlockNode block; diff --git a/src/main/java/ast/statements/IfElseNode.java b/src/main/java/ast/statements/IfElseNode.java index 9c4542a..7126bed 100644 --- a/src/main/java/ast/statements/IfElseNode.java +++ b/src/main/java/ast/statements/IfElseNode.java @@ -1,7 +1,7 @@ package ast.statements; import semantic.SemanticVisitor; -import semantic.TypeCheckResult; +import typechecker.TypeCheckResult; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/ast/statements/IfNode.java b/src/main/java/ast/statements/IfNode.java index 59ac7ca..30e4e13 100644 --- a/src/main/java/ast/statements/IfNode.java +++ b/src/main/java/ast/statements/IfNode.java @@ -2,7 +2,7 @@ package ast.statements; import ast.expressions.IExpressionNode; import semantic.SemanticVisitor; -import semantic.TypeCheckResult; +import typechecker.TypeCheckResult; public class IfNode implements IStatementNode { public IExpressionNode expression; diff --git a/src/main/java/ast/statements/LocalVariableDeclarationNode.java b/src/main/java/ast/statements/LocalVariableDeclarationNode.java index 032503f..726ea24 100644 --- a/src/main/java/ast/statements/LocalVariableDeclarationNode.java +++ b/src/main/java/ast/statements/LocalVariableDeclarationNode.java @@ -4,7 +4,7 @@ import ast.expressions.IExpressionNode; import ast.type.type.*; import bytecode.visitor.MethodVisitor; import semantic.SemanticVisitor; -import semantic.TypeCheckResult; +import typechecker.TypeCheckResult; public class LocalVariableDeclarationNode implements IStatementNode { public ITypeNode type; diff --git a/src/main/java/ast/statements/ReturnNode.java b/src/main/java/ast/statements/ReturnNode.java index 485e0eb..fed9c44 100644 --- a/src/main/java/ast/statements/ReturnNode.java +++ b/src/main/java/ast/statements/ReturnNode.java @@ -3,14 +3,14 @@ package ast.statements; import ast.expressions.IExpressionNode; import bytecode.visitor.MethodVisitor; import semantic.SemanticVisitor; -import semantic.TypeCheckResult; +import typechecker.TypeCheckResult; public class ReturnNode implements IStatementNode { public IExpressionNode expression; public Boolean voidReturn = false; public ReturnNode(IExpressionNode expression) { - if (expression != null) { + if(expression != null) { this.expression = expression; } else { voidReturn = true; diff --git a/src/main/java/ast/statements/WhileNode.java b/src/main/java/ast/statements/WhileNode.java index 08b3347..6ac7f1f 100644 --- a/src/main/java/ast/statements/WhileNode.java +++ b/src/main/java/ast/statements/WhileNode.java @@ -2,7 +2,7 @@ package ast.statements; import ast.expressions.IExpressionNode; import semantic.SemanticVisitor; -import semantic.TypeCheckResult; +import typechecker.TypeCheckResult; public class WhileNode implements IStatementNode { public IExpressionNode expression; @@ -14,6 +14,7 @@ public class WhileNode implements IStatementNode { } public void test() { + return; } diff --git a/src/main/java/ast/type/AccessModifierNode.java b/src/main/java/ast/type/AccessModifierNode.java index abb054a..45f9172 100644 --- a/src/main/java/ast/type/AccessModifierNode.java +++ b/src/main/java/ast/type/AccessModifierNode.java @@ -8,7 +8,7 @@ public class AccessModifierNode { } private void setModifier(String accessType) { - switch (accessType) { + switch(accessType) { case "public": this.accessType = EnumAccessModifierNode.PUBLIC; break; diff --git a/src/main/java/ast/type/ValueNode.java b/src/main/java/ast/type/ValueNode.java index abf9c38..bf00e90 100644 --- a/src/main/java/ast/type/ValueNode.java +++ b/src/main/java/ast/type/ValueNode.java @@ -3,7 +3,7 @@ package ast.type; import ast.ASTNode; import bytecode.visitor.MethodVisitor; import semantic.SemanticVisitor; -import semantic.TypeCheckResult; +import typechecker.TypeCheckResult; import visitor.Visitable; public class ValueNode implements ASTNode, Visitable { diff --git a/src/main/java/ast/type/type/BaseType.java b/src/main/java/ast/type/type/BaseType.java index 8a5f21a..0563b64 100644 --- a/src/main/java/ast/type/type/BaseType.java +++ b/src/main/java/ast/type/type/BaseType.java @@ -2,7 +2,7 @@ package ast.type.type; public class BaseType implements ITypeNode { - public final TypeEnum typeEnum; + private TypeEnum typeEnum; public BaseType(TypeEnum typeEnum) { this.typeEnum = typeEnum; @@ -21,6 +21,8 @@ public class BaseType implements ITypeNode { if (getClass() != obj.getClass()) return false; BaseType other = (BaseType) obj; - return typeEnum == other.typeEnum; + if (typeEnum != other.typeEnum) + return false; + return true; } } diff --git a/src/main/java/ast/type/type/ITypeNode.java b/src/main/java/ast/type/type/ITypeNode.java index 098c3c2..e449e3c 100644 --- a/src/main/java/ast/type/type/ITypeNode.java +++ b/src/main/java/ast/type/type/ITypeNode.java @@ -1,4 +1,5 @@ package ast.type.type; public interface ITypeNode { + } diff --git a/src/main/java/ast/type/type/ReferenceType.java b/src/main/java/ast/type/type/ReferenceType.java index bc54190..2292046 100644 --- a/src/main/java/ast/type/type/ReferenceType.java +++ b/src/main/java/ast/type/type/ReferenceType.java @@ -1,8 +1,8 @@ package ast.type.type; -public class ReferenceType implements ITypeNode { +public class ReferenceType implements ITypeNode{ - public final String identifier; + private String identifier; public ReferenceType(String identifier) { this.identifier = identifier; @@ -22,8 +22,11 @@ public class ReferenceType implements ITypeNode { return false; ReferenceType other = (ReferenceType) obj; if (identifier == null) { - return other.identifier == null; - } else return identifier.equals(other.identifier); + if (other.identifier != null) + return false; + } else if (!identifier.equals(other.identifier)) + return false; + return true; } diff --git a/src/main/java/ast/type/type/TypeEnum.java b/src/main/java/ast/type/type/TypeEnum.java index 292800c..d46fac3 100644 --- a/src/main/java/ast/type/type/TypeEnum.java +++ b/src/main/java/ast/type/type/TypeEnum.java @@ -4,5 +4,6 @@ public enum TypeEnum { VOID, INT, CHAR, - BOOL + BOOL; + } diff --git a/src/main/java/bytecode/ByteCodeGenerator.java b/src/main/java/bytecode/ByteCodeGenerator.java index 9978ec7..dc47a4f 100644 --- a/src/main/java/bytecode/ByteCodeGenerator.java +++ b/src/main/java/bytecode/ByteCodeGenerator.java @@ -17,9 +17,9 @@ public class ByteCodeGenerator implements ProgramVisitor { private JarOutputStream jarOutputStream; private ByteArrayOutputStream byteArrayOutputStream; - private final String outputDirectory; - private final boolean generateJar; - private final boolean generateClassFiles; + private String outputDirectory; + private boolean generateJar; + private boolean generateClassFiles; public ByteCodeGenerator(String outputDirectory, boolean generateJar, boolean generateClassFiles) { this.outputDirectory = outputDirectory; diff --git a/src/main/java/bytecode/ClassCodeGen.java b/src/main/java/bytecode/ClassCodeGen.java index 93c5dff..2173158 100644 --- a/src/main/java/bytecode/ClassCodeGen.java +++ b/src/main/java/bytecode/ClassCodeGen.java @@ -19,12 +19,12 @@ import java.util.jar.JarOutputStream; public class ClassCodeGen implements ClassVisitor { - private final Mapper mapper; + private Mapper mapper; private ClassWriter classWriter; - private final JarOutputStream jarOutputStream; - private final String outputDirectory; - private final boolean generateJar; - private final boolean generateClassFiles; + private JarOutputStream jarOutputStream; + private String outputDirectory; + private boolean generateJar; + private boolean generateClassFiles; public ClassCodeGen(JarOutputStream jarOutputStream, String outputDirectory, boolean generateJar, boolean generateClassFiles) { this.mapper = new Mapper(); diff --git a/src/main/java/bytecode/MethodCodeGen.java b/src/main/java/bytecode/MethodCodeGen.java index f6d1f7c..83e53f4 100644 --- a/src/main/java/bytecode/MethodCodeGen.java +++ b/src/main/java/bytecode/MethodCodeGen.java @@ -33,11 +33,11 @@ import static org.objectweb.asm.Opcodes.*; public class MethodCodeGen implements bytecode.visitor.MethodVisitor { - private final ClassWriter classWriter; - private final Mapper mapper; + private ClassWriter classWriter; + private Mapper mapper; private MethodVisitor methodVisitor; - private final List localVariables; + private List localVariables; public MethodCodeGen(ClassWriter classWriter) { this.classWriter = classWriter; @@ -154,8 +154,8 @@ public class MethodCodeGen implements bytecode.visitor.MethodVisitor { if (dotNode.dotExpression != null) { dotNode.dotExpression.accept(this); } - if (dotNode.dotSubtractionExpression != null) { - dotNode.dotSubtractionExpression.accept(this); + if (dotNode.dotSubstractionExpression != null) { + dotNode.dotSubstractionExpression.accept(this); } if (dotNode.operator != null) { switch (dotNode.operator) { @@ -173,17 +173,17 @@ public class MethodCodeGen implements bytecode.visitor.MethodVisitor { } @Override - public void visit(DotSubtractionNode dotSubtractionNode) { - if (dotSubtractionNode.value != null) { - dotSubtractionNode.value.accept(this); - } else if (dotSubtractionNode.identifier != null) { - methodVisitor.visitVarInsn(ILOAD, localVariables.indexOf(dotSubtractionNode.identifier)); - } else if (dotSubtractionNode.memberAccess != null) { - dotSubtractionNode.memberAccess.accept(this); - } else if (dotSubtractionNode.methodCall != null) { - dotSubtractionNode.methodCall.accept(this); - } else if (dotSubtractionNode.calculationExpression != null) { - dotSubtractionNode.calculationExpression.accept(this); + public void visit(DotSubstractionNode dotSubstractionNode) { + if (dotSubstractionNode.value != null) { + dotSubstractionNode.value.accept(this); + } else if (dotSubstractionNode.identifier != null) { + methodVisitor.visitVarInsn(ILOAD, localVariables.indexOf(dotSubstractionNode.identifier)); + } else if (dotSubstractionNode.memberAccess != null) { + dotSubstractionNode.memberAccess.accept(this); + } else if (dotSubstractionNode.methodCall != null) { + dotSubstractionNode.methodCall.accept(this); + } else if (dotSubstractionNode.calculationExpression != null) { + dotSubstractionNode.calculationExpression.accept(this); } } @@ -423,7 +423,8 @@ public class MethodCodeGen implements bytecode.visitor.MethodVisitor { assignLocalVar(assignNode); incrementNode.accept(this); } - } else if (assignNode.expression instanceof DecrementNode decrementNode) { + } else if (assignNode.expression instanceof DecrementNode) { + DecrementNode decrementNode = (DecrementNode) assignNode.expression; if (decrementNode.crementType.equals(CrementType.PREFIX)) { decrementNode.accept(this); assignLocalVar(assignNode); @@ -520,9 +521,9 @@ public class MethodCodeGen implements bytecode.visitor.MethodVisitor { if(incrementNode.assignableExpression.memberAccess != null) { incrementNode.assignableExpression.memberAccess.accept(this); } else { - if(assignNode.assignable.typeNode instanceof BaseType) { + if(assignNode.assignable.getTypeNode() instanceof BaseType) { methodVisitor.visitVarInsn(ILOAD, localVariables.indexOf(assignNode.assignable.identifier)); - } else if(assignNode.assignable.typeNode instanceof ReferenceType) { + } else if(assignNode.assignable.getTypeNode() instanceof ReferenceType) { methodVisitor.visitVarInsn(ALOAD, localVariables.indexOf(assignNode.assignable.identifier)); } } @@ -531,9 +532,9 @@ public class MethodCodeGen implements bytecode.visitor.MethodVisitor { if(decrementNode.assignableExpression.memberAccess != null) { decrementNode.assignableExpression.memberAccess.accept(this); } else { - if(assignNode.assignable.typeNode instanceof BaseType) { + if(assignNode.assignable.getTypeNode() instanceof BaseType) { methodVisitor.visitVarInsn(ILOAD, localVariables.indexOf(assignNode.assignable.identifier)); - } else if(assignNode.assignable.typeNode instanceof ReferenceType) { + } else if(assignNode.assignable.getTypeNode() instanceof ReferenceType) { methodVisitor.visitVarInsn(ALOAD, localVariables.indexOf(assignNode.assignable.identifier)); } } diff --git a/src/main/java/bytecode/visitor/MethodVisitor.java b/src/main/java/bytecode/visitor/MethodVisitor.java index 8752b51..f63400c 100644 --- a/src/main/java/bytecode/visitor/MethodVisitor.java +++ b/src/main/java/bytecode/visitor/MethodVisitor.java @@ -8,38 +8,32 @@ import ast.members.ConstructorNode; import ast.members.MainMethodNode; import ast.members.MethodNode; import ast.statementexpressions.AssignNode; +import ast.statementexpressions.AssignableNode; import ast.statementexpressions.NewDeclarationNode; import ast.statementexpressions.crementexpressions.DecrementNode; import ast.statementexpressions.crementexpressions.IncrementNode; import ast.statementexpressions.methodcallstatementnexpressions.ChainedMethodNode; import ast.statementexpressions.methodcallstatementnexpressions.MethodCallNode; +import ast.statementexpressions.methodcallstatementnexpressions.TargetNode; import ast.statements.*; import ast.type.ValueNode; public interface MethodVisitor { // members void visit(ConstructorNode constructorNode); - void visit(MethodNode methodNode); - void visit(MainMethodNode mainMethodNode); // Binary expressions void visit(BinaryNode binaryNode); - void visit(CalculationNode calculationNode); - void visit(DotNode dotNode); - - void visit(DotSubtractionNode dotSubtractionNode); - + void visit(DotSubstractionNode dotSubstractionNode); void visit(NonCalculationNode nonCalculationNode); // Unary expressions void visit(MemberAccessNode memberAccessNode); - void visit(NotNode notExpressionNode); - void visit(UnaryNode unaryExpressionNode); // statements @@ -49,16 +43,13 @@ public interface MethodVisitor { void visit(DecrementNode decrementNode); void visit(LocalVariableDeclarationNode localVariableDeclarationNode); - void visit(ReturnNode returnNode); - void visit(WhileNode whileNode); // statement expression void visit(MethodCallNode methodCallNode); void visit(AssignNode assignNode); - void visit(NewDeclarationNode newDeclarationNode); // type diff --git a/src/main/java/bytecode/visitor/ProgramVisitor.java b/src/main/java/bytecode/visitor/ProgramVisitor.java index 857a9e0..d569ec6 100644 --- a/src/main/java/bytecode/visitor/ProgramVisitor.java +++ b/src/main/java/bytecode/visitor/ProgramVisitor.java @@ -3,5 +3,5 @@ package bytecode.visitor; import ast.ProgramNode; public interface ProgramVisitor { - void visit(ProgramNode programNode); + void visit(ProgramNode programNode); } diff --git a/src/main/java/main/Main.java b/src/main/java/main/Main.java index a596fae..5f1395b 100644 --- a/src/main/java/main/Main.java +++ b/src/main/java/main/Main.java @@ -17,10 +17,10 @@ import java.util.Optional; /** - * Start miniCompiler using make: + * Start Raupenpiler using make: *

cd .\src\test\ - *

make clean compile-miniCompiler - *

Start miniCompiler using jar: + *

make clean compile-raupenpiler + *

Start Raupenpiler using jar: *

java.exe -DgenJar=true_OR_false -DgenClass=true_OR_false -jar path_to_jar\JavaCompiler-1.0-jar-with-dependencies.jar 'path_to_input_file.java' 'path_to_output_directory' *

Example (jar needs to be in the target directory, compile with make or mvn package first): * java.exe -DgenJar=true -DgenClass=true -jar .\target\JavaCompiler-1.0-jar-with-dependencies.jar 'src/main/resources/input/CompilerInput.java' 'src/main/resources/output' @@ -40,6 +40,16 @@ public class Main { System.err.println("Error reading the file: " + e.getMessage()); } } + /* !!! Else Branch (main ohne args starten) ist nicht zur Verwendung vorgesehen, immer mit args starten !!! + else { + try { + CharStream codeCharStream = CharStreams.fromPath(Paths.get("src/main/resources/input/CompilerInput.java")); + compileFile(codeCharStream); + } catch (IOException e) { + System.err.println("Error reading the file: " + e.getMessage()); + } + } + */ } /** @@ -56,7 +66,7 @@ public class Main { */ static void compileFile(CharStream inputCharStream, String outputDirectoryPath) { // Initialize the logger - new MiniCompilerLogger(); + new RaupenLogger(); /* ------------------------- Scanner -> tokens ------------------------- */ // Use the SimpleJavaLexer to tokenize the input CharStream @@ -64,27 +74,27 @@ public class Main { CommonTokenStream tokenStream = new CommonTokenStream(lexer); tokenStream.fill(); // Log the tokens - MiniCompilerLogger.logScanner(tokenStream); + RaupenLogger.logScanner(tokenStream); /*------------------------- Parser -> Parsetree -------------------------*/ // Use the SimpleJavaParser to parse the tokens and generate a ParseTree SimpleJavaParser parser = new SimpleJavaParser(tokenStream); ParseTree parseTree = parser.program(); // parse the input // Log the ParseTree - MiniCompilerLogger.logParser(parseTree, parser); + RaupenLogger.logParser(parseTree, parser); /*------------------------- AST builder -> AST -------------------------*/ // Use the ASTBuilder to visit the ParseTree and generate an Abstract Syntax Tree (AST) ASTBuilder astBuilder = new ASTBuilder(); ASTNode abstractSyntaxTree = astBuilder.visit(parseTree); // Log the AST - MiniCompilerLogger.logAST(abstractSyntaxTree); + RaupenLogger.logAST(abstractSyntaxTree); /*------------------------- Semantic Analyzer -> typed AST -------------------------*/ // Use the SemanticAnalyzer to generate a typed AST ASTNode typedAst = SemanticAnalyzer.generateTast(abstractSyntaxTree); // Log the typed AST - MiniCompilerLogger.logSemanticAnalyzer(typedAst); + RaupenLogger.logSemanticAnalyzer(typedAst); if(SemanticAnalyzer.errors.isEmpty()){ /*------------------------- Bytecode Generator -> Bytecode -------------------------*/ @@ -97,7 +107,7 @@ public class Main { assert typedAst != null; byteCodeGenerator.visit((ProgramNode) typedAst); // Log the bytecode generation - MiniCompilerLogger.logBytecodeGenerator(); + RaupenLogger.logBytecodeGenerator(); } else { for(Exception exception : SemanticAnalyzer.errors){ exception.printStackTrace(); diff --git a/src/main/java/main/MiniCompilerLogger.java b/src/main/java/main/RaupenLogger.java similarity index 96% rename from src/main/java/main/MiniCompilerLogger.java rename to src/main/java/main/RaupenLogger.java index f2314a1..90bc7e2 100644 --- a/src/main/java/main/MiniCompilerLogger.java +++ b/src/main/java/main/RaupenLogger.java @@ -29,11 +29,11 @@ import java.util.logging.*; * consoleHandler.setLevel(Level.OFF); * fileHandler.setLevel(Level.ALL); */ -public class MiniCompilerLogger { +public class RaupenLogger { - static Logger logger = Logger.getLogger("miniCompilerLogs"); + static Logger logger = Logger.getLogger("RaupenLogs"); - public MiniCompilerLogger() { + public RaupenLogger() { // ------------------------- Logging ------------------------- logger.setLevel(Level.ALL); logger.getParent().getHandlers()[0].setLevel(Level.ALL); @@ -66,7 +66,7 @@ public class MiniCompilerLogger { logger.addHandler(consoleHandler); // Configure file handler - Handler fileHandler = new FileHandler("src/main/resources/logs/miniCompiler.log"); + Handler fileHandler = new FileHandler("src/main/resources/logs/RaupenLog.log"); // Toggle file logging on/off fileHandler.setLevel(Level.ALL); fileHandler.setFormatter(new CustomFormatter()); @@ -117,7 +117,7 @@ public class MiniCompilerLogger { public static void logBytecodeGenerator() { // Printing the bytecode logger.info("-------------------- Bytecode Generator -> Bytecode --------------------"); - logger.info("Bytecode generated without errors."); + logger.info("Bytecode generated"); logger.info("\n"); } diff --git a/src/main/java/parser/astBuilder/ASTBuilder.java b/src/main/java/parser/astBuilder/ASTBuilder.java index ef409f6..7e8f0e0 100644 --- a/src/main/java/parser/astBuilder/ASTBuilder.java +++ b/src/main/java/parser/astBuilder/ASTBuilder.java @@ -211,8 +211,8 @@ public class ASTBuilder extends SimpleJavaBaseVisitor { WhileNode While = new WhileNode(condition, doBlock); BlockNode resultBlock = new BlockNode(); - resultBlock.addStatement(doBlock); - resultBlock.addStatement(While); + resultBlock.addStatement((IStatementNode) doBlock); + resultBlock.addStatement((IStatementNode) While); return resultBlock; } @@ -253,7 +253,7 @@ public class ASTBuilder extends SimpleJavaBaseVisitor { // Prä-Inkrement: Das Inkrement kommt vor dem Block if (crement != null && isPrefix) { - whileBody.addStatement(crement); + whileBody.addStatement((IStatementNode) crement); } // Block Statements der For-Schleife in den While-Block kopieren @@ -263,7 +263,7 @@ public class ASTBuilder extends SimpleJavaBaseVisitor { // Post-Inkrement: Das Inkrement kommt nach dem Block if (crement != null && !isPrefix) { - whileBody.addStatement(crement); + whileBody.addStatement((IStatementNode) crement); } // Bedingung der While-Schleife @@ -273,7 +273,7 @@ public class ASTBuilder extends SimpleJavaBaseVisitor { BlockNode resultBlock = new BlockNode(); for (IStatementNode statement : statements) { - resultBlock.addStatement(statement); + resultBlock.addStatement((IStatementNode) statement); } return resultBlock; @@ -559,9 +559,9 @@ public class ASTBuilder extends SimpleJavaBaseVisitor { @Override public ASTNode visitDotExpression(SimpleJavaParser.DotExpressionContext ctx) { if(ctx.dotExpression() != null) { - return new DotNode((DotNode) visit(ctx.dotExpression()), ctx.DotOperator().getText(), (DotSubtractionNode) visit(ctx.dotSubtractionExpression())); + return new DotNode((DotNode) visit(ctx.dotExpression()), ctx.DotOperator().getText(), (DotSubstractionNode) visit(ctx.dotSubtractionExpression())); } else if(ctx.dotSubtractionExpression() != null) { - return new DotNode((DotSubtractionNode) visit(ctx.dotSubtractionExpression())); + return new DotNode((DotSubstractionNode) visit(ctx.dotSubtractionExpression())); } return null; } @@ -569,13 +569,13 @@ public class ASTBuilder extends SimpleJavaBaseVisitor { @Override public ASTNode visitDotSubtractionExpression(SimpleJavaParser.DotSubtractionExpressionContext ctx) { if(ctx.IntValue() != null) { - return new DotSubtractionNode(new ValueNode(EnumValueNode.INT_VALUE, ctx.IntValue().getText())); + return new DotSubstractionNode(new ValueNode(EnumValueNode.INT_VALUE, ctx.IntValue().getText())); } else if(ctx.Identifier() != null) { - return new DotSubtractionNode(ctx.Identifier().getText()); + return new DotSubstractionNode(ctx.Identifier().getText()); } else if(ctx.memberAccess() != null) { - return new DotSubtractionNode((MemberAccessNode) visit(ctx.memberAccess())); + return new DotSubstractionNode((MemberAccessNode) visit(ctx.memberAccess())); } else if(ctx.methodCall() != null && ctx.calculationExpression() != null) { - return new DotSubtractionNode((MethodCallNode) visit(ctx.methodCall()), (CalculationNode) visit(ctx.calculationExpression())); + return new DotSubstractionNode((MethodCallNode) visit(ctx.methodCall()), (CalculationNode) visit(ctx.calculationExpression())); } return null; } diff --git a/src/main/java/semantic/Scope.java b/src/main/java/semantic/Scope.java index 955e31f..b6b40c4 100644 --- a/src/main/java/semantic/Scope.java +++ b/src/main/java/semantic/Scope.java @@ -8,7 +8,7 @@ import java.util.Stack; public class Scope { - private final Stack> localVars; + private Stack> localVars; public Scope() { localVars = new Stack>(); diff --git a/src/main/java/semantic/SemanticAnalyzer.java b/src/main/java/semantic/SemanticAnalyzer.java index 09ab26b..8146052 100644 --- a/src/main/java/semantic/SemanticAnalyzer.java +++ b/src/main/java/semantic/SemanticAnalyzer.java @@ -33,7 +33,7 @@ import com.sun.jdi.IntegerType; import semantic.context.ClassContext; import semantic.context.Context; import semantic.exceptions.*; -import semantic.TypeCheckResult; +import typechecker.TypeCheckResult; public class SemanticAnalyzer implements SemanticVisitor { @@ -480,8 +480,8 @@ public class SemanticAnalyzer implements SemanticVisitor { @Override public TypeCheckResult analyze(DotNode toCheck) { - if (toCheck.dotSubtractionExpression != null) { - var result = toCheck.dotSubtractionExpression.accept(this); + if (toCheck.dotSubstractionExpression != null) { + var result = toCheck.dotSubstractionExpression.accept(this); toCheck.setType(result.getType()); return result; } @@ -489,7 +489,7 @@ public class SemanticAnalyzer implements SemanticVisitor { } @Override - public TypeCheckResult analyze(DotSubtractionNode toCheck) { + public TypeCheckResult analyze(DotSubstractionNode toCheck) { if (toCheck.value != null) { var result = toCheck.value.accept(this); toCheck.setType(result.getType()); diff --git a/src/main/java/semantic/SemanticVisitor.java b/src/main/java/semantic/SemanticVisitor.java index 7d57189..0c979ca 100644 --- a/src/main/java/semantic/SemanticVisitor.java +++ b/src/main/java/semantic/SemanticVisitor.java @@ -15,6 +15,7 @@ import ast.statementexpressions.methodcallstatementnexpressions.MethodCallNode; import ast.statementexpressions.methodcallstatementnexpressions.TargetNode; import ast.statements.*; import ast.type.ValueNode; +import typechecker.TypeCheckResult; public interface SemanticVisitor { @@ -60,7 +61,7 @@ public interface SemanticVisitor { TypeCheckResult analyze(DotNode toCheck); - TypeCheckResult analyze(DotSubtractionNode toCheck); + TypeCheckResult analyze(DotSubstractionNode toCheck); TypeCheckResult analyze(NonCalculationNode toCheck); diff --git a/src/main/java/semantic/context/ClassContext.java b/src/main/java/semantic/context/ClassContext.java index 35600b0..b9e39a4 100644 --- a/src/main/java/semantic/context/ClassContext.java +++ b/src/main/java/semantic/context/ClassContext.java @@ -9,8 +9,8 @@ import java.util.HashMap; public class ClassContext { - private final HashMap fields; - private final ArrayList methods = new ArrayList<>(); + private HashMap fields; + private ArrayList methods = new ArrayList<>(); public ClassContext(ClassNode classNode) { diff --git a/src/main/java/semantic/context/Context.java b/src/main/java/semantic/context/Context.java index cf4eb95..4b20c8f 100644 --- a/src/main/java/semantic/context/Context.java +++ b/src/main/java/semantic/context/Context.java @@ -5,7 +5,7 @@ import java.util.HashMap; public class Context { - private final HashMap classes; + private HashMap classes; public Context(ProgramNode programNode) { classes = new HashMap<>(); diff --git a/src/main/java/semantic/context/FieldContext.java b/src/main/java/semantic/context/FieldContext.java index 8a32915..aba5ba0 100644 --- a/src/main/java/semantic/context/FieldContext.java +++ b/src/main/java/semantic/context/FieldContext.java @@ -6,8 +6,8 @@ import ast.type.type.*; public class FieldContext { - private final AccessModifierNode accessModifier; - private final ITypeNode type; + private AccessModifierNode accessModifier; + private ITypeNode type; public FieldContext(FieldNode field) { accessModifier = field.accessTypeNode; diff --git a/src/main/java/semantic/TypeCheckResult.java b/src/main/java/typechecker/TypeCheckResult.java similarity index 72% rename from src/main/java/semantic/TypeCheckResult.java rename to src/main/java/typechecker/TypeCheckResult.java index eb667ee..f52818d 100644 --- a/src/main/java/semantic/TypeCheckResult.java +++ b/src/main/java/typechecker/TypeCheckResult.java @@ -1,23 +1,23 @@ -package semantic; - - -import ast.type.type.ITypeNode; - -public class TypeCheckResult { - - private final boolean valid; - private final ITypeNode type; - - public TypeCheckResult(boolean valid, ITypeNode type) { - this.valid = valid; - this.type = type; - } - - public boolean isValid() { - return valid; - } - - public ITypeNode getType() { - return type; - } +package typechecker; + + +import ast.type.type.ITypeNode; + +public class TypeCheckResult { + + private boolean valid; + private ITypeNode type; + + public TypeCheckResult(boolean valid, ITypeNode type) { + this.valid = valid; + this.type = type; + } + + public boolean isValid() { + return valid; + } + + public ITypeNode getType() { + return type; + } } \ No newline at end of file diff --git a/src/main/java/visitor/Visitable.java b/src/main/java/visitor/Visitable.java index 6e22b41..bd69777 100644 --- a/src/main/java/visitor/Visitable.java +++ b/src/main/java/visitor/Visitable.java @@ -4,7 +4,7 @@ import bytecode.visitor.ClassVisitor; import bytecode.visitor.MethodVisitor; import bytecode.visitor.ProgramVisitor; import semantic.SemanticVisitor; -import semantic.TypeCheckResult; +import typechecker.TypeCheckResult; public interface Visitable { default void accept(ProgramVisitor programVisitor) { diff --git a/src/test/Makefile b/src/test/Makefile index 1fc9648..54c905d 100644 --- a/src/test/Makefile +++ b/src/test/Makefile @@ -2,17 +2,17 @@ ### IntelliJs play buttons do not work. Run in "src/test" folder with "make" command to run all ### Or run only parts with "make compile-javac", "make clean" etc. -all: compile-javac compile-miniCompiler +all: compile-javac compile-raupenpiler compile-javac: javac -d .\resources\output\javac .\resources\input\CompilerInput.java -compile-miniCompiler: +compile-raupenpiler: cd ../.. ; mvn -DskipTests install cd ../.. ; mvn exec:java -DgenJar=true -DgenClass=true -Dexec.mainClass="main.Main" -Dexec.args="'src/main/resources/input/CompilerInput.java' 'src/main/resources/output'" - # cp ../main/resources/output/CompilerInput.class .java/resources/output/miniCompiler + # cp ../main/resources/output/CompilerInput.class .java/resources/output/raupenpiler -test-miniCompiler: +test-raupenpiler: # move the compiled class to the test/main folder mv ../main/resources/output/CompilerInput.class .java/main/ # compile the test class @@ -28,8 +28,8 @@ clean: rm -f ../main/resources/output/*.jar # clean resources output folders rm -f ./resources/output/javac/*.class - rm -f ./resources/output/miniCompiler/*.class - rm -f ./resources/output/miniCompiler/*.jar + rm -f ./resources/output/raupenpiler/*.class + rm -f ./resources/output/raupenpiler/*.jar # clean logs rm -f ../main/resources/logs/* # clean test/java/main folders from .class files for End-to-End tests diff --git a/src/test/java/main/E2EReflectionsTest.java b/src/test/java/main/E2EReflectionsTest.java index 28c95ed..78d479d 100644 --- a/src/test/java/main/E2EReflectionsTest.java +++ b/src/test/java/main/E2EReflectionsTest.java @@ -22,8 +22,8 @@ public class E2EReflectionsTest { public void CharTest() { final String FILE_NAME = "Char"; try { - // compile with miniCompiler - Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/miniCompiler"}); + // compile with raupenpiler + Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/raupenpiler"}); // Get the system Java compiler JavaCompiler javac = ToolProvider.getSystemJavaCompiler(); // Assert that the compiler is available @@ -37,28 +37,28 @@ public class E2EReflectionsTest { ClassLoader javacClassLoader = new java.net.URLClassLoader(new java.net.URL[]{javacClassPath.toUri().toURL()}); Class javacLoadedClass = javacClassLoader.loadClass(FILE_NAME); - // Load the miniCompiler class - Path miniCompilerClassPath = Paths.get("src/test/resources/output/miniCompiler"); - ClassLoader miniCompilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{miniCompilerClassPath.toUri().toURL()}); - Class miniCompilerLoadedClass = miniCompilerClassLoader.loadClass(FILE_NAME); + // Load the raupenpiler class + Path raupenpilerClassPath = Paths.get("src/test/resources/output/raupenpiler"); + ClassLoader raupenpilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{raupenpilerClassPath.toUri().toURL()}); + Class raupenpilerLoadedClass = raupenpilerClassLoader.loadClass(FILE_NAME); // Class Name assertEquals(FILE_NAME, javacLoadedClass.getName()); - assertEquals(FILE_NAME, miniCompilerLoadedClass.getName()); + assertEquals(FILE_NAME, raupenpilerLoadedClass.getName()); // Constructors Constructor[] javacConstructors = javacLoadedClass.getDeclaredConstructors(); - Constructor[] miniCompilerConstructors = miniCompilerLoadedClass.getDeclaredConstructors(); + Constructor[] raupenpilerConstructors = raupenpilerLoadedClass.getDeclaredConstructors(); - assertEquals(javacConstructors.length, miniCompilerConstructors.length); + assertEquals(javacConstructors.length, raupenpilerConstructors.length); for(Constructor c : javacConstructors) { - for(Constructor miniCompilerConstructor : miniCompilerConstructors) { - assertEquals(c.getParameterCount(), miniCompilerConstructor.getParameterCount()); - if (c.getParameterCount() == miniCompilerConstructor.getParameterCount()) { - assertEquals(c.getName(), miniCompilerConstructor.getName()); + for(Constructor raupenpilerConstructor : raupenpilerConstructors) { + assertEquals(c.getParameterCount(), raupenpilerConstructor.getParameterCount()); + if (c.getParameterCount() == raupenpilerConstructor.getParameterCount()) { + assertEquals(c.getName(), raupenpilerConstructor.getName()); } } } @@ -66,29 +66,29 @@ public class E2EReflectionsTest { // Methods Method[] javacMethods = javacLoadedClass.getDeclaredMethods(); - Method[] miniCompilerMethods = miniCompilerLoadedClass.getDeclaredMethods(); + Method[] raupenpilerMethods = raupenpilerLoadedClass.getDeclaredMethods(); - assertEquals(javacMethods.length, miniCompilerMethods.length); + assertEquals(javacMethods.length, raupenpilerMethods.length); for (int i = 0; i < javacMethods.length; i++) { - assertEquals(javacMethods[i].getName(), miniCompilerMethods[i].getName()); - assertEquals(javacMethods[i].getReturnType(), miniCompilerMethods[i].getReturnType()); - assertEquals(javacMethods[i].getParameterCount(), miniCompilerMethods[i].getParameterCount()); - // assertEquals(javacMethods[i].getModifiers(), miniCompilerMethods[i].getModifiers()); + assertEquals(javacMethods[i].getName(), raupenpilerMethods[i].getName()); + assertEquals(javacMethods[i].getReturnType(), raupenpilerMethods[i].getReturnType()); + assertEquals(javacMethods[i].getParameterCount(), raupenpilerMethods[i].getParameterCount()); + // assertEquals(javacMethods[i].getModifiers(), raupenpilerMethods[i].getModifiers()); } // Fields Field[] javacLoadedClassDeclaredFields = javacLoadedClass.getDeclaredFields(); - Field[] miniCompilerLoadedClassDeclaredFields = miniCompilerLoadedClass.getDeclaredFields(); + Field[] raupenpilerLoadedClassDeclaredFields = raupenpilerLoadedClass.getDeclaredFields(); - assertEquals(javacLoadedClassDeclaredFields.length, miniCompilerLoadedClassDeclaredFields.length); + assertEquals(javacLoadedClassDeclaredFields.length, raupenpilerLoadedClassDeclaredFields.length); for (Field field : javacLoadedClassDeclaredFields) { - for (Field miniCompilerField : miniCompilerLoadedClassDeclaredFields) { - if (field.getName().equals(miniCompilerField.getName())) { - assertEquals(field.getType(), miniCompilerField.getType()); - // assertEquals(field.getModifiers(), miniCompilerField.getModifiers()); + for (Field raupenpilerField : raupenpilerLoadedClassDeclaredFields) { + if (field.getName().equals(raupenpilerField.getName())) { + assertEquals(field.getType(), raupenpilerField.getType()); + // assertEquals(field.getModifiers(), raupenpilerField.getModifiers()); } } } @@ -104,8 +104,8 @@ public class E2EReflectionsTest { public void CommentsTest() { final String FILE_NAME = "Comments"; try { - // compile with miniCompiler - Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/miniCompiler"}); + // compile with raupenpiler + Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/raupenpiler"}); // Get the system Java compiler JavaCompiler javac = ToolProvider.getSystemJavaCompiler(); // Assert that the compiler is available @@ -119,28 +119,28 @@ public class E2EReflectionsTest { ClassLoader javacClassLoader = new java.net.URLClassLoader(new java.net.URL[]{javacClassPath.toUri().toURL()}); Class javacLoadedClass = javacClassLoader.loadClass(FILE_NAME); - // Load the miniCompiler class - Path miniCompilerClassPath = Paths.get("src/test/resources/output/miniCompiler"); - ClassLoader miniCompilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{miniCompilerClassPath.toUri().toURL()}); - Class miniCompilerLoadedClass = miniCompilerClassLoader.loadClass(FILE_NAME); + // Load the raupenpiler class + Path raupenpilerClassPath = Paths.get("src/test/resources/output/raupenpiler"); + ClassLoader raupenpilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{raupenpilerClassPath.toUri().toURL()}); + Class raupenpilerLoadedClass = raupenpilerClassLoader.loadClass(FILE_NAME); // Class Name assertEquals(FILE_NAME, javacLoadedClass.getName()); - assertEquals(FILE_NAME, miniCompilerLoadedClass.getName()); + assertEquals(FILE_NAME, raupenpilerLoadedClass.getName()); // Constructors Constructor[] javacConstructors = javacLoadedClass.getDeclaredConstructors(); - Constructor[] miniCompilerConstructors = miniCompilerLoadedClass.getDeclaredConstructors(); + Constructor[] raupenpilerConstructors = raupenpilerLoadedClass.getDeclaredConstructors(); - assertEquals(javacConstructors.length, miniCompilerConstructors.length); + assertEquals(javacConstructors.length, raupenpilerConstructors.length); for(Constructor c : javacConstructors) { - for(Constructor miniCompilerConstructor : miniCompilerConstructors) { - assertEquals(c.getParameterCount(), miniCompilerConstructor.getParameterCount()); - if (c.getParameterCount() == miniCompilerConstructor.getParameterCount()) { - assertEquals(c.getName(), miniCompilerConstructor.getName()); + for(Constructor raupenpilerConstructor : raupenpilerConstructors) { + assertEquals(c.getParameterCount(), raupenpilerConstructor.getParameterCount()); + if (c.getParameterCount() == raupenpilerConstructor.getParameterCount()) { + assertEquals(c.getName(), raupenpilerConstructor.getName()); } } } @@ -148,29 +148,29 @@ public class E2EReflectionsTest { // Methods Method[] javacMethods = javacLoadedClass.getDeclaredMethods(); - Method[] miniCompilerMethods = miniCompilerLoadedClass.getDeclaredMethods(); + Method[] raupenpilerMethods = raupenpilerLoadedClass.getDeclaredMethods(); - assertEquals(javacMethods.length, miniCompilerMethods.length); + assertEquals(javacMethods.length, raupenpilerMethods.length); for (int i = 0; i < javacMethods.length; i++) { - assertEquals(javacMethods[i].getName(), miniCompilerMethods[i].getName()); - assertEquals(javacMethods[i].getReturnType(), miniCompilerMethods[i].getReturnType()); - assertEquals(javacMethods[i].getParameterCount(), miniCompilerMethods[i].getParameterCount()); - // assertEquals(javacMethods[i].getModifiers(), miniCompilerMethods[i].getModifiers()); + assertEquals(javacMethods[i].getName(), raupenpilerMethods[i].getName()); + assertEquals(javacMethods[i].getReturnType(), raupenpilerMethods[i].getReturnType()); + assertEquals(javacMethods[i].getParameterCount(), raupenpilerMethods[i].getParameterCount()); + // assertEquals(javacMethods[i].getModifiers(), raupenpilerMethods[i].getModifiers()); } // Fields Field[] javacLoadedClassDeclaredFields = javacLoadedClass.getDeclaredFields(); - Field[] miniCompilerLoadedClassDeclaredFields = miniCompilerLoadedClass.getDeclaredFields(); + Field[] raupenpilerLoadedClassDeclaredFields = raupenpilerLoadedClass.getDeclaredFields(); - assertEquals(javacLoadedClassDeclaredFields.length, miniCompilerLoadedClassDeclaredFields.length); + assertEquals(javacLoadedClassDeclaredFields.length, raupenpilerLoadedClassDeclaredFields.length); for (Field field : javacLoadedClassDeclaredFields) { - for (Field miniCompilerField : miniCompilerLoadedClassDeclaredFields) { - if (field.getName().equals(miniCompilerField.getName())) { - assertEquals(field.getType(), miniCompilerField.getType()); - // assertEquals(field.getModifiers(), miniCompilerField.getModifiers()); + for (Field raupenpilerField : raupenpilerLoadedClassDeclaredFields) { + if (field.getName().equals(raupenpilerField.getName())) { + assertEquals(field.getType(), raupenpilerField.getType()); + // assertEquals(field.getModifiers(), raupenpilerField.getModifiers()); } } } @@ -186,8 +186,8 @@ public class E2EReflectionsTest { public void ConstructorMethodCallTest() { final String FILE_NAME = "ConstructorMethodCall"; try { - // compile with miniCompiler - Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/miniCompiler"}); + // compile with raupenpiler + Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/raupenpiler"}); // Get the system Java compiler JavaCompiler javac = ToolProvider.getSystemJavaCompiler(); // Assert that the compiler is available @@ -201,28 +201,28 @@ public class E2EReflectionsTest { ClassLoader javacClassLoader = new java.net.URLClassLoader(new java.net.URL[]{javacClassPath.toUri().toURL()}); Class javacLoadedClass = javacClassLoader.loadClass(FILE_NAME); - // Load the miniCompiler class - Path miniCompilerClassPath = Paths.get("src/test/resources/output/miniCompiler"); - ClassLoader miniCompilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{miniCompilerClassPath.toUri().toURL()}); - Class miniCompilerLoadedClass = miniCompilerClassLoader.loadClass(FILE_NAME); + // Load the raupenpiler class + Path raupenpilerClassPath = Paths.get("src/test/resources/output/raupenpiler"); + ClassLoader raupenpilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{raupenpilerClassPath.toUri().toURL()}); + Class raupenpilerLoadedClass = raupenpilerClassLoader.loadClass(FILE_NAME); // Class Name assertEquals(FILE_NAME, javacLoadedClass.getName()); - assertEquals(FILE_NAME, miniCompilerLoadedClass.getName()); + assertEquals(FILE_NAME, raupenpilerLoadedClass.getName()); // Constructors Constructor[] javacConstructors = javacLoadedClass.getDeclaredConstructors(); - Constructor[] miniCompilerConstructors = miniCompilerLoadedClass.getDeclaredConstructors(); + Constructor[] raupenpilerConstructors = raupenpilerLoadedClass.getDeclaredConstructors(); - assertEquals(javacConstructors.length, miniCompilerConstructors.length); + assertEquals(javacConstructors.length, raupenpilerConstructors.length); for(Constructor c : javacConstructors) { - for(Constructor miniCompilerConstructor : miniCompilerConstructors) { - assertEquals(c.getParameterCount(), miniCompilerConstructor.getParameterCount()); - if (c.getParameterCount() == miniCompilerConstructor.getParameterCount()) { - assertEquals(c.getName(), miniCompilerConstructor.getName()); + for(Constructor raupenpilerConstructor : raupenpilerConstructors) { + assertEquals(c.getParameterCount(), raupenpilerConstructor.getParameterCount()); + if (c.getParameterCount() == raupenpilerConstructor.getParameterCount()) { + assertEquals(c.getName(), raupenpilerConstructor.getName()); } } } @@ -230,29 +230,29 @@ public class E2EReflectionsTest { // Methods Method[] javacMethods = javacLoadedClass.getDeclaredMethods(); - Method[] miniCompilerMethods = miniCompilerLoadedClass.getDeclaredMethods(); + Method[] raupenpilerMethods = raupenpilerLoadedClass.getDeclaredMethods(); - assertEquals(javacMethods.length, miniCompilerMethods.length); + assertEquals(javacMethods.length, raupenpilerMethods.length); for (int i = 0; i < javacMethods.length; i++) { - assertEquals(javacMethods[i].getName(), miniCompilerMethods[i].getName()); - assertEquals(javacMethods[i].getReturnType(), miniCompilerMethods[i].getReturnType()); - assertEquals(javacMethods[i].getParameterCount(), miniCompilerMethods[i].getParameterCount()); - // assertEquals(javacMethods[i].getModifiers(), miniCompilerMethods[i].getModifiers()); + assertEquals(javacMethods[i].getName(), raupenpilerMethods[i].getName()); + assertEquals(javacMethods[i].getReturnType(), raupenpilerMethods[i].getReturnType()); + assertEquals(javacMethods[i].getParameterCount(), raupenpilerMethods[i].getParameterCount()); + // assertEquals(javacMethods[i].getModifiers(), raupenpilerMethods[i].getModifiers()); } // Fields Field[] javacLoadedClassDeclaredFields = javacLoadedClass.getDeclaredFields(); - Field[] miniCompilerLoadedClassDeclaredFields = miniCompilerLoadedClass.getDeclaredFields(); + Field[] raupenpilerLoadedClassDeclaredFields = raupenpilerLoadedClass.getDeclaredFields(); - assertEquals(javacLoadedClassDeclaredFields.length, miniCompilerLoadedClassDeclaredFields.length); + assertEquals(javacLoadedClassDeclaredFields.length, raupenpilerLoadedClassDeclaredFields.length); for (Field field : javacLoadedClassDeclaredFields) { - for (Field miniCompilerField : miniCompilerLoadedClassDeclaredFields) { - if (field.getName().equals(miniCompilerField.getName())) { - assertEquals(field.getType(), miniCompilerField.getType()); - // assertEquals(field.getModifiers(), miniCompilerField.getModifiers()); + for (Field raupenpilerField : raupenpilerLoadedClassDeclaredFields) { + if (field.getName().equals(raupenpilerField.getName())) { + assertEquals(field.getType(), raupenpilerField.getType()); + // assertEquals(field.getModifiers(), raupenpilerField.getModifiers()); } } } @@ -268,8 +268,8 @@ public class E2EReflectionsTest { public void ConstructorMethodCallParametersTest() { final String FILE_NAME = "ConstructorMethodCallParameters"; try { - // compile with miniCompiler - Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/miniCompiler"}); + // compile with raupenpiler + Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/raupenpiler"}); // Get the system Java compiler JavaCompiler javac = ToolProvider.getSystemJavaCompiler(); // Assert that the compiler is available @@ -283,28 +283,28 @@ public class E2EReflectionsTest { ClassLoader javacClassLoader = new java.net.URLClassLoader(new java.net.URL[]{javacClassPath.toUri().toURL()}); Class javacLoadedClass = javacClassLoader.loadClass(FILE_NAME); - // Load the miniCompiler class - Path miniCompilerClassPath = Paths.get("src/test/resources/output/miniCompiler"); - ClassLoader miniCompilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{miniCompilerClassPath.toUri().toURL()}); - Class miniCompilerLoadedClass = miniCompilerClassLoader.loadClass(FILE_NAME); + // Load the raupenpiler class + Path raupenpilerClassPath = Paths.get("src/test/resources/output/raupenpiler"); + ClassLoader raupenpilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{raupenpilerClassPath.toUri().toURL()}); + Class raupenpilerLoadedClass = raupenpilerClassLoader.loadClass(FILE_NAME); // Class Name assertEquals(FILE_NAME, javacLoadedClass.getName()); - assertEquals(FILE_NAME, miniCompilerLoadedClass.getName()); + assertEquals(FILE_NAME, raupenpilerLoadedClass.getName()); // Constructors Constructor[] javacConstructors = javacLoadedClass.getDeclaredConstructors(); - Constructor[] miniCompilerConstructors = miniCompilerLoadedClass.getDeclaredConstructors(); + Constructor[] raupenpilerConstructors = raupenpilerLoadedClass.getDeclaredConstructors(); - assertEquals(javacConstructors.length, miniCompilerConstructors.length); + assertEquals(javacConstructors.length, raupenpilerConstructors.length); for(Constructor c : javacConstructors) { - for(Constructor miniCompilerConstructor : miniCompilerConstructors) { - assertEquals(c.getParameterCount(), miniCompilerConstructor.getParameterCount()); - if (c.getParameterCount() == miniCompilerConstructor.getParameterCount()) { - assertEquals(c.getName(), miniCompilerConstructor.getName()); + for(Constructor raupenpilerConstructor : raupenpilerConstructors) { + assertEquals(c.getParameterCount(), raupenpilerConstructor.getParameterCount()); + if (c.getParameterCount() == raupenpilerConstructor.getParameterCount()) { + assertEquals(c.getName(), raupenpilerConstructor.getName()); } } } @@ -312,29 +312,29 @@ public class E2EReflectionsTest { // Methods Method[] javacMethods = javacLoadedClass.getDeclaredMethods(); - Method[] miniCompilerMethods = miniCompilerLoadedClass.getDeclaredMethods(); + Method[] raupenpilerMethods = raupenpilerLoadedClass.getDeclaredMethods(); - assertEquals(javacMethods.length, miniCompilerMethods.length); + assertEquals(javacMethods.length, raupenpilerMethods.length); for (int i = 0; i < javacMethods.length; i++) { - assertEquals(javacMethods[i].getName(), miniCompilerMethods[i].getName()); - assertEquals(javacMethods[i].getReturnType(), miniCompilerMethods[i].getReturnType()); - assertEquals(javacMethods[i].getParameterCount(), miniCompilerMethods[i].getParameterCount()); - // assertEquals(javacMethods[i].getModifiers(), miniCompilerMethods[i].getModifiers()); + assertEquals(javacMethods[i].getName(), raupenpilerMethods[i].getName()); + assertEquals(javacMethods[i].getReturnType(), raupenpilerMethods[i].getReturnType()); + assertEquals(javacMethods[i].getParameterCount(), raupenpilerMethods[i].getParameterCount()); + // assertEquals(javacMethods[i].getModifiers(), raupenpilerMethods[i].getModifiers()); } // Fields Field[] javacLoadedClassDeclaredFields = javacLoadedClass.getDeclaredFields(); - Field[] miniCompilerLoadedClassDeclaredFields = miniCompilerLoadedClass.getDeclaredFields(); + Field[] raupenpilerLoadedClassDeclaredFields = raupenpilerLoadedClass.getDeclaredFields(); - assertEquals(javacLoadedClassDeclaredFields.length, miniCompilerLoadedClassDeclaredFields.length); + assertEquals(javacLoadedClassDeclaredFields.length, raupenpilerLoadedClassDeclaredFields.length); for (Field field : javacLoadedClassDeclaredFields) { - for (Field miniCompilerField : miniCompilerLoadedClassDeclaredFields) { - if (field.getName().equals(miniCompilerField.getName())) { - assertEquals(field.getType(), miniCompilerField.getType()); - // assertEquals(field.getModifiers(), miniCompilerField.getModifiers()); + for (Field raupenpilerField : raupenpilerLoadedClassDeclaredFields) { + if (field.getName().equals(raupenpilerField.getName())) { + assertEquals(field.getType(), raupenpilerField.getType()); + // assertEquals(field.getModifiers(), raupenpilerField.getModifiers()); } } } @@ -350,8 +350,8 @@ public class E2EReflectionsTest { public void ConstructorParameterTest() { final String FILE_NAME = "ConstructorParameter"; try { - // compile with miniCompiler - Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/miniCompiler"}); + // compile with raupenpiler + Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/raupenpiler"}); // Get the system Java compiler JavaCompiler javac = ToolProvider.getSystemJavaCompiler(); // Assert that the compiler is available @@ -365,28 +365,28 @@ public class E2EReflectionsTest { ClassLoader javacClassLoader = new java.net.URLClassLoader(new java.net.URL[]{javacClassPath.toUri().toURL()}); Class javacLoadedClass = javacClassLoader.loadClass(FILE_NAME); - // Load the miniCompiler class - Path miniCompilerClassPath = Paths.get("src/test/resources/output/miniCompiler"); - ClassLoader miniCompilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{miniCompilerClassPath.toUri().toURL()}); - Class miniCompilerLoadedClass = miniCompilerClassLoader.loadClass(FILE_NAME); + // Load the raupenpiler class + Path raupenpilerClassPath = Paths.get("src/test/resources/output/raupenpiler"); + ClassLoader raupenpilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{raupenpilerClassPath.toUri().toURL()}); + Class raupenpilerLoadedClass = raupenpilerClassLoader.loadClass(FILE_NAME); // Class Name assertEquals(FILE_NAME, javacLoadedClass.getName()); - assertEquals(FILE_NAME, miniCompilerLoadedClass.getName()); + assertEquals(FILE_NAME, raupenpilerLoadedClass.getName()); // Constructors Constructor[] javacConstructors = javacLoadedClass.getDeclaredConstructors(); - Constructor[] miniCompilerConstructors = miniCompilerLoadedClass.getDeclaredConstructors(); + Constructor[] raupenpilerConstructors = raupenpilerLoadedClass.getDeclaredConstructors(); - assertEquals(javacConstructors.length, miniCompilerConstructors.length); + assertEquals(javacConstructors.length, raupenpilerConstructors.length); for(Constructor c : javacConstructors) { - for(Constructor miniCompilerConstructor : miniCompilerConstructors) { - assertEquals(c.getParameterCount(), miniCompilerConstructor.getParameterCount()); - if (c.getParameterCount() == miniCompilerConstructor.getParameterCount()) { - assertEquals(c.getName(), miniCompilerConstructor.getName()); + for(Constructor raupenpilerConstructor : raupenpilerConstructors) { + assertEquals(c.getParameterCount(), raupenpilerConstructor.getParameterCount()); + if (c.getParameterCount() == raupenpilerConstructor.getParameterCount()) { + assertEquals(c.getName(), raupenpilerConstructor.getName()); } } } @@ -394,29 +394,29 @@ public class E2EReflectionsTest { // Methods Method[] javacMethods = javacLoadedClass.getDeclaredMethods(); - Method[] miniCompilerMethods = miniCompilerLoadedClass.getDeclaredMethods(); + Method[] raupenpilerMethods = raupenpilerLoadedClass.getDeclaredMethods(); - assertEquals(javacMethods.length, miniCompilerMethods.length); + assertEquals(javacMethods.length, raupenpilerMethods.length); for (int i = 0; i < javacMethods.length; i++) { - assertEquals(javacMethods[i].getName(), miniCompilerMethods[i].getName()); - assertEquals(javacMethods[i].getReturnType(), miniCompilerMethods[i].getReturnType()); - assertEquals(javacMethods[i].getParameterCount(), miniCompilerMethods[i].getParameterCount()); - // assertEquals(javacMethods[i].getModifiers(), miniCompilerMethods[i].getModifiers()); + assertEquals(javacMethods[i].getName(), raupenpilerMethods[i].getName()); + assertEquals(javacMethods[i].getReturnType(), raupenpilerMethods[i].getReturnType()); + assertEquals(javacMethods[i].getParameterCount(), raupenpilerMethods[i].getParameterCount()); + // assertEquals(javacMethods[i].getModifiers(), raupenpilerMethods[i].getModifiers()); } // Fields Field[] javacLoadedClassDeclaredFields = javacLoadedClass.getDeclaredFields(); - Field[] miniCompilerLoadedClassDeclaredFields = miniCompilerLoadedClass.getDeclaredFields(); + Field[] raupenpilerLoadedClassDeclaredFields = raupenpilerLoadedClass.getDeclaredFields(); - assertEquals(javacLoadedClassDeclaredFields.length, miniCompilerLoadedClassDeclaredFields.length); + assertEquals(javacLoadedClassDeclaredFields.length, raupenpilerLoadedClassDeclaredFields.length); for (Field field : javacLoadedClassDeclaredFields) { - for (Field miniCompilerField : miniCompilerLoadedClassDeclaredFields) { - if (field.getName().equals(miniCompilerField.getName())) { - assertEquals(field.getType(), miniCompilerField.getType()); - // assertEquals(field.getModifiers(), miniCompilerField.getModifiers()); + for (Field raupenpilerField : raupenpilerLoadedClassDeclaredFields) { + if (field.getName().equals(raupenpilerField.getName())) { + assertEquals(field.getType(), raupenpilerField.getType()); + // assertEquals(field.getModifiers(), raupenpilerField.getModifiers()); } } } @@ -432,8 +432,8 @@ public class E2EReflectionsTest { public void ConstructorThisDotTest() { final String FILE_NAME = "ConstructorThisDot"; try { - // compile with miniCompiler - Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/miniCompiler"}); + // compile with raupenpiler + Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/raupenpiler"}); // Get the system Java compiler JavaCompiler javac = ToolProvider.getSystemJavaCompiler(); // Assert that the compiler is available @@ -447,28 +447,28 @@ public class E2EReflectionsTest { ClassLoader javacClassLoader = new java.net.URLClassLoader(new java.net.URL[]{javacClassPath.toUri().toURL()}); Class javacLoadedClass = javacClassLoader.loadClass(FILE_NAME); - // Load the miniCompiler class - Path miniCompilerClassPath = Paths.get("src/test/resources/output/miniCompiler"); - ClassLoader miniCompilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{miniCompilerClassPath.toUri().toURL()}); - Class miniCompilerLoadedClass = miniCompilerClassLoader.loadClass(FILE_NAME); + // Load the raupenpiler class + Path raupenpilerClassPath = Paths.get("src/test/resources/output/raupenpiler"); + ClassLoader raupenpilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{raupenpilerClassPath.toUri().toURL()}); + Class raupenpilerLoadedClass = raupenpilerClassLoader.loadClass(FILE_NAME); // Class Name assertEquals(FILE_NAME, javacLoadedClass.getName()); - assertEquals(FILE_NAME, miniCompilerLoadedClass.getName()); + assertEquals(FILE_NAME, raupenpilerLoadedClass.getName()); // Constructors Constructor[] javacConstructors = javacLoadedClass.getDeclaredConstructors(); - Constructor[] miniCompilerConstructors = miniCompilerLoadedClass.getDeclaredConstructors(); + Constructor[] raupenpilerConstructors = raupenpilerLoadedClass.getDeclaredConstructors(); - assertEquals(javacConstructors.length, miniCompilerConstructors.length); + assertEquals(javacConstructors.length, raupenpilerConstructors.length); for(Constructor c : javacConstructors) { - for(Constructor miniCompilerConstructor : miniCompilerConstructors) { - assertEquals(c.getParameterCount(), miniCompilerConstructor.getParameterCount()); - if (c.getParameterCount() == miniCompilerConstructor.getParameterCount()) { - assertEquals(c.getName(), miniCompilerConstructor.getName()); + for(Constructor raupenpilerConstructor : raupenpilerConstructors) { + assertEquals(c.getParameterCount(), raupenpilerConstructor.getParameterCount()); + if (c.getParameterCount() == raupenpilerConstructor.getParameterCount()) { + assertEquals(c.getName(), raupenpilerConstructor.getName()); } } } @@ -476,29 +476,29 @@ public class E2EReflectionsTest { // Methods Method[] javacMethods = javacLoadedClass.getDeclaredMethods(); - Method[] miniCompilerMethods = miniCompilerLoadedClass.getDeclaredMethods(); + Method[] raupenpilerMethods = raupenpilerLoadedClass.getDeclaredMethods(); - assertEquals(javacMethods.length, miniCompilerMethods.length); + assertEquals(javacMethods.length, raupenpilerMethods.length); for (int i = 0; i < javacMethods.length; i++) { - assertEquals(javacMethods[i].getName(), miniCompilerMethods[i].getName()); - assertEquals(javacMethods[i].getReturnType(), miniCompilerMethods[i].getReturnType()); - assertEquals(javacMethods[i].getParameterCount(), miniCompilerMethods[i].getParameterCount()); - // assertEquals(javacMethods[i].getModifiers(), miniCompilerMethods[i].getModifiers()); + assertEquals(javacMethods[i].getName(), raupenpilerMethods[i].getName()); + assertEquals(javacMethods[i].getReturnType(), raupenpilerMethods[i].getReturnType()); + assertEquals(javacMethods[i].getParameterCount(), raupenpilerMethods[i].getParameterCount()); + // assertEquals(javacMethods[i].getModifiers(), raupenpilerMethods[i].getModifiers()); } // Fields Field[] javacLoadedClassDeclaredFields = javacLoadedClass.getDeclaredFields(); - Field[] miniCompilerLoadedClassDeclaredFields = miniCompilerLoadedClass.getDeclaredFields(); + Field[] raupenpilerLoadedClassDeclaredFields = raupenpilerLoadedClass.getDeclaredFields(); - assertEquals(javacLoadedClassDeclaredFields.length, miniCompilerLoadedClassDeclaredFields.length); + assertEquals(javacLoadedClassDeclaredFields.length, raupenpilerLoadedClassDeclaredFields.length); for (Field field : javacLoadedClassDeclaredFields) { - for (Field miniCompilerField : miniCompilerLoadedClassDeclaredFields) { - if (field.getName().equals(miniCompilerField.getName())) { - assertEquals(field.getType(), miniCompilerField.getType()); - // assertEquals(field.getModifiers(), miniCompilerField.getModifiers()); + for (Field raupenpilerField : raupenpilerLoadedClassDeclaredFields) { + if (field.getName().equals(raupenpilerField.getName())) { + assertEquals(field.getType(), raupenpilerField.getType()); + // assertEquals(field.getModifiers(), raupenpilerField.getModifiers()); } } } @@ -514,8 +514,8 @@ public class E2EReflectionsTest { public void DoWhileTest() { final String FILE_NAME = "DoWhile"; try { - // compile with miniCompiler - Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/miniCompiler"}); + // compile with raupenpiler + Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/raupenpiler"}); // Get the system Java compiler JavaCompiler javac = ToolProvider.getSystemJavaCompiler(); // Assert that the compiler is available @@ -529,28 +529,28 @@ public class E2EReflectionsTest { ClassLoader javacClassLoader = new java.net.URLClassLoader(new java.net.URL[]{javacClassPath.toUri().toURL()}); Class javacLoadedClass = javacClassLoader.loadClass(FILE_NAME); - // Load the miniCompiler class - Path miniCompilerClassPath = Paths.get("src/test/resources/output/miniCompiler"); - ClassLoader miniCompilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{miniCompilerClassPath.toUri().toURL()}); - Class miniCompilerLoadedClass = miniCompilerClassLoader.loadClass(FILE_NAME); + // Load the raupenpiler class + Path raupenpilerClassPath = Paths.get("src/test/resources/output/raupenpiler"); + ClassLoader raupenpilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{raupenpilerClassPath.toUri().toURL()}); + Class raupenpilerLoadedClass = raupenpilerClassLoader.loadClass(FILE_NAME); // Class Name assertEquals(FILE_NAME, javacLoadedClass.getName()); - assertEquals(FILE_NAME, miniCompilerLoadedClass.getName()); + assertEquals(FILE_NAME, raupenpilerLoadedClass.getName()); // Constructors Constructor[] javacConstructors = javacLoadedClass.getDeclaredConstructors(); - Constructor[] miniCompilerConstructors = miniCompilerLoadedClass.getDeclaredConstructors(); + Constructor[] raupenpilerConstructors = raupenpilerLoadedClass.getDeclaredConstructors(); - assertEquals(javacConstructors.length, miniCompilerConstructors.length); + assertEquals(javacConstructors.length, raupenpilerConstructors.length); for(Constructor c : javacConstructors) { - for(Constructor miniCompilerConstructor : miniCompilerConstructors) { - assertEquals(c.getParameterCount(), miniCompilerConstructor.getParameterCount()); - if (c.getParameterCount() == miniCompilerConstructor.getParameterCount()) { - assertEquals(c.getName(), miniCompilerConstructor.getName()); + for(Constructor raupenpilerConstructor : raupenpilerConstructors) { + assertEquals(c.getParameterCount(), raupenpilerConstructor.getParameterCount()); + if (c.getParameterCount() == raupenpilerConstructor.getParameterCount()) { + assertEquals(c.getName(), raupenpilerConstructor.getName()); } } } @@ -558,29 +558,29 @@ public class E2EReflectionsTest { // Methods Method[] javacMethods = javacLoadedClass.getDeclaredMethods(); - Method[] miniCompilerMethods = miniCompilerLoadedClass.getDeclaredMethods(); + Method[] raupenpilerMethods = raupenpilerLoadedClass.getDeclaredMethods(); - assertEquals(javacMethods.length, miniCompilerMethods.length); + assertEquals(javacMethods.length, raupenpilerMethods.length); for (int i = 0; i < javacMethods.length; i++) { - assertEquals(javacMethods[i].getName(), miniCompilerMethods[i].getName()); - assertEquals(javacMethods[i].getReturnType(), miniCompilerMethods[i].getReturnType()); - assertEquals(javacMethods[i].getParameterCount(), miniCompilerMethods[i].getParameterCount()); - // assertEquals(javacMethods[i].getModifiers(), miniCompilerMethods[i].getModifiers()); + assertEquals(javacMethods[i].getName(), raupenpilerMethods[i].getName()); + assertEquals(javacMethods[i].getReturnType(), raupenpilerMethods[i].getReturnType()); + assertEquals(javacMethods[i].getParameterCount(), raupenpilerMethods[i].getParameterCount()); + // assertEquals(javacMethods[i].getModifiers(), raupenpilerMethods[i].getModifiers()); } // Fields Field[] javacLoadedClassDeclaredFields = javacLoadedClass.getDeclaredFields(); - Field[] miniCompilerLoadedClassDeclaredFields = miniCompilerLoadedClass.getDeclaredFields(); + Field[] raupenpilerLoadedClassDeclaredFields = raupenpilerLoadedClass.getDeclaredFields(); - assertEquals(javacLoadedClassDeclaredFields.length, miniCompilerLoadedClassDeclaredFields.length); + assertEquals(javacLoadedClassDeclaredFields.length, raupenpilerLoadedClassDeclaredFields.length); for (Field field : javacLoadedClassDeclaredFields) { - for (Field miniCompilerField : miniCompilerLoadedClassDeclaredFields) { - if (field.getName().equals(miniCompilerField.getName())) { - assertEquals(field.getType(), miniCompilerField.getType()); - // assertEquals(field.getModifiers(), miniCompilerField.getModifiers()); + for (Field raupenpilerField : raupenpilerLoadedClassDeclaredFields) { + if (field.getName().equals(raupenpilerField.getName())) { + assertEquals(field.getType(), raupenpilerField.getType()); + // assertEquals(field.getModifiers(), raupenpilerField.getModifiers()); } } } @@ -596,8 +596,8 @@ public class E2EReflectionsTest { public void EmptyClassTest() { final String FILE_NAME = "EmptyClass"; try { - // compile with miniCompiler - Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/miniCompiler"}); + // compile with raupenpiler + Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/raupenpiler"}); // Get the system Java compiler JavaCompiler javac = ToolProvider.getSystemJavaCompiler(); // Assert that the compiler is available @@ -611,28 +611,28 @@ public class E2EReflectionsTest { ClassLoader javacClassLoader = new java.net.URLClassLoader(new java.net.URL[]{javacClassPath.toUri().toURL()}); Class javacLoadedClass = javacClassLoader.loadClass(FILE_NAME); - // Load the miniCompiler class - Path miniCompilerClassPath = Paths.get("src/test/resources/output/miniCompiler"); - ClassLoader miniCompilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{miniCompilerClassPath.toUri().toURL()}); - Class miniCompilerLoadedClass = miniCompilerClassLoader.loadClass(FILE_NAME); + // Load the raupenpiler class + Path raupenpilerClassPath = Paths.get("src/test/resources/output/raupenpiler"); + ClassLoader raupenpilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{raupenpilerClassPath.toUri().toURL()}); + Class raupenpilerLoadedClass = raupenpilerClassLoader.loadClass(FILE_NAME); // Class Name assertEquals(FILE_NAME, javacLoadedClass.getName()); - assertEquals(FILE_NAME, miniCompilerLoadedClass.getName()); + assertEquals(FILE_NAME, raupenpilerLoadedClass.getName()); // Constructors Constructor[] javacConstructors = javacLoadedClass.getDeclaredConstructors(); - Constructor[] miniCompilerConstructors = miniCompilerLoadedClass.getDeclaredConstructors(); + Constructor[] raupenpilerConstructors = raupenpilerLoadedClass.getDeclaredConstructors(); - assertEquals(javacConstructors.length, miniCompilerConstructors.length); + assertEquals(javacConstructors.length, raupenpilerConstructors.length); for(Constructor c : javacConstructors) { - for(Constructor miniCompilerConstructor : miniCompilerConstructors) { - assertEquals(c.getParameterCount(), miniCompilerConstructor.getParameterCount()); - if (c.getParameterCount() == miniCompilerConstructor.getParameterCount()) { - assertEquals(c.getName(), miniCompilerConstructor.getName()); + for(Constructor raupenpilerConstructor : raupenpilerConstructors) { + assertEquals(c.getParameterCount(), raupenpilerConstructor.getParameterCount()); + if (c.getParameterCount() == raupenpilerConstructor.getParameterCount()) { + assertEquals(c.getName(), raupenpilerConstructor.getName()); } } } @@ -640,29 +640,29 @@ public class E2EReflectionsTest { // Methods Method[] javacMethods = javacLoadedClass.getDeclaredMethods(); - Method[] miniCompilerMethods = miniCompilerLoadedClass.getDeclaredMethods(); + Method[] raupenpilerMethods = raupenpilerLoadedClass.getDeclaredMethods(); - assertEquals(javacMethods.length, miniCompilerMethods.length); + assertEquals(javacMethods.length, raupenpilerMethods.length); for (int i = 0; i < javacMethods.length; i++) { - assertEquals(javacMethods[i].getName(), miniCompilerMethods[i].getName()); - assertEquals(javacMethods[i].getReturnType(), miniCompilerMethods[i].getReturnType()); - assertEquals(javacMethods[i].getParameterCount(), miniCompilerMethods[i].getParameterCount()); - // assertEquals(javacMethods[i].getModifiers(), miniCompilerMethods[i].getModifiers()); + assertEquals(javacMethods[i].getName(), raupenpilerMethods[i].getName()); + assertEquals(javacMethods[i].getReturnType(), raupenpilerMethods[i].getReturnType()); + assertEquals(javacMethods[i].getParameterCount(), raupenpilerMethods[i].getParameterCount()); + // assertEquals(javacMethods[i].getModifiers(), raupenpilerMethods[i].getModifiers()); } // Fields Field[] javacLoadedClassDeclaredFields = javacLoadedClass.getDeclaredFields(); - Field[] miniCompilerLoadedClassDeclaredFields = miniCompilerLoadedClass.getDeclaredFields(); + Field[] raupenpilerLoadedClassDeclaredFields = raupenpilerLoadedClass.getDeclaredFields(); - assertEquals(javacLoadedClassDeclaredFields.length, miniCompilerLoadedClassDeclaredFields.length); + assertEquals(javacLoadedClassDeclaredFields.length, raupenpilerLoadedClassDeclaredFields.length); for (Field field : javacLoadedClassDeclaredFields) { - for (Field miniCompilerField : miniCompilerLoadedClassDeclaredFields) { - if (field.getName().equals(miniCompilerField.getName())) { - assertEquals(field.getType(), miniCompilerField.getType()); - // assertEquals(field.getModifiers(), miniCompilerField.getModifiers()); + for (Field raupenpilerField : raupenpilerLoadedClassDeclaredFields) { + if (field.getName().equals(raupenpilerField.getName())) { + assertEquals(field.getType(), raupenpilerField.getType()); + // assertEquals(field.getModifiers(), raupenpilerField.getModifiers()); } } } @@ -678,8 +678,8 @@ public class E2EReflectionsTest { public void EmptyClassWithConstructorTest() { final String FILE_NAME = "EmptyClassWithConstructor"; try { - // compile with miniCompiler - Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/miniCompiler"}); + // compile with raupenpiler + Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/raupenpiler"}); // Get the system Java compiler JavaCompiler javac = ToolProvider.getSystemJavaCompiler(); // Assert that the compiler is available @@ -693,28 +693,28 @@ public class E2EReflectionsTest { ClassLoader javacClassLoader = new java.net.URLClassLoader(new java.net.URL[]{javacClassPath.toUri().toURL()}); Class javacLoadedClass = javacClassLoader.loadClass(FILE_NAME); - // Load the miniCompiler class - Path miniCompilerClassPath = Paths.get("src/test/resources/output/miniCompiler"); - ClassLoader miniCompilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{miniCompilerClassPath.toUri().toURL()}); - Class miniCompilerLoadedClass = miniCompilerClassLoader.loadClass(FILE_NAME); + // Load the raupenpiler class + Path raupenpilerClassPath = Paths.get("src/test/resources/output/raupenpiler"); + ClassLoader raupenpilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{raupenpilerClassPath.toUri().toURL()}); + Class raupenpilerLoadedClass = raupenpilerClassLoader.loadClass(FILE_NAME); // Class Name assertEquals(FILE_NAME, javacLoadedClass.getName()); - assertEquals(FILE_NAME, miniCompilerLoadedClass.getName()); + assertEquals(FILE_NAME, raupenpilerLoadedClass.getName()); // Constructors Constructor[] javacConstructors = javacLoadedClass.getDeclaredConstructors(); - Constructor[] miniCompilerConstructors = miniCompilerLoadedClass.getDeclaredConstructors(); + Constructor[] raupenpilerConstructors = raupenpilerLoadedClass.getDeclaredConstructors(); - assertEquals(javacConstructors.length, miniCompilerConstructors.length); + assertEquals(javacConstructors.length, raupenpilerConstructors.length); for(Constructor c : javacConstructors) { - for(Constructor miniCompilerConstructor : miniCompilerConstructors) { - assertEquals(c.getParameterCount(), miniCompilerConstructor.getParameterCount()); - if (c.getParameterCount() == miniCompilerConstructor.getParameterCount()) { - assertEquals(c.getName(), miniCompilerConstructor.getName()); + for(Constructor raupenpilerConstructor : raupenpilerConstructors) { + assertEquals(c.getParameterCount(), raupenpilerConstructor.getParameterCount()); + if (c.getParameterCount() == raupenpilerConstructor.getParameterCount()) { + assertEquals(c.getName(), raupenpilerConstructor.getName()); } } } @@ -722,29 +722,29 @@ public class E2EReflectionsTest { // Methods Method[] javacMethods = javacLoadedClass.getDeclaredMethods(); - Method[] miniCompilerMethods = miniCompilerLoadedClass.getDeclaredMethods(); + Method[] raupenpilerMethods = raupenpilerLoadedClass.getDeclaredMethods(); - assertEquals(javacMethods.length, miniCompilerMethods.length); + assertEquals(javacMethods.length, raupenpilerMethods.length); for (int i = 0; i < javacMethods.length; i++) { - assertEquals(javacMethods[i].getName(), miniCompilerMethods[i].getName()); - assertEquals(javacMethods[i].getReturnType(), miniCompilerMethods[i].getReturnType()); - assertEquals(javacMethods[i].getParameterCount(), miniCompilerMethods[i].getParameterCount()); - // assertEquals(javacMethods[i].getModifiers(), miniCompilerMethods[i].getModifiers()); + assertEquals(javacMethods[i].getName(), raupenpilerMethods[i].getName()); + assertEquals(javacMethods[i].getReturnType(), raupenpilerMethods[i].getReturnType()); + assertEquals(javacMethods[i].getParameterCount(), raupenpilerMethods[i].getParameterCount()); + // assertEquals(javacMethods[i].getModifiers(), raupenpilerMethods[i].getModifiers()); } // Fields Field[] javacLoadedClassDeclaredFields = javacLoadedClass.getDeclaredFields(); - Field[] miniCompilerLoadedClassDeclaredFields = miniCompilerLoadedClass.getDeclaredFields(); + Field[] raupenpilerLoadedClassDeclaredFields = raupenpilerLoadedClass.getDeclaredFields(); - assertEquals(javacLoadedClassDeclaredFields.length, miniCompilerLoadedClassDeclaredFields.length); + assertEquals(javacLoadedClassDeclaredFields.length, raupenpilerLoadedClassDeclaredFields.length); for (Field field : javacLoadedClassDeclaredFields) { - for (Field miniCompilerField : miniCompilerLoadedClassDeclaredFields) { - if (field.getName().equals(miniCompilerField.getName())) { - assertEquals(field.getType(), miniCompilerField.getType()); - // assertEquals(field.getModifiers(), miniCompilerField.getModifiers()); + for (Field raupenpilerField : raupenpilerLoadedClassDeclaredFields) { + if (field.getName().equals(raupenpilerField.getName())) { + assertEquals(field.getType(), raupenpilerField.getType()); + // assertEquals(field.getModifiers(), raupenpilerField.getModifiers()); } } } @@ -760,8 +760,8 @@ public class E2EReflectionsTest { public void FieldTest() { final String FILE_NAME = "Field"; try { - // compile with miniCompiler - Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/miniCompiler"}); + // compile with raupenpiler + Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/raupenpiler"}); // Get the system Java compiler JavaCompiler javac = ToolProvider.getSystemJavaCompiler(); // Assert that the compiler is available @@ -775,28 +775,28 @@ public class E2EReflectionsTest { ClassLoader javacClassLoader = new java.net.URLClassLoader(new java.net.URL[]{javacClassPath.toUri().toURL()}); Class javacLoadedClass = javacClassLoader.loadClass(FILE_NAME); - // Load the miniCompiler class - Path miniCompilerClassPath = Paths.get("src/test/resources/output/miniCompiler"); - ClassLoader miniCompilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{miniCompilerClassPath.toUri().toURL()}); - Class miniCompilerLoadedClass = miniCompilerClassLoader.loadClass(FILE_NAME); + // Load the raupenpiler class + Path raupenpilerClassPath = Paths.get("src/test/resources/output/raupenpiler"); + ClassLoader raupenpilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{raupenpilerClassPath.toUri().toURL()}); + Class raupenpilerLoadedClass = raupenpilerClassLoader.loadClass(FILE_NAME); // Class Name assertEquals(FILE_NAME, javacLoadedClass.getName()); - assertEquals(FILE_NAME, miniCompilerLoadedClass.getName()); + assertEquals(FILE_NAME, raupenpilerLoadedClass.getName()); // Constructors Constructor[] javacConstructors = javacLoadedClass.getDeclaredConstructors(); - Constructor[] miniCompilerConstructors = miniCompilerLoadedClass.getDeclaredConstructors(); + Constructor[] raupenpilerConstructors = raupenpilerLoadedClass.getDeclaredConstructors(); - assertEquals(javacConstructors.length, miniCompilerConstructors.length); + assertEquals(javacConstructors.length, raupenpilerConstructors.length); for(Constructor c : javacConstructors) { - for(Constructor miniCompilerConstructor : miniCompilerConstructors) { - assertEquals(c.getParameterCount(), miniCompilerConstructor.getParameterCount()); - if (c.getParameterCount() == miniCompilerConstructor.getParameterCount()) { - assertEquals(c.getName(), miniCompilerConstructor.getName()); + for(Constructor raupenpilerConstructor : raupenpilerConstructors) { + assertEquals(c.getParameterCount(), raupenpilerConstructor.getParameterCount()); + if (c.getParameterCount() == raupenpilerConstructor.getParameterCount()) { + assertEquals(c.getName(), raupenpilerConstructor.getName()); } } } @@ -804,29 +804,29 @@ public class E2EReflectionsTest { // Methods Method[] javacMethods = javacLoadedClass.getDeclaredMethods(); - Method[] miniCompilerMethods = miniCompilerLoadedClass.getDeclaredMethods(); + Method[] raupenpilerMethods = raupenpilerLoadedClass.getDeclaredMethods(); - assertEquals(javacMethods.length, miniCompilerMethods.length); + assertEquals(javacMethods.length, raupenpilerMethods.length); for (int i = 0; i < javacMethods.length; i++) { - assertEquals(javacMethods[i].getName(), miniCompilerMethods[i].getName()); - assertEquals(javacMethods[i].getReturnType(), miniCompilerMethods[i].getReturnType()); - assertEquals(javacMethods[i].getParameterCount(), miniCompilerMethods[i].getParameterCount()); - // assertEquals(javacMethods[i].getModifiers(), miniCompilerMethods[i].getModifiers()); + assertEquals(javacMethods[i].getName(), raupenpilerMethods[i].getName()); + assertEquals(javacMethods[i].getReturnType(), raupenpilerMethods[i].getReturnType()); + assertEquals(javacMethods[i].getParameterCount(), raupenpilerMethods[i].getParameterCount()); + // assertEquals(javacMethods[i].getModifiers(), raupenpilerMethods[i].getModifiers()); } // Fields Field[] javacLoadedClassDeclaredFields = javacLoadedClass.getDeclaredFields(); - Field[] miniCompilerLoadedClassDeclaredFields = miniCompilerLoadedClass.getDeclaredFields(); + Field[] raupenpilerLoadedClassDeclaredFields = raupenpilerLoadedClass.getDeclaredFields(); - assertEquals(javacLoadedClassDeclaredFields.length, miniCompilerLoadedClassDeclaredFields.length); + assertEquals(javacLoadedClassDeclaredFields.length, raupenpilerLoadedClassDeclaredFields.length); for (Field field : javacLoadedClassDeclaredFields) { - for (Field miniCompilerField : miniCompilerLoadedClassDeclaredFields) { - if (field.getName().equals(miniCompilerField.getName())) { - assertEquals(field.getType(), miniCompilerField.getType()); - // assertEquals(field.getModifiers(), miniCompilerField.getModifiers()); + for (Field raupenpilerField : raupenpilerLoadedClassDeclaredFields) { + if (field.getName().equals(raupenpilerField.getName())) { + assertEquals(field.getType(), raupenpilerField.getType()); + // assertEquals(field.getModifiers(), raupenpilerField.getModifiers()); } } } @@ -842,8 +842,8 @@ public class E2EReflectionsTest { public void FieldWithAccessModifierTest() { final String FILE_NAME = "FieldWithAccessModifier"; try { - // compile with miniCompiler - Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/miniCompiler"}); + // compile with raupenpiler + Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/raupenpiler"}); // Get the system Java compiler JavaCompiler javac = ToolProvider.getSystemJavaCompiler(); // Assert that the compiler is available @@ -857,28 +857,28 @@ public class E2EReflectionsTest { ClassLoader javacClassLoader = new java.net.URLClassLoader(new java.net.URL[]{javacClassPath.toUri().toURL()}); Class javacLoadedClass = javacClassLoader.loadClass(FILE_NAME); - // Load the miniCompiler class - Path miniCompilerClassPath = Paths.get("src/test/resources/output/miniCompiler"); - ClassLoader miniCompilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{miniCompilerClassPath.toUri().toURL()}); - Class miniCompilerLoadedClass = miniCompilerClassLoader.loadClass(FILE_NAME); + // Load the raupenpiler class + Path raupenpilerClassPath = Paths.get("src/test/resources/output/raupenpiler"); + ClassLoader raupenpilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{raupenpilerClassPath.toUri().toURL()}); + Class raupenpilerLoadedClass = raupenpilerClassLoader.loadClass(FILE_NAME); // Class Name assertEquals(FILE_NAME, javacLoadedClass.getName()); - assertEquals(FILE_NAME, miniCompilerLoadedClass.getName()); + assertEquals(FILE_NAME, raupenpilerLoadedClass.getName()); // Constructors Constructor[] javacConstructors = javacLoadedClass.getDeclaredConstructors(); - Constructor[] miniCompilerConstructors = miniCompilerLoadedClass.getDeclaredConstructors(); + Constructor[] raupenpilerConstructors = raupenpilerLoadedClass.getDeclaredConstructors(); - assertEquals(javacConstructors.length, miniCompilerConstructors.length); + assertEquals(javacConstructors.length, raupenpilerConstructors.length); for(Constructor c : javacConstructors) { - for(Constructor miniCompilerConstructor : miniCompilerConstructors) { - assertEquals(c.getParameterCount(), miniCompilerConstructor.getParameterCount()); - if (c.getParameterCount() == miniCompilerConstructor.getParameterCount()) { - assertEquals(c.getName(), miniCompilerConstructor.getName()); + for(Constructor raupenpilerConstructor : raupenpilerConstructors) { + assertEquals(c.getParameterCount(), raupenpilerConstructor.getParameterCount()); + if (c.getParameterCount() == raupenpilerConstructor.getParameterCount()) { + assertEquals(c.getName(), raupenpilerConstructor.getName()); } } } @@ -886,29 +886,29 @@ public class E2EReflectionsTest { // Methods Method[] javacMethods = javacLoadedClass.getDeclaredMethods(); - Method[] miniCompilerMethods = miniCompilerLoadedClass.getDeclaredMethods(); + Method[] raupenpilerMethods = raupenpilerLoadedClass.getDeclaredMethods(); - assertEquals(javacMethods.length, miniCompilerMethods.length); + assertEquals(javacMethods.length, raupenpilerMethods.length); for (int i = 0; i < javacMethods.length; i++) { - assertEquals(javacMethods[i].getName(), miniCompilerMethods[i].getName()); - assertEquals(javacMethods[i].getReturnType(), miniCompilerMethods[i].getReturnType()); - assertEquals(javacMethods[i].getParameterCount(), miniCompilerMethods[i].getParameterCount()); - // assertEquals(javacMethods[i].getModifiers(), miniCompilerMethods[i].getModifiers()); + assertEquals(javacMethods[i].getName(), raupenpilerMethods[i].getName()); + assertEquals(javacMethods[i].getReturnType(), raupenpilerMethods[i].getReturnType()); + assertEquals(javacMethods[i].getParameterCount(), raupenpilerMethods[i].getParameterCount()); + // assertEquals(javacMethods[i].getModifiers(), raupenpilerMethods[i].getModifiers()); } // Fields Field[] javacLoadedClassDeclaredFields = javacLoadedClass.getDeclaredFields(); - Field[] miniCompilerLoadedClassDeclaredFields = miniCompilerLoadedClass.getDeclaredFields(); + Field[] raupenpilerLoadedClassDeclaredFields = raupenpilerLoadedClass.getDeclaredFields(); - assertEquals(javacLoadedClassDeclaredFields.length, miniCompilerLoadedClassDeclaredFields.length); + assertEquals(javacLoadedClassDeclaredFields.length, raupenpilerLoadedClassDeclaredFields.length); for (Field field : javacLoadedClassDeclaredFields) { - for (Field miniCompilerField : miniCompilerLoadedClassDeclaredFields) { - if (field.getName().equals(miniCompilerField.getName())) { - assertEquals(field.getType(), miniCompilerField.getType()); - // assertEquals(field.getModifiers(), miniCompilerField.getModifiers()); + for (Field raupenpilerField : raupenpilerLoadedClassDeclaredFields) { + if (field.getName().equals(raupenpilerField.getName())) { + assertEquals(field.getType(), raupenpilerField.getType()); + // assertEquals(field.getModifiers(), raupenpilerField.getModifiers()); } } } @@ -924,8 +924,8 @@ public class E2EReflectionsTest { public void ForTest() { final String FILE_NAME = "For"; try { - // compile with miniCompiler - Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/miniCompiler"}); + // compile with raupenpiler + Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/raupenpiler"}); // Get the system Java compiler JavaCompiler javac = ToolProvider.getSystemJavaCompiler(); // Assert that the compiler is available @@ -939,28 +939,28 @@ public class E2EReflectionsTest { ClassLoader javacClassLoader = new java.net.URLClassLoader(new java.net.URL[]{javacClassPath.toUri().toURL()}); Class javacLoadedClass = javacClassLoader.loadClass(FILE_NAME); - // Load the miniCompiler class - Path miniCompilerClassPath = Paths.get("src/test/resources/output/miniCompiler"); - ClassLoader miniCompilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{miniCompilerClassPath.toUri().toURL()}); - Class miniCompilerLoadedClass = miniCompilerClassLoader.loadClass(FILE_NAME); + // Load the raupenpiler class + Path raupenpilerClassPath = Paths.get("src/test/resources/output/raupenpiler"); + ClassLoader raupenpilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{raupenpilerClassPath.toUri().toURL()}); + Class raupenpilerLoadedClass = raupenpilerClassLoader.loadClass(FILE_NAME); // Class Name assertEquals(FILE_NAME, javacLoadedClass.getName()); - assertEquals(FILE_NAME, miniCompilerLoadedClass.getName()); + assertEquals(FILE_NAME, raupenpilerLoadedClass.getName()); // Constructors Constructor[] javacConstructors = javacLoadedClass.getDeclaredConstructors(); - Constructor[] miniCompilerConstructors = miniCompilerLoadedClass.getDeclaredConstructors(); + Constructor[] raupenpilerConstructors = raupenpilerLoadedClass.getDeclaredConstructors(); - assertEquals(javacConstructors.length, miniCompilerConstructors.length); + assertEquals(javacConstructors.length, raupenpilerConstructors.length); for(Constructor c : javacConstructors) { - for(Constructor miniCompilerConstructor : miniCompilerConstructors) { - assertEquals(c.getParameterCount(), miniCompilerConstructor.getParameterCount()); - if (c.getParameterCount() == miniCompilerConstructor.getParameterCount()) { - assertEquals(c.getName(), miniCompilerConstructor.getName()); + for(Constructor raupenpilerConstructor : raupenpilerConstructors) { + assertEquals(c.getParameterCount(), raupenpilerConstructor.getParameterCount()); + if (c.getParameterCount() == raupenpilerConstructor.getParameterCount()) { + assertEquals(c.getName(), raupenpilerConstructor.getName()); } } } @@ -968,29 +968,29 @@ public class E2EReflectionsTest { // Methods Method[] javacMethods = javacLoadedClass.getDeclaredMethods(); - Method[] miniCompilerMethods = miniCompilerLoadedClass.getDeclaredMethods(); + Method[] raupenpilerMethods = raupenpilerLoadedClass.getDeclaredMethods(); - assertEquals(javacMethods.length, miniCompilerMethods.length); + assertEquals(javacMethods.length, raupenpilerMethods.length); for (int i = 0; i < javacMethods.length; i++) { - assertEquals(javacMethods[i].getName(), miniCompilerMethods[i].getName()); - assertEquals(javacMethods[i].getReturnType(), miniCompilerMethods[i].getReturnType()); - assertEquals(javacMethods[i].getParameterCount(), miniCompilerMethods[i].getParameterCount()); - // assertEquals(javacMethods[i].getModifiers(), miniCompilerMethods[i].getModifiers()); + assertEquals(javacMethods[i].getName(), raupenpilerMethods[i].getName()); + assertEquals(javacMethods[i].getReturnType(), raupenpilerMethods[i].getReturnType()); + assertEquals(javacMethods[i].getParameterCount(), raupenpilerMethods[i].getParameterCount()); + // assertEquals(javacMethods[i].getModifiers(), raupenpilerMethods[i].getModifiers()); } // Fields Field[] javacLoadedClassDeclaredFields = javacLoadedClass.getDeclaredFields(); - Field[] miniCompilerLoadedClassDeclaredFields = miniCompilerLoadedClass.getDeclaredFields(); + Field[] raupenpilerLoadedClassDeclaredFields = raupenpilerLoadedClass.getDeclaredFields(); - assertEquals(javacLoadedClassDeclaredFields.length, miniCompilerLoadedClassDeclaredFields.length); + assertEquals(javacLoadedClassDeclaredFields.length, raupenpilerLoadedClassDeclaredFields.length); for (Field field : javacLoadedClassDeclaredFields) { - for (Field miniCompilerField : miniCompilerLoadedClassDeclaredFields) { - if (field.getName().equals(miniCompilerField.getName())) { - assertEquals(field.getType(), miniCompilerField.getType()); - // assertEquals(field.getModifiers(), miniCompilerField.getModifiers()); + for (Field raupenpilerField : raupenpilerLoadedClassDeclaredFields) { + if (field.getName().equals(raupenpilerField.getName())) { + assertEquals(field.getType(), raupenpilerField.getType()); + // assertEquals(field.getModifiers(), raupenpilerField.getModifiers()); } } } @@ -1007,8 +1007,8 @@ public class E2EReflectionsTest { public void IfTest() { final String FILE_NAME = "If"; try { - // compile with miniCompiler - Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/miniCompiler"}); + // compile with raupenpiler + Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/raupenpiler"}); // Get the system Java compiler JavaCompiler javac = ToolProvider.getSystemJavaCompiler(); // Assert that the compiler is available @@ -1022,28 +1022,28 @@ public class E2EReflectionsTest { ClassLoader javacClassLoader = new java.net.URLClassLoader(new java.net.URL[]{javacClassPath.toUri().toURL()}); Class javacLoadedClass = javacClassLoader.loadClass(FILE_NAME); - // Load the miniCompiler class - Path miniCompilerClassPath = Paths.get("src/test/resources/output/miniCompiler"); - ClassLoader miniCompilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{miniCompilerClassPath.toUri().toURL()}); - Class miniCompilerLoadedClass = miniCompilerClassLoader.loadClass(FILE_NAME); + // Load the raupenpiler class + Path raupenpilerClassPath = Paths.get("src/test/resources/output/raupenpiler"); + ClassLoader raupenpilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{raupenpilerClassPath.toUri().toURL()}); + Class raupenpilerLoadedClass = raupenpilerClassLoader.loadClass(FILE_NAME); // Class Name assertEquals(FILE_NAME, javacLoadedClass.getName()); - assertEquals(FILE_NAME, miniCompilerLoadedClass.getName()); + assertEquals(FILE_NAME, raupenpilerLoadedClass.getName()); // Constructors Constructor[] javacConstructors = javacLoadedClass.getDeclaredConstructors(); - Constructor[] miniCompilerConstructors = miniCompilerLoadedClass.getDeclaredConstructors(); + Constructor[] raupenpilerConstructors = raupenpilerLoadedClass.getDeclaredConstructors(); - assertEquals(javacConstructors.length, miniCompilerConstructors.length); + assertEquals(javacConstructors.length, raupenpilerConstructors.length); for(Constructor c : javacConstructors) { - for(Constructor miniCompilerConstructor : miniCompilerConstructors) { - assertEquals(c.getParameterCount(), miniCompilerConstructor.getParameterCount()); - if (c.getParameterCount() == miniCompilerConstructor.getParameterCount()) { - assertEquals(c.getName(), miniCompilerConstructor.getName()); + for(Constructor raupenpilerConstructor : raupenpilerConstructors) { + assertEquals(c.getParameterCount(), raupenpilerConstructor.getParameterCount()); + if (c.getParameterCount() == raupenpilerConstructor.getParameterCount()) { + assertEquals(c.getName(), raupenpilerConstructor.getName()); } } } @@ -1051,29 +1051,29 @@ public class E2EReflectionsTest { // Methods Method[] javacMethods = javacLoadedClass.getDeclaredMethods(); - Method[] miniCompilerMethods = miniCompilerLoadedClass.getDeclaredMethods(); + Method[] raupenpilerMethods = raupenpilerLoadedClass.getDeclaredMethods(); - assertEquals(javacMethods.length, miniCompilerMethods.length); + assertEquals(javacMethods.length, raupenpilerMethods.length); for (int i = 0; i < javacMethods.length; i++) { - assertEquals(javacMethods[i].getName(), miniCompilerMethods[i].getName()); - assertEquals(javacMethods[i].getReturnType(), miniCompilerMethods[i].getReturnType()); - assertEquals(javacMethods[i].getParameterCount(), miniCompilerMethods[i].getParameterCount()); - // assertEquals(javacMethods[i].getModifiers(), miniCompilerMethods[i].getModifiers()); + assertEquals(javacMethods[i].getName(), raupenpilerMethods[i].getName()); + assertEquals(javacMethods[i].getReturnType(), raupenpilerMethods[i].getReturnType()); + assertEquals(javacMethods[i].getParameterCount(), raupenpilerMethods[i].getParameterCount()); + // assertEquals(javacMethods[i].getModifiers(), raupenpilerMethods[i].getModifiers()); } // Fields Field[] javacLoadedClassDeclaredFields = javacLoadedClass.getDeclaredFields(); - Field[] miniCompilerLoadedClassDeclaredFields = miniCompilerLoadedClass.getDeclaredFields(); + Field[] raupenpilerLoadedClassDeclaredFields = raupenpilerLoadedClass.getDeclaredFields(); - assertEquals(javacLoadedClassDeclaredFields.length, miniCompilerLoadedClassDeclaredFields.length); + assertEquals(javacLoadedClassDeclaredFields.length, raupenpilerLoadedClassDeclaredFields.length); for (Field field : javacLoadedClassDeclaredFields) { - for (Field miniCompilerField : miniCompilerLoadedClassDeclaredFields) { - if (field.getName().equals(miniCompilerField.getName())) { - assertEquals(field.getType(), miniCompilerField.getType()); - // assertEquals(field.getModifiers(), miniCompilerField.getModifiers()); + for (Field raupenpilerField : raupenpilerLoadedClassDeclaredFields) { + if (field.getName().equals(raupenpilerField.getName())) { + assertEquals(field.getType(), raupenpilerField.getType()); + // assertEquals(field.getModifiers(), raupenpilerField.getModifiers()); } } } @@ -1088,8 +1088,8 @@ public class E2EReflectionsTest { public void IfElseTest() { final String FILE_NAME = "IfElse"; try { - // compile with miniCompiler - Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/miniCompiler"}); + // compile with raupenpiler + Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/raupenpiler"}); // Get the system Java compiler JavaCompiler javac = ToolProvider.getSystemJavaCompiler(); // Assert that the compiler is available @@ -1103,28 +1103,28 @@ public class E2EReflectionsTest { ClassLoader javacClassLoader = new java.net.URLClassLoader(new java.net.URL[]{javacClassPath.toUri().toURL()}); Class javacLoadedClass = javacClassLoader.loadClass(FILE_NAME); - // Load the miniCompiler class - Path miniCompilerClassPath = Paths.get("src/test/resources/output/miniCompiler"); - ClassLoader miniCompilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{miniCompilerClassPath.toUri().toURL()}); - Class miniCompilerLoadedClass = miniCompilerClassLoader.loadClass(FILE_NAME); + // Load the raupenpiler class + Path raupenpilerClassPath = Paths.get("src/test/resources/output/raupenpiler"); + ClassLoader raupenpilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{raupenpilerClassPath.toUri().toURL()}); + Class raupenpilerLoadedClass = raupenpilerClassLoader.loadClass(FILE_NAME); // Class Name assertEquals(FILE_NAME, javacLoadedClass.getName()); - assertEquals(FILE_NAME, miniCompilerLoadedClass.getName()); + assertEquals(FILE_NAME, raupenpilerLoadedClass.getName()); // Constructors Constructor[] javacConstructors = javacLoadedClass.getDeclaredConstructors(); - Constructor[] miniCompilerConstructors = miniCompilerLoadedClass.getDeclaredConstructors(); + Constructor[] raupenpilerConstructors = raupenpilerLoadedClass.getDeclaredConstructors(); - assertEquals(javacConstructors.length, miniCompilerConstructors.length); + assertEquals(javacConstructors.length, raupenpilerConstructors.length); for(Constructor c : javacConstructors) { - for(Constructor miniCompilerConstructor : miniCompilerConstructors) { - assertEquals(c.getParameterCount(), miniCompilerConstructor.getParameterCount()); - if (c.getParameterCount() == miniCompilerConstructor.getParameterCount()) { - assertEquals(c.getName(), miniCompilerConstructor.getName()); + for(Constructor raupenpilerConstructor : raupenpilerConstructors) { + assertEquals(c.getParameterCount(), raupenpilerConstructor.getParameterCount()); + if (c.getParameterCount() == raupenpilerConstructor.getParameterCount()) { + assertEquals(c.getName(), raupenpilerConstructor.getName()); } } } @@ -1132,29 +1132,29 @@ public class E2EReflectionsTest { // Methods Method[] javacMethods = javacLoadedClass.getDeclaredMethods(); - Method[] miniCompilerMethods = miniCompilerLoadedClass.getDeclaredMethods(); + Method[] raupenpilerMethods = raupenpilerLoadedClass.getDeclaredMethods(); - assertEquals(javacMethods.length, miniCompilerMethods.length); + assertEquals(javacMethods.length, raupenpilerMethods.length); for (int i = 0; i < javacMethods.length; i++) { - assertEquals(javacMethods[i].getName(), miniCompilerMethods[i].getName()); - assertEquals(javacMethods[i].getReturnType(), miniCompilerMethods[i].getReturnType()); - assertEquals(javacMethods[i].getParameterCount(), miniCompilerMethods[i].getParameterCount()); - // assertEquals(javacMethods[i].getModifiers(), miniCompilerMethods[i].getModifiers()); + assertEquals(javacMethods[i].getName(), raupenpilerMethods[i].getName()); + assertEquals(javacMethods[i].getReturnType(), raupenpilerMethods[i].getReturnType()); + assertEquals(javacMethods[i].getParameterCount(), raupenpilerMethods[i].getParameterCount()); + // assertEquals(javacMethods[i].getModifiers(), raupenpilerMethods[i].getModifiers()); } // Fields Field[] javacLoadedClassDeclaredFields = javacLoadedClass.getDeclaredFields(); - Field[] miniCompilerLoadedClassDeclaredFields = miniCompilerLoadedClass.getDeclaredFields(); + Field[] raupenpilerLoadedClassDeclaredFields = raupenpilerLoadedClass.getDeclaredFields(); - assertEquals(javacLoadedClassDeclaredFields.length, miniCompilerLoadedClassDeclaredFields.length); + assertEquals(javacLoadedClassDeclaredFields.length, raupenpilerLoadedClassDeclaredFields.length); for (Field field : javacLoadedClassDeclaredFields) { - for (Field miniCompilerField : miniCompilerLoadedClassDeclaredFields) { - if (field.getName().equals(miniCompilerField.getName())) { - assertEquals(field.getType(), miniCompilerField.getType()); - // assertEquals(field.getModifiers(), miniCompilerField.getModifiers()); + for (Field raupenpilerField : raupenpilerLoadedClassDeclaredFields) { + if (field.getName().equals(raupenpilerField.getName())) { + assertEquals(field.getType(), raupenpilerField.getType()); + // assertEquals(field.getModifiers(), raupenpilerField.getModifiers()); } } } @@ -1169,8 +1169,8 @@ public class E2EReflectionsTest { public void IfElseIfElseTest() { final String FILE_NAME = "IfElseIfElse"; try { - // compile with miniCompiler - Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/miniCompiler"}); + // compile with raupenpiler + Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/raupenpiler"}); // Get the system Java compiler JavaCompiler javac = ToolProvider.getSystemJavaCompiler(); // Assert that the compiler is available @@ -1184,28 +1184,28 @@ public class E2EReflectionsTest { ClassLoader javacClassLoader = new java.net.URLClassLoader(new java.net.URL[]{javacClassPath.toUri().toURL()}); Class javacLoadedClass = javacClassLoader.loadClass(FILE_NAME); - // Load the miniCompiler class - Path miniCompilerClassPath = Paths.get("src/test/resources/output/miniCompiler"); - ClassLoader miniCompilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{miniCompilerClassPath.toUri().toURL()}); - Class miniCompilerLoadedClass = miniCompilerClassLoader.loadClass(FILE_NAME); + // Load the raupenpiler class + Path raupenpilerClassPath = Paths.get("src/test/resources/output/raupenpiler"); + ClassLoader raupenpilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{raupenpilerClassPath.toUri().toURL()}); + Class raupenpilerLoadedClass = raupenpilerClassLoader.loadClass(FILE_NAME); // Class Name assertEquals(FILE_NAME, javacLoadedClass.getName()); - assertEquals(FILE_NAME, miniCompilerLoadedClass.getName()); + assertEquals(FILE_NAME, raupenpilerLoadedClass.getName()); // Constructors Constructor[] javacConstructors = javacLoadedClass.getDeclaredConstructors(); - Constructor[] miniCompilerConstructors = miniCompilerLoadedClass.getDeclaredConstructors(); + Constructor[] raupenpilerConstructors = raupenpilerLoadedClass.getDeclaredConstructors(); - assertEquals(javacConstructors.length, miniCompilerConstructors.length); + assertEquals(javacConstructors.length, raupenpilerConstructors.length); for(Constructor c : javacConstructors) { - for(Constructor miniCompilerConstructor : miniCompilerConstructors) { - assertEquals(c.getParameterCount(), miniCompilerConstructor.getParameterCount()); - if (c.getParameterCount() == miniCompilerConstructor.getParameterCount()) { - assertEquals(c.getName(), miniCompilerConstructor.getName()); + for(Constructor raupenpilerConstructor : raupenpilerConstructors) { + assertEquals(c.getParameterCount(), raupenpilerConstructor.getParameterCount()); + if (c.getParameterCount() == raupenpilerConstructor.getParameterCount()) { + assertEquals(c.getName(), raupenpilerConstructor.getName()); } } } @@ -1213,29 +1213,29 @@ public class E2EReflectionsTest { // Methods Method[] javacMethods = javacLoadedClass.getDeclaredMethods(); - Method[] miniCompilerMethods = miniCompilerLoadedClass.getDeclaredMethods(); + Method[] raupenpilerMethods = raupenpilerLoadedClass.getDeclaredMethods(); - assertEquals(javacMethods.length, miniCompilerMethods.length); + assertEquals(javacMethods.length, raupenpilerMethods.length); for (int i = 0; i < javacMethods.length; i++) { - assertEquals(javacMethods[i].getName(), miniCompilerMethods[i].getName()); - assertEquals(javacMethods[i].getReturnType(), miniCompilerMethods[i].getReturnType()); - assertEquals(javacMethods[i].getParameterCount(), miniCompilerMethods[i].getParameterCount()); - // assertEquals(javacMethods[i].getModifiers(), miniCompilerMethods[i].getModifiers()); + assertEquals(javacMethods[i].getName(), raupenpilerMethods[i].getName()); + assertEquals(javacMethods[i].getReturnType(), raupenpilerMethods[i].getReturnType()); + assertEquals(javacMethods[i].getParameterCount(), raupenpilerMethods[i].getParameterCount()); + // assertEquals(javacMethods[i].getModifiers(), raupenpilerMethods[i].getModifiers()); } // Fields Field[] javacLoadedClassDeclaredFields = javacLoadedClass.getDeclaredFields(); - Field[] miniCompilerLoadedClassDeclaredFields = miniCompilerLoadedClass.getDeclaredFields(); + Field[] raupenpilerLoadedClassDeclaredFields = raupenpilerLoadedClass.getDeclaredFields(); - assertEquals(javacLoadedClassDeclaredFields.length, miniCompilerLoadedClassDeclaredFields.length); + assertEquals(javacLoadedClassDeclaredFields.length, raupenpilerLoadedClassDeclaredFields.length); for (Field field : javacLoadedClassDeclaredFields) { - for (Field miniCompilerField : miniCompilerLoadedClassDeclaredFields) { - if (field.getName().equals(miniCompilerField.getName())) { - assertEquals(field.getType(), miniCompilerField.getType()); - // assertEquals(field.getModifiers(), miniCompilerField.getModifiers()); + for (Field raupenpilerField : raupenpilerLoadedClassDeclaredFields) { + if (field.getName().equals(raupenpilerField.getName())) { + assertEquals(field.getType(), raupenpilerField.getType()); + // assertEquals(field.getModifiers(), raupenpilerField.getModifiers()); } } } @@ -1250,8 +1250,8 @@ public class E2EReflectionsTest { public void IncrementTest() { final String FILE_NAME = "Increment"; try { - // compile with miniCompiler - Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/miniCompiler"}); + // compile with raupenpiler + Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/raupenpiler"}); // Get the system Java compiler JavaCompiler javac = ToolProvider.getSystemJavaCompiler(); // Assert that the compiler is available @@ -1265,28 +1265,28 @@ public class E2EReflectionsTest { ClassLoader javacClassLoader = new java.net.URLClassLoader(new java.net.URL[]{javacClassPath.toUri().toURL()}); Class javacLoadedClass = javacClassLoader.loadClass(FILE_NAME); - // Load the miniCompiler class - Path miniCompilerClassPath = Paths.get("src/test/resources/output/miniCompiler"); - ClassLoader miniCompilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{miniCompilerClassPath.toUri().toURL()}); - Class miniCompilerLoadedClass = miniCompilerClassLoader.loadClass(FILE_NAME); + // Load the raupenpiler class + Path raupenpilerClassPath = Paths.get("src/test/resources/output/raupenpiler"); + ClassLoader raupenpilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{raupenpilerClassPath.toUri().toURL()}); + Class raupenpilerLoadedClass = raupenpilerClassLoader.loadClass(FILE_NAME); // Class Name assertEquals(FILE_NAME, javacLoadedClass.getName()); - assertEquals(FILE_NAME, miniCompilerLoadedClass.getName()); + assertEquals(FILE_NAME, raupenpilerLoadedClass.getName()); // Constructors Constructor[] javacConstructors = javacLoadedClass.getDeclaredConstructors(); - Constructor[] miniCompilerConstructors = miniCompilerLoadedClass.getDeclaredConstructors(); + Constructor[] raupenpilerConstructors = raupenpilerLoadedClass.getDeclaredConstructors(); - assertEquals(javacConstructors.length, miniCompilerConstructors.length); + assertEquals(javacConstructors.length, raupenpilerConstructors.length); for(Constructor c : javacConstructors) { - for(Constructor miniCompilerConstructor : miniCompilerConstructors) { - assertEquals(c.getParameterCount(), miniCompilerConstructor.getParameterCount()); - if (c.getParameterCount() == miniCompilerConstructor.getParameterCount()) { - assertEquals(c.getName(), miniCompilerConstructor.getName()); + for(Constructor raupenpilerConstructor : raupenpilerConstructors) { + assertEquals(c.getParameterCount(), raupenpilerConstructor.getParameterCount()); + if (c.getParameterCount() == raupenpilerConstructor.getParameterCount()) { + assertEquals(c.getName(), raupenpilerConstructor.getName()); } } } @@ -1294,29 +1294,29 @@ public class E2EReflectionsTest { // Methods Method[] javacMethods = javacLoadedClass.getDeclaredMethods(); - Method[] miniCompilerMethods = miniCompilerLoadedClass.getDeclaredMethods(); + Method[] raupenpilerMethods = raupenpilerLoadedClass.getDeclaredMethods(); - assertEquals(javacMethods.length, miniCompilerMethods.length); + assertEquals(javacMethods.length, raupenpilerMethods.length); for (int i = 0; i < javacMethods.length; i++) { - assertEquals(javacMethods[i].getName(), miniCompilerMethods[i].getName()); - assertEquals(javacMethods[i].getReturnType(), miniCompilerMethods[i].getReturnType()); - assertEquals(javacMethods[i].getParameterCount(), miniCompilerMethods[i].getParameterCount()); - // assertEquals(javacMethods[i].getModifiers(), miniCompilerMethods[i].getModifiers()); + assertEquals(javacMethods[i].getName(), raupenpilerMethods[i].getName()); + assertEquals(javacMethods[i].getReturnType(), raupenpilerMethods[i].getReturnType()); + assertEquals(javacMethods[i].getParameterCount(), raupenpilerMethods[i].getParameterCount()); + // assertEquals(javacMethods[i].getModifiers(), raupenpilerMethods[i].getModifiers()); } // Fields Field[] javacLoadedClassDeclaredFields = javacLoadedClass.getDeclaredFields(); - Field[] miniCompilerLoadedClassDeclaredFields = miniCompilerLoadedClass.getDeclaredFields(); + Field[] raupenpilerLoadedClassDeclaredFields = raupenpilerLoadedClass.getDeclaredFields(); - assertEquals(javacLoadedClassDeclaredFields.length, miniCompilerLoadedClassDeclaredFields.length); + assertEquals(javacLoadedClassDeclaredFields.length, raupenpilerLoadedClassDeclaredFields.length); for (Field field : javacLoadedClassDeclaredFields) { - for (Field miniCompilerField : miniCompilerLoadedClassDeclaredFields) { - if (field.getName().equals(miniCompilerField.getName())) { - assertEquals(field.getType(), miniCompilerField.getType()); - // assertEquals(field.getModifiers(), miniCompilerField.getModifiers()); + for (Field raupenpilerField : raupenpilerLoadedClassDeclaredFields) { + if (field.getName().equals(raupenpilerField.getName())) { + assertEquals(field.getType(), raupenpilerField.getType()); + // assertEquals(field.getModifiers(), raupenpilerField.getModifiers()); } } } @@ -1331,8 +1331,8 @@ public class E2EReflectionsTest { public void MainMethodTest() { final String FILE_NAME = "MainMethod"; try { - // compile with miniCompiler - Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/miniCompiler"}); + // compile with raupenpiler + Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/raupenpiler"}); // Get the system Java compiler JavaCompiler javac = ToolProvider.getSystemJavaCompiler(); // Assert that the compiler is available @@ -1346,28 +1346,28 @@ public class E2EReflectionsTest { ClassLoader javacClassLoader = new java.net.URLClassLoader(new java.net.URL[]{javacClassPath.toUri().toURL()}); Class javacLoadedClass = javacClassLoader.loadClass(FILE_NAME); - // Load the miniCompiler class - Path miniCompilerClassPath = Paths.get("src/test/resources/output/miniCompiler"); - ClassLoader miniCompilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{miniCompilerClassPath.toUri().toURL()}); - Class miniCompilerLoadedClass = miniCompilerClassLoader.loadClass(FILE_NAME); + // Load the raupenpiler class + Path raupenpilerClassPath = Paths.get("src/test/resources/output/raupenpiler"); + ClassLoader raupenpilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{raupenpilerClassPath.toUri().toURL()}); + Class raupenpilerLoadedClass = raupenpilerClassLoader.loadClass(FILE_NAME); // Class Name assertEquals(FILE_NAME, javacLoadedClass.getName()); - assertEquals(FILE_NAME, miniCompilerLoadedClass.getName()); + assertEquals(FILE_NAME, raupenpilerLoadedClass.getName()); // Constructors Constructor[] javacConstructors = javacLoadedClass.getDeclaredConstructors(); - Constructor[] miniCompilerConstructors = miniCompilerLoadedClass.getDeclaredConstructors(); + Constructor[] raupenpilerConstructors = raupenpilerLoadedClass.getDeclaredConstructors(); - assertEquals(javacConstructors.length, miniCompilerConstructors.length); + assertEquals(javacConstructors.length, raupenpilerConstructors.length); for(Constructor c : javacConstructors) { - for(Constructor miniCompilerConstructor : miniCompilerConstructors) { - assertEquals(c.getParameterCount(), miniCompilerConstructor.getParameterCount()); - if (c.getParameterCount() == miniCompilerConstructor.getParameterCount()) { - assertEquals(c.getName(), miniCompilerConstructor.getName()); + for(Constructor raupenpilerConstructor : raupenpilerConstructors) { + assertEquals(c.getParameterCount(), raupenpilerConstructor.getParameterCount()); + if (c.getParameterCount() == raupenpilerConstructor.getParameterCount()) { + assertEquals(c.getName(), raupenpilerConstructor.getName()); } } } @@ -1375,29 +1375,29 @@ public class E2EReflectionsTest { // Methods Method[] javacMethods = javacLoadedClass.getDeclaredMethods(); - Method[] miniCompilerMethods = miniCompilerLoadedClass.getDeclaredMethods(); + Method[] raupenpilerMethods = raupenpilerLoadedClass.getDeclaredMethods(); - assertEquals(javacMethods.length, miniCompilerMethods.length); + assertEquals(javacMethods.length, raupenpilerMethods.length); for (int i = 0; i < javacMethods.length; i++) { - assertEquals(javacMethods[i].getName(), miniCompilerMethods[i].getName()); - assertEquals(javacMethods[i].getReturnType(), miniCompilerMethods[i].getReturnType()); - assertEquals(javacMethods[i].getParameterCount(), miniCompilerMethods[i].getParameterCount()); - // assertEquals(javacMethods[i].getModifiers(), miniCompilerMethods[i].getModifiers()); + assertEquals(javacMethods[i].getName(), raupenpilerMethods[i].getName()); + assertEquals(javacMethods[i].getReturnType(), raupenpilerMethods[i].getReturnType()); + assertEquals(javacMethods[i].getParameterCount(), raupenpilerMethods[i].getParameterCount()); + // assertEquals(javacMethods[i].getModifiers(), raupenpilerMethods[i].getModifiers()); } // Fields Field[] javacLoadedClassDeclaredFields = javacLoadedClass.getDeclaredFields(); - Field[] miniCompilerLoadedClassDeclaredFields = miniCompilerLoadedClass.getDeclaredFields(); + Field[] raupenpilerLoadedClassDeclaredFields = raupenpilerLoadedClass.getDeclaredFields(); - assertEquals(javacLoadedClassDeclaredFields.length, miniCompilerLoadedClassDeclaredFields.length); + assertEquals(javacLoadedClassDeclaredFields.length, raupenpilerLoadedClassDeclaredFields.length); for (Field field : javacLoadedClassDeclaredFields) { - for (Field miniCompilerField : miniCompilerLoadedClassDeclaredFields) { - if (field.getName().equals(miniCompilerField.getName())) { - assertEquals(field.getType(), miniCompilerField.getType()); - // assertEquals(field.getModifiers(), miniCompilerField.getModifiers()); + for (Field raupenpilerField : raupenpilerLoadedClassDeclaredFields) { + if (field.getName().equals(raupenpilerField.getName())) { + assertEquals(field.getType(), raupenpilerField.getType()); + // assertEquals(field.getModifiers(), raupenpilerField.getModifiers()); } } } @@ -1412,8 +1412,8 @@ public class E2EReflectionsTest { public void MultipleClassesTest() { final String FILE_NAME = "MultipleClasses"; try { - // compile with miniCompiler - Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/miniCompiler"}); + // compile with raupenpiler + Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/raupenpiler"}); // Get the system Java compiler JavaCompiler javac = ToolProvider.getSystemJavaCompiler(); // Assert that the compiler is available @@ -1427,28 +1427,28 @@ public class E2EReflectionsTest { ClassLoader javacClassLoader = new java.net.URLClassLoader(new java.net.URL[]{javacClassPath.toUri().toURL()}); Class javacLoadedClass = javacClassLoader.loadClass(FILE_NAME); - // Load the miniCompiler class - Path miniCompilerClassPath = Paths.get("src/test/resources/output/miniCompiler"); - ClassLoader miniCompilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{miniCompilerClassPath.toUri().toURL()}); - Class miniCompilerLoadedClass = miniCompilerClassLoader.loadClass(FILE_NAME); + // Load the raupenpiler class + Path raupenpilerClassPath = Paths.get("src/test/resources/output/raupenpiler"); + ClassLoader raupenpilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{raupenpilerClassPath.toUri().toURL()}); + Class raupenpilerLoadedClass = raupenpilerClassLoader.loadClass(FILE_NAME); // Class Name assertEquals(FILE_NAME, javacLoadedClass.getName()); - assertEquals(FILE_NAME, miniCompilerLoadedClass.getName()); + assertEquals(FILE_NAME, raupenpilerLoadedClass.getName()); // Constructors Constructor[] javacConstructors = javacLoadedClass.getDeclaredConstructors(); - Constructor[] miniCompilerConstructors = miniCompilerLoadedClass.getDeclaredConstructors(); + Constructor[] raupenpilerConstructors = raupenpilerLoadedClass.getDeclaredConstructors(); - assertEquals(javacConstructors.length, miniCompilerConstructors.length); + assertEquals(javacConstructors.length, raupenpilerConstructors.length); for(Constructor c : javacConstructors) { - for(Constructor miniCompilerConstructor : miniCompilerConstructors) { - assertEquals(c.getParameterCount(), miniCompilerConstructor.getParameterCount()); - if (c.getParameterCount() == miniCompilerConstructor.getParameterCount()) { - assertEquals(c.getName(), miniCompilerConstructor.getName()); + for(Constructor raupenpilerConstructor : raupenpilerConstructors) { + assertEquals(c.getParameterCount(), raupenpilerConstructor.getParameterCount()); + if (c.getParameterCount() == raupenpilerConstructor.getParameterCount()) { + assertEquals(c.getName(), raupenpilerConstructor.getName()); } } } @@ -1456,29 +1456,29 @@ public class E2EReflectionsTest { // Methods Method[] javacMethods = javacLoadedClass.getDeclaredMethods(); - Method[] miniCompilerMethods = miniCompilerLoadedClass.getDeclaredMethods(); + Method[] raupenpilerMethods = raupenpilerLoadedClass.getDeclaredMethods(); - assertEquals(javacMethods.length, miniCompilerMethods.length); + assertEquals(javacMethods.length, raupenpilerMethods.length); for (int i = 0; i < javacMethods.length; i++) { - assertEquals(javacMethods[i].getName(), miniCompilerMethods[i].getName()); - assertEquals(javacMethods[i].getReturnType(), miniCompilerMethods[i].getReturnType()); - assertEquals(javacMethods[i].getParameterCount(), miniCompilerMethods[i].getParameterCount()); - // assertEquals(javacMethods[i].getModifiers(), miniCompilerMethods[i].getModifiers()); + assertEquals(javacMethods[i].getName(), raupenpilerMethods[i].getName()); + assertEquals(javacMethods[i].getReturnType(), raupenpilerMethods[i].getReturnType()); + assertEquals(javacMethods[i].getParameterCount(), raupenpilerMethods[i].getParameterCount()); + // assertEquals(javacMethods[i].getModifiers(), raupenpilerMethods[i].getModifiers()); } // Fields Field[] javacLoadedClassDeclaredFields = javacLoadedClass.getDeclaredFields(); - Field[] miniCompilerLoadedClassDeclaredFields = miniCompilerLoadedClass.getDeclaredFields(); + Field[] raupenpilerLoadedClassDeclaredFields = raupenpilerLoadedClass.getDeclaredFields(); - assertEquals(javacLoadedClassDeclaredFields.length, miniCompilerLoadedClassDeclaredFields.length); + assertEquals(javacLoadedClassDeclaredFields.length, raupenpilerLoadedClassDeclaredFields.length); for (Field field : javacLoadedClassDeclaredFields) { - for (Field miniCompilerField : miniCompilerLoadedClassDeclaredFields) { - if (field.getName().equals(miniCompilerField.getName())) { - assertEquals(field.getType(), miniCompilerField.getType()); - // assertEquals(field.getModifiers(), miniCompilerField.getModifiers()); + for (Field raupenpilerField : raupenpilerLoadedClassDeclaredFields) { + if (field.getName().equals(raupenpilerField.getName())) { + assertEquals(field.getType(), raupenpilerField.getType()); + // assertEquals(field.getModifiers(), raupenpilerField.getModifiers()); } } } @@ -1493,8 +1493,8 @@ public class E2EReflectionsTest { public void NullTest() { final String FILE_NAME = "Null"; try { - // compile with miniCompiler - Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/miniCompiler"}); + // compile with raupenpiler + Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/raupenpiler"}); // Get the system Java compiler JavaCompiler javac = ToolProvider.getSystemJavaCompiler(); // Assert that the compiler is available @@ -1508,28 +1508,28 @@ public class E2EReflectionsTest { ClassLoader javacClassLoader = new java.net.URLClassLoader(new java.net.URL[]{javacClassPath.toUri().toURL()}); Class javacLoadedClass = javacClassLoader.loadClass(FILE_NAME); - // Load the miniCompiler class - Path miniCompilerClassPath = Paths.get("src/test/resources/output/miniCompiler"); - ClassLoader miniCompilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{miniCompilerClassPath.toUri().toURL()}); - Class miniCompilerLoadedClass = miniCompilerClassLoader.loadClass(FILE_NAME); + // Load the raupenpiler class + Path raupenpilerClassPath = Paths.get("src/test/resources/output/raupenpiler"); + ClassLoader raupenpilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{raupenpilerClassPath.toUri().toURL()}); + Class raupenpilerLoadedClass = raupenpilerClassLoader.loadClass(FILE_NAME); // Class Name assertEquals(FILE_NAME, javacLoadedClass.getName()); - assertEquals(FILE_NAME, miniCompilerLoadedClass.getName()); + assertEquals(FILE_NAME, raupenpilerLoadedClass.getName()); // Constructors Constructor[] javacConstructors = javacLoadedClass.getDeclaredConstructors(); - Constructor[] miniCompilerConstructors = miniCompilerLoadedClass.getDeclaredConstructors(); + Constructor[] raupenpilerConstructors = raupenpilerLoadedClass.getDeclaredConstructors(); - assertEquals(javacConstructors.length, miniCompilerConstructors.length); + assertEquals(javacConstructors.length, raupenpilerConstructors.length); for(Constructor c : javacConstructors) { - for(Constructor miniCompilerConstructor : miniCompilerConstructors) { - assertEquals(c.getParameterCount(), miniCompilerConstructor.getParameterCount()); - if (c.getParameterCount() == miniCompilerConstructor.getParameterCount()) { - assertEquals(c.getName(), miniCompilerConstructor.getName()); + for(Constructor raupenpilerConstructor : raupenpilerConstructors) { + assertEquals(c.getParameterCount(), raupenpilerConstructor.getParameterCount()); + if (c.getParameterCount() == raupenpilerConstructor.getParameterCount()) { + assertEquals(c.getName(), raupenpilerConstructor.getName()); } } } @@ -1537,29 +1537,29 @@ public class E2EReflectionsTest { // Methods Method[] javacMethods = javacLoadedClass.getDeclaredMethods(); - Method[] miniCompilerMethods = miniCompilerLoadedClass.getDeclaredMethods(); + Method[] raupenpilerMethods = raupenpilerLoadedClass.getDeclaredMethods(); - assertEquals(javacMethods.length, miniCompilerMethods.length); + assertEquals(javacMethods.length, raupenpilerMethods.length); for (int i = 0; i < javacMethods.length; i++) { - assertEquals(javacMethods[i].getName(), miniCompilerMethods[i].getName()); - assertEquals(javacMethods[i].getReturnType(), miniCompilerMethods[i].getReturnType()); - assertEquals(javacMethods[i].getParameterCount(), miniCompilerMethods[i].getParameterCount()); - // assertEquals(javacMethods[i].getModifiers(), miniCompilerMethods[i].getModifiers()); + assertEquals(javacMethods[i].getName(), raupenpilerMethods[i].getName()); + assertEquals(javacMethods[i].getReturnType(), raupenpilerMethods[i].getReturnType()); + assertEquals(javacMethods[i].getParameterCount(), raupenpilerMethods[i].getParameterCount()); + // assertEquals(javacMethods[i].getModifiers(), raupenpilerMethods[i].getModifiers()); } // Fields Field[] javacLoadedClassDeclaredFields = javacLoadedClass.getDeclaredFields(); - Field[] miniCompilerLoadedClassDeclaredFields = miniCompilerLoadedClass.getDeclaredFields(); + Field[] raupenpilerLoadedClassDeclaredFields = raupenpilerLoadedClass.getDeclaredFields(); - assertEquals(javacLoadedClassDeclaredFields.length, miniCompilerLoadedClassDeclaredFields.length); + assertEquals(javacLoadedClassDeclaredFields.length, raupenpilerLoadedClassDeclaredFields.length); for (Field field : javacLoadedClassDeclaredFields) { - for (Field miniCompilerField : miniCompilerLoadedClassDeclaredFields) { - if (field.getName().equals(miniCompilerField.getName())) { - assertEquals(field.getType(), miniCompilerField.getType()); - // assertEquals(field.getModifiers(), miniCompilerField.getModifiers()); + for (Field raupenpilerField : raupenpilerLoadedClassDeclaredFields) { + if (field.getName().equals(raupenpilerField.getName())) { + assertEquals(field.getType(), raupenpilerField.getType()); + // assertEquals(field.getModifiers(), raupenpilerField.getModifiers()); } } } @@ -1574,8 +1574,8 @@ public class E2EReflectionsTest { public void SelfReferenceTest() { final String FILE_NAME = "SelfReference"; try { - // compile with miniCompiler - Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/miniCompiler"}); + // compile with raupenpiler + Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/raupenpiler"}); // Get the system Java compiler JavaCompiler javac = ToolProvider.getSystemJavaCompiler(); // Assert that the compiler is available @@ -1589,28 +1589,28 @@ public class E2EReflectionsTest { ClassLoader javacClassLoader = new java.net.URLClassLoader(new java.net.URL[]{javacClassPath.toUri().toURL()}); Class javacLoadedClass = javacClassLoader.loadClass(FILE_NAME); - // Load the miniCompiler class - Path miniCompilerClassPath = Paths.get("src/test/resources/output/miniCompiler"); - ClassLoader miniCompilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{miniCompilerClassPath.toUri().toURL()}); - Class miniCompilerLoadedClass = miniCompilerClassLoader.loadClass(FILE_NAME); + // Load the raupenpiler class + Path raupenpilerClassPath = Paths.get("src/test/resources/output/raupenpiler"); + ClassLoader raupenpilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{raupenpilerClassPath.toUri().toURL()}); + Class raupenpilerLoadedClass = raupenpilerClassLoader.loadClass(FILE_NAME); // Class Name assertEquals(FILE_NAME, javacLoadedClass.getName()); - assertEquals(FILE_NAME, miniCompilerLoadedClass.getName()); + assertEquals(FILE_NAME, raupenpilerLoadedClass.getName()); // Constructors Constructor[] javacConstructors = javacLoadedClass.getDeclaredConstructors(); - Constructor[] miniCompilerConstructors = miniCompilerLoadedClass.getDeclaredConstructors(); + Constructor[] raupenpilerConstructors = raupenpilerLoadedClass.getDeclaredConstructors(); - assertEquals(javacConstructors.length, miniCompilerConstructors.length); + assertEquals(javacConstructors.length, raupenpilerConstructors.length); for(Constructor c : javacConstructors) { - for(Constructor miniCompilerConstructor : miniCompilerConstructors) { - assertEquals(c.getParameterCount(), miniCompilerConstructor.getParameterCount()); - if (c.getParameterCount() == miniCompilerConstructor.getParameterCount()) { - assertEquals(c.getName(), miniCompilerConstructor.getName()); + for(Constructor raupenpilerConstructor : raupenpilerConstructors) { + assertEquals(c.getParameterCount(), raupenpilerConstructor.getParameterCount()); + if (c.getParameterCount() == raupenpilerConstructor.getParameterCount()) { + assertEquals(c.getName(), raupenpilerConstructor.getName()); } } } @@ -1618,29 +1618,29 @@ public class E2EReflectionsTest { // Methods Method[] javacMethods = javacLoadedClass.getDeclaredMethods(); - Method[] miniCompilerMethods = miniCompilerLoadedClass.getDeclaredMethods(); + Method[] raupenpilerMethods = raupenpilerLoadedClass.getDeclaredMethods(); - assertEquals(javacMethods.length, miniCompilerMethods.length); + assertEquals(javacMethods.length, raupenpilerMethods.length); for (int i = 0; i < javacMethods.length; i++) { - assertEquals(javacMethods[i].getName(), miniCompilerMethods[i].getName()); - assertEquals(javacMethods[i].getReturnType(), miniCompilerMethods[i].getReturnType()); - assertEquals(javacMethods[i].getParameterCount(), miniCompilerMethods[i].getParameterCount()); - // assertEquals(javacMethods[i].getModifiers(), miniCompilerMethods[i].getModifiers()); + assertEquals(javacMethods[i].getName(), raupenpilerMethods[i].getName()); + assertEquals(javacMethods[i].getReturnType(), raupenpilerMethods[i].getReturnType()); + assertEquals(javacMethods[i].getParameterCount(), raupenpilerMethods[i].getParameterCount()); + // assertEquals(javacMethods[i].getModifiers(), raupenpilerMethods[i].getModifiers()); } // Fields Field[] javacLoadedClassDeclaredFields = javacLoadedClass.getDeclaredFields(); - Field[] miniCompilerLoadedClassDeclaredFields = miniCompilerLoadedClass.getDeclaredFields(); + Field[] raupenpilerLoadedClassDeclaredFields = raupenpilerLoadedClass.getDeclaredFields(); - assertEquals(javacLoadedClassDeclaredFields.length, miniCompilerLoadedClassDeclaredFields.length); + assertEquals(javacLoadedClassDeclaredFields.length, raupenpilerLoadedClassDeclaredFields.length); for (Field field : javacLoadedClassDeclaredFields) { - for (Field miniCompilerField : miniCompilerLoadedClassDeclaredFields) { - if (field.getName().equals(miniCompilerField.getName())) { - assertEquals(field.getType(), miniCompilerField.getType()); - // assertEquals(field.getModifiers(), miniCompilerField.getModifiers()); + for (Field raupenpilerField : raupenpilerLoadedClassDeclaredFields) { + if (field.getName().equals(raupenpilerField.getName())) { + assertEquals(field.getType(), raupenpilerField.getType()); + // assertEquals(field.getModifiers(), raupenpilerField.getModifiers()); } } } @@ -1655,8 +1655,8 @@ public class E2EReflectionsTest { public void ThisDotTest() { final String FILE_NAME = "ThisDot"; try { - // compile with miniCompiler - Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/miniCompiler"}); + // compile with raupenpiler + Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/raupenpiler"}); // Get the system Java compiler JavaCompiler javac = ToolProvider.getSystemJavaCompiler(); // Assert that the compiler is available @@ -1670,28 +1670,28 @@ public class E2EReflectionsTest { ClassLoader javacClassLoader = new java.net.URLClassLoader(new java.net.URL[]{javacClassPath.toUri().toURL()}); Class javacLoadedClass = javacClassLoader.loadClass(FILE_NAME); - // Load the miniCompiler class - Path miniCompilerClassPath = Paths.get("src/test/resources/output/miniCompiler"); - ClassLoader miniCompilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{miniCompilerClassPath.toUri().toURL()}); - Class miniCompilerLoadedClass = miniCompilerClassLoader.loadClass(FILE_NAME); + // Load the raupenpiler class + Path raupenpilerClassPath = Paths.get("src/test/resources/output/raupenpiler"); + ClassLoader raupenpilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{raupenpilerClassPath.toUri().toURL()}); + Class raupenpilerLoadedClass = raupenpilerClassLoader.loadClass(FILE_NAME); // Class Name assertEquals(FILE_NAME, javacLoadedClass.getName()); - assertEquals(FILE_NAME, miniCompilerLoadedClass.getName()); + assertEquals(FILE_NAME, raupenpilerLoadedClass.getName()); // Constructors Constructor[] javacConstructors = javacLoadedClass.getDeclaredConstructors(); - Constructor[] miniCompilerConstructors = miniCompilerLoadedClass.getDeclaredConstructors(); + Constructor[] raupenpilerConstructors = raupenpilerLoadedClass.getDeclaredConstructors(); - assertEquals(javacConstructors.length, miniCompilerConstructors.length); + assertEquals(javacConstructors.length, raupenpilerConstructors.length); for(Constructor c : javacConstructors) { - for(Constructor miniCompilerConstructor : miniCompilerConstructors) { - assertEquals(c.getParameterCount(), miniCompilerConstructor.getParameterCount()); - if (c.getParameterCount() == miniCompilerConstructor.getParameterCount()) { - assertEquals(c.getName(), miniCompilerConstructor.getName()); + for(Constructor raupenpilerConstructor : raupenpilerConstructors) { + assertEquals(c.getParameterCount(), raupenpilerConstructor.getParameterCount()); + if (c.getParameterCount() == raupenpilerConstructor.getParameterCount()) { + assertEquals(c.getName(), raupenpilerConstructor.getName()); } } } @@ -1699,29 +1699,29 @@ public class E2EReflectionsTest { // Methods Method[] javacMethods = javacLoadedClass.getDeclaredMethods(); - Method[] miniCompilerMethods = miniCompilerLoadedClass.getDeclaredMethods(); + Method[] raupenpilerMethods = raupenpilerLoadedClass.getDeclaredMethods(); - assertEquals(javacMethods.length, miniCompilerMethods.length); + assertEquals(javacMethods.length, raupenpilerMethods.length); for (int i = 0; i < javacMethods.length; i++) { - assertEquals(javacMethods[i].getName(), miniCompilerMethods[i].getName()); - assertEquals(javacMethods[i].getReturnType(), miniCompilerMethods[i].getReturnType()); - assertEquals(javacMethods[i].getParameterCount(), miniCompilerMethods[i].getParameterCount()); - // assertEquals(javacMethods[i].getModifiers(), miniCompilerMethods[i].getModifiers()); + assertEquals(javacMethods[i].getName(), raupenpilerMethods[i].getName()); + assertEquals(javacMethods[i].getReturnType(), raupenpilerMethods[i].getReturnType()); + assertEquals(javacMethods[i].getParameterCount(), raupenpilerMethods[i].getParameterCount()); + // assertEquals(javacMethods[i].getModifiers(), raupenpilerMethods[i].getModifiers()); } // Fields Field[] javacLoadedClassDeclaredFields = javacLoadedClass.getDeclaredFields(); - Field[] miniCompilerLoadedClassDeclaredFields = miniCompilerLoadedClass.getDeclaredFields(); + Field[] raupenpilerLoadedClassDeclaredFields = raupenpilerLoadedClass.getDeclaredFields(); - assertEquals(javacLoadedClassDeclaredFields.length, miniCompilerLoadedClassDeclaredFields.length); + assertEquals(javacLoadedClassDeclaredFields.length, raupenpilerLoadedClassDeclaredFields.length); for (Field field : javacLoadedClassDeclaredFields) { - for (Field miniCompilerField : miniCompilerLoadedClassDeclaredFields) { - if (field.getName().equals(miniCompilerField.getName())) { - assertEquals(field.getType(), miniCompilerField.getType()); - // assertEquals(field.getModifiers(), miniCompilerField.getModifiers()); + for (Field raupenpilerField : raupenpilerLoadedClassDeclaredFields) { + if (field.getName().equals(raupenpilerField.getName())) { + assertEquals(field.getType(), raupenpilerField.getType()); + // assertEquals(field.getModifiers(), raupenpilerField.getModifiers()); } } } @@ -1736,8 +1736,8 @@ public class E2EReflectionsTest { public void VariableCalculationTest() { final String FILE_NAME = "VariableCalculation"; try { - // compile with miniCompiler - Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/miniCompiler"}); + // compile with raupenpiler + Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/raupenpiler"}); // Get the system Java compiler JavaCompiler javac = ToolProvider.getSystemJavaCompiler(); // Assert that the compiler is available @@ -1751,28 +1751,28 @@ public class E2EReflectionsTest { ClassLoader javacClassLoader = new java.net.URLClassLoader(new java.net.URL[]{javacClassPath.toUri().toURL()}); Class javacLoadedClass = javacClassLoader.loadClass(FILE_NAME); - // Load the miniCompiler class - Path miniCompilerClassPath = Paths.get("src/test/resources/output/miniCompiler"); - ClassLoader miniCompilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{miniCompilerClassPath.toUri().toURL()}); - Class miniCompilerLoadedClass = miniCompilerClassLoader.loadClass(FILE_NAME); + // Load the raupenpiler class + Path raupenpilerClassPath = Paths.get("src/test/resources/output/raupenpiler"); + ClassLoader raupenpilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{raupenpilerClassPath.toUri().toURL()}); + Class raupenpilerLoadedClass = raupenpilerClassLoader.loadClass(FILE_NAME); // Class Name assertEquals(FILE_NAME, javacLoadedClass.getName()); - assertEquals(FILE_NAME, miniCompilerLoadedClass.getName()); + assertEquals(FILE_NAME, raupenpilerLoadedClass.getName()); // Constructors Constructor[] javacConstructors = javacLoadedClass.getDeclaredConstructors(); - Constructor[] miniCompilerConstructors = miniCompilerLoadedClass.getDeclaredConstructors(); + Constructor[] raupenpilerConstructors = raupenpilerLoadedClass.getDeclaredConstructors(); - assertEquals(javacConstructors.length, miniCompilerConstructors.length); + assertEquals(javacConstructors.length, raupenpilerConstructors.length); for(Constructor c : javacConstructors) { - for(Constructor miniCompilerConstructor : miniCompilerConstructors) { - assertEquals(c.getParameterCount(), miniCompilerConstructor.getParameterCount()); - if (c.getParameterCount() == miniCompilerConstructor.getParameterCount()) { - assertEquals(c.getName(), miniCompilerConstructor.getName()); + for(Constructor raupenpilerConstructor : raupenpilerConstructors) { + assertEquals(c.getParameterCount(), raupenpilerConstructor.getParameterCount()); + if (c.getParameterCount() == raupenpilerConstructor.getParameterCount()) { + assertEquals(c.getName(), raupenpilerConstructor.getName()); } } } @@ -1780,29 +1780,29 @@ public class E2EReflectionsTest { // Methods Method[] javacMethods = javacLoadedClass.getDeclaredMethods(); - Method[] miniCompilerMethods = miniCompilerLoadedClass.getDeclaredMethods(); + Method[] raupenpilerMethods = raupenpilerLoadedClass.getDeclaredMethods(); - assertEquals(javacMethods.length, miniCompilerMethods.length); + assertEquals(javacMethods.length, raupenpilerMethods.length); for (int i = 0; i < javacMethods.length; i++) { - assertEquals(javacMethods[i].getName(), miniCompilerMethods[i].getName()); - assertEquals(javacMethods[i].getReturnType(), miniCompilerMethods[i].getReturnType()); - assertEquals(javacMethods[i].getParameterCount(), miniCompilerMethods[i].getParameterCount()); - // assertEquals(javacMethods[i].getModifiers(), miniCompilerMethods[i].getModifiers()); + assertEquals(javacMethods[i].getName(), raupenpilerMethods[i].getName()); + assertEquals(javacMethods[i].getReturnType(), raupenpilerMethods[i].getReturnType()); + assertEquals(javacMethods[i].getParameterCount(), raupenpilerMethods[i].getParameterCount()); + // assertEquals(javacMethods[i].getModifiers(), raupenpilerMethods[i].getModifiers()); } // Fields Field[] javacLoadedClassDeclaredFields = javacLoadedClass.getDeclaredFields(); - Field[] miniCompilerLoadedClassDeclaredFields = miniCompilerLoadedClass.getDeclaredFields(); + Field[] raupenpilerLoadedClassDeclaredFields = raupenpilerLoadedClass.getDeclaredFields(); - assertEquals(javacLoadedClassDeclaredFields.length, miniCompilerLoadedClassDeclaredFields.length); + assertEquals(javacLoadedClassDeclaredFields.length, raupenpilerLoadedClassDeclaredFields.length); for (Field field : javacLoadedClassDeclaredFields) { - for (Field miniCompilerField : miniCompilerLoadedClassDeclaredFields) { - if (field.getName().equals(miniCompilerField.getName())) { - assertEquals(field.getType(), miniCompilerField.getType()); - // assertEquals(field.getModifiers(), miniCompilerField.getModifiers()); + for (Field raupenpilerField : raupenpilerLoadedClassDeclaredFields) { + if (field.getName().equals(raupenpilerField.getName())) { + assertEquals(field.getType(), raupenpilerField.getType()); + // assertEquals(field.getModifiers(), raupenpilerField.getModifiers()); } } } @@ -1817,8 +1817,8 @@ public class E2EReflectionsTest { public void VariableCompareTest() { final String FILE_NAME = "VariableCompare"; try { - // compile with miniCompiler - Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/miniCompiler"}); + // compile with raupenpiler + Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/raupenpiler"}); // Get the system Java compiler JavaCompiler javac = ToolProvider.getSystemJavaCompiler(); // Assert that the compiler is available @@ -1832,28 +1832,28 @@ public class E2EReflectionsTest { ClassLoader javacClassLoader = new java.net.URLClassLoader(new java.net.URL[]{javacClassPath.toUri().toURL()}); Class javacLoadedClass = javacClassLoader.loadClass(FILE_NAME); - // Load the miniCompiler class - Path miniCompilerClassPath = Paths.get("src/test/resources/output/miniCompiler"); - ClassLoader miniCompilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{miniCompilerClassPath.toUri().toURL()}); - Class miniCompilerLoadedClass = miniCompilerClassLoader.loadClass(FILE_NAME); + // Load the raupenpiler class + Path raupenpilerClassPath = Paths.get("src/test/resources/output/raupenpiler"); + ClassLoader raupenpilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{raupenpilerClassPath.toUri().toURL()}); + Class raupenpilerLoadedClass = raupenpilerClassLoader.loadClass(FILE_NAME); // Class Name assertEquals(FILE_NAME, javacLoadedClass.getName()); - assertEquals(FILE_NAME, miniCompilerLoadedClass.getName()); + assertEquals(FILE_NAME, raupenpilerLoadedClass.getName()); // Constructors Constructor[] javacConstructors = javacLoadedClass.getDeclaredConstructors(); - Constructor[] miniCompilerConstructors = miniCompilerLoadedClass.getDeclaredConstructors(); + Constructor[] raupenpilerConstructors = raupenpilerLoadedClass.getDeclaredConstructors(); - assertEquals(javacConstructors.length, miniCompilerConstructors.length); + assertEquals(javacConstructors.length, raupenpilerConstructors.length); for(Constructor c : javacConstructors) { - for(Constructor miniCompilerConstructor : miniCompilerConstructors) { - assertEquals(c.getParameterCount(), miniCompilerConstructor.getParameterCount()); - if (c.getParameterCount() == miniCompilerConstructor.getParameterCount()) { - assertEquals(c.getName(), miniCompilerConstructor.getName()); + for(Constructor raupenpilerConstructor : raupenpilerConstructors) { + assertEquals(c.getParameterCount(), raupenpilerConstructor.getParameterCount()); + if (c.getParameterCount() == raupenpilerConstructor.getParameterCount()) { + assertEquals(c.getName(), raupenpilerConstructor.getName()); } } } @@ -1861,29 +1861,29 @@ public class E2EReflectionsTest { // Methods Method[] javacMethods = javacLoadedClass.getDeclaredMethods(); - Method[] miniCompilerMethods = miniCompilerLoadedClass.getDeclaredMethods(); + Method[] raupenpilerMethods = raupenpilerLoadedClass.getDeclaredMethods(); - assertEquals(javacMethods.length, miniCompilerMethods.length); + assertEquals(javacMethods.length, raupenpilerMethods.length); for (int i = 0; i < javacMethods.length; i++) { - assertEquals(javacMethods[i].getName(), miniCompilerMethods[i].getName()); - assertEquals(javacMethods[i].getReturnType(), miniCompilerMethods[i].getReturnType()); - assertEquals(javacMethods[i].getParameterCount(), miniCompilerMethods[i].getParameterCount()); - // assertEquals(javacMethods[i].getModifiers(), miniCompilerMethods[i].getModifiers()); + assertEquals(javacMethods[i].getName(), raupenpilerMethods[i].getName()); + assertEquals(javacMethods[i].getReturnType(), raupenpilerMethods[i].getReturnType()); + assertEquals(javacMethods[i].getParameterCount(), raupenpilerMethods[i].getParameterCount()); + // assertEquals(javacMethods[i].getModifiers(), raupenpilerMethods[i].getModifiers()); } // Fields Field[] javacLoadedClassDeclaredFields = javacLoadedClass.getDeclaredFields(); - Field[] miniCompilerLoadedClassDeclaredFields = miniCompilerLoadedClass.getDeclaredFields(); + Field[] raupenpilerLoadedClassDeclaredFields = raupenpilerLoadedClass.getDeclaredFields(); - assertEquals(javacLoadedClassDeclaredFields.length, miniCompilerLoadedClassDeclaredFields.length); + assertEquals(javacLoadedClassDeclaredFields.length, raupenpilerLoadedClassDeclaredFields.length); for (Field field : javacLoadedClassDeclaredFields) { - for (Field miniCompilerField : miniCompilerLoadedClassDeclaredFields) { - if (field.getName().equals(miniCompilerField.getName())) { - assertEquals(field.getType(), miniCompilerField.getType()); - // assertEquals(field.getModifiers(), miniCompilerField.getModifiers()); + for (Field raupenpilerField : raupenpilerLoadedClassDeclaredFields) { + if (field.getName().equals(raupenpilerField.getName())) { + assertEquals(field.getType(), raupenpilerField.getType()); + // assertEquals(field.getModifiers(), raupenpilerField.getModifiers()); } } } @@ -1898,8 +1898,8 @@ public class E2EReflectionsTest { public void VoidMethodTest() { final String FILE_NAME = "VoidMethod"; try { - // compile with miniCompiler - Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/miniCompiler"}); + // compile with raupenpiler + Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/raupenpiler"}); // Get the system Java compiler JavaCompiler javac = ToolProvider.getSystemJavaCompiler(); // Assert that the compiler is available @@ -1913,28 +1913,28 @@ public class E2EReflectionsTest { ClassLoader javacClassLoader = new java.net.URLClassLoader(new java.net.URL[]{javacClassPath.toUri().toURL()}); Class javacLoadedClass = javacClassLoader.loadClass(FILE_NAME); - // Load the miniCompiler class - Path miniCompilerClassPath = Paths.get("src/test/resources/output/miniCompiler"); - ClassLoader miniCompilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{miniCompilerClassPath.toUri().toURL()}); - Class miniCompilerLoadedClass = miniCompilerClassLoader.loadClass(FILE_NAME); + // Load the raupenpiler class + Path raupenpilerClassPath = Paths.get("src/test/resources/output/raupenpiler"); + ClassLoader raupenpilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{raupenpilerClassPath.toUri().toURL()}); + Class raupenpilerLoadedClass = raupenpilerClassLoader.loadClass(FILE_NAME); // Class Name assertEquals(FILE_NAME, javacLoadedClass.getName()); - assertEquals(FILE_NAME, miniCompilerLoadedClass.getName()); + assertEquals(FILE_NAME, raupenpilerLoadedClass.getName()); // Constructors Constructor[] javacConstructors = javacLoadedClass.getDeclaredConstructors(); - Constructor[] miniCompilerConstructors = miniCompilerLoadedClass.getDeclaredConstructors(); + Constructor[] raupenpilerConstructors = raupenpilerLoadedClass.getDeclaredConstructors(); - assertEquals(javacConstructors.length, miniCompilerConstructors.length); + assertEquals(javacConstructors.length, raupenpilerConstructors.length); for(Constructor c : javacConstructors) { - for(Constructor miniCompilerConstructor : miniCompilerConstructors) { - assertEquals(c.getParameterCount(), miniCompilerConstructor.getParameterCount()); - if (c.getParameterCount() == miniCompilerConstructor.getParameterCount()) { - assertEquals(c.getName(), miniCompilerConstructor.getName()); + for(Constructor raupenpilerConstructor : raupenpilerConstructors) { + assertEquals(c.getParameterCount(), raupenpilerConstructor.getParameterCount()); + if (c.getParameterCount() == raupenpilerConstructor.getParameterCount()) { + assertEquals(c.getName(), raupenpilerConstructor.getName()); } } } @@ -1942,29 +1942,29 @@ public class E2EReflectionsTest { // Methods Method[] javacMethods = javacLoadedClass.getDeclaredMethods(); - Method[] miniCompilerMethods = miniCompilerLoadedClass.getDeclaredMethods(); + Method[] raupenpilerMethods = raupenpilerLoadedClass.getDeclaredMethods(); - assertEquals(javacMethods.length, miniCompilerMethods.length); + assertEquals(javacMethods.length, raupenpilerMethods.length); for (int i = 0; i < javacMethods.length; i++) { - assertEquals(javacMethods[i].getName(), miniCompilerMethods[i].getName()); - assertEquals(javacMethods[i].getReturnType(), miniCompilerMethods[i].getReturnType()); - assertEquals(javacMethods[i].getParameterCount(), miniCompilerMethods[i].getParameterCount()); - // assertEquals(javacMethods[i].getModifiers(), miniCompilerMethods[i].getModifiers()); + assertEquals(javacMethods[i].getName(), raupenpilerMethods[i].getName()); + assertEquals(javacMethods[i].getReturnType(), raupenpilerMethods[i].getReturnType()); + assertEquals(javacMethods[i].getParameterCount(), raupenpilerMethods[i].getParameterCount()); + // assertEquals(javacMethods[i].getModifiers(), raupenpilerMethods[i].getModifiers()); } // Fields Field[] javacLoadedClassDeclaredFields = javacLoadedClass.getDeclaredFields(); - Field[] miniCompilerLoadedClassDeclaredFields = miniCompilerLoadedClass.getDeclaredFields(); + Field[] raupenpilerLoadedClassDeclaredFields = raupenpilerLoadedClass.getDeclaredFields(); - assertEquals(javacLoadedClassDeclaredFields.length, miniCompilerLoadedClassDeclaredFields.length); + assertEquals(javacLoadedClassDeclaredFields.length, raupenpilerLoadedClassDeclaredFields.length); for (Field field : javacLoadedClassDeclaredFields) { - for (Field miniCompilerField : miniCompilerLoadedClassDeclaredFields) { - if (field.getName().equals(miniCompilerField.getName())) { - assertEquals(field.getType(), miniCompilerField.getType()); - // assertEquals(field.getModifiers(), miniCompilerField.getModifiers()); + for (Field raupenpilerField : raupenpilerLoadedClassDeclaredFields) { + if (field.getName().equals(raupenpilerField.getName())) { + assertEquals(field.getType(), raupenpilerField.getType()); + // assertEquals(field.getModifiers(), raupenpilerField.getModifiers()); } } } @@ -1979,8 +1979,8 @@ public class E2EReflectionsTest { public void WhileTest() { final String FILE_NAME = "While"; try { - // compile with miniCompiler - Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/miniCompiler"}); + // compile with raupenpiler + Main.main(new String[]{"src/test/resources/input/singleFeatureTests/" + FILE_NAME + ".java", "src/test/resources/output/raupenpiler"}); // Get the system Java compiler JavaCompiler javac = ToolProvider.getSystemJavaCompiler(); // Assert that the compiler is available @@ -1994,28 +1994,28 @@ public class E2EReflectionsTest { ClassLoader javacClassLoader = new java.net.URLClassLoader(new java.net.URL[]{javacClassPath.toUri().toURL()}); Class javacLoadedClass = javacClassLoader.loadClass(FILE_NAME); - // Load the miniCompiler class - Path miniCompilerClassPath = Paths.get("src/test/resources/output/miniCompiler"); - ClassLoader miniCompilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{miniCompilerClassPath.toUri().toURL()}); - Class miniCompilerLoadedClass = miniCompilerClassLoader.loadClass(FILE_NAME); + // Load the raupenpiler class + Path raupenpilerClassPath = Paths.get("src/test/resources/output/raupenpiler"); + ClassLoader raupenpilerClassLoader = new java.net.URLClassLoader(new java.net.URL[]{raupenpilerClassPath.toUri().toURL()}); + Class raupenpilerLoadedClass = raupenpilerClassLoader.loadClass(FILE_NAME); // Class Name assertEquals(FILE_NAME, javacLoadedClass.getName()); - assertEquals(FILE_NAME, miniCompilerLoadedClass.getName()); + assertEquals(FILE_NAME, raupenpilerLoadedClass.getName()); // Constructors Constructor[] javacConstructors = javacLoadedClass.getDeclaredConstructors(); - Constructor[] miniCompilerConstructors = miniCompilerLoadedClass.getDeclaredConstructors(); + Constructor[] raupenpilerConstructors = raupenpilerLoadedClass.getDeclaredConstructors(); - assertEquals(javacConstructors.length, miniCompilerConstructors.length); + assertEquals(javacConstructors.length, raupenpilerConstructors.length); for(Constructor c : javacConstructors) { - for(Constructor miniCompilerConstructor : miniCompilerConstructors) { - assertEquals(c.getParameterCount(), miniCompilerConstructor.getParameterCount()); - if (c.getParameterCount() == miniCompilerConstructor.getParameterCount()) { - assertEquals(c.getName(), miniCompilerConstructor.getName()); + for(Constructor raupenpilerConstructor : raupenpilerConstructors) { + assertEquals(c.getParameterCount(), raupenpilerConstructor.getParameterCount()); + if (c.getParameterCount() == raupenpilerConstructor.getParameterCount()) { + assertEquals(c.getName(), raupenpilerConstructor.getName()); } } } @@ -2023,29 +2023,29 @@ public class E2EReflectionsTest { // Methods Method[] javacMethods = javacLoadedClass.getDeclaredMethods(); - Method[] miniCompilerMethods = miniCompilerLoadedClass.getDeclaredMethods(); + Method[] raupenpilerMethods = raupenpilerLoadedClass.getDeclaredMethods(); - assertEquals(javacMethods.length, miniCompilerMethods.length); + assertEquals(javacMethods.length, raupenpilerMethods.length); for (int i = 0; i < javacMethods.length; i++) { - assertEquals(javacMethods[i].getName(), miniCompilerMethods[i].getName()); - assertEquals(javacMethods[i].getReturnType(), miniCompilerMethods[i].getReturnType()); - assertEquals(javacMethods[i].getParameterCount(), miniCompilerMethods[i].getParameterCount()); - // assertEquals(javacMethods[i].getModifiers(), miniCompilerMethods[i].getModifiers()); + assertEquals(javacMethods[i].getName(), raupenpilerMethods[i].getName()); + assertEquals(javacMethods[i].getReturnType(), raupenpilerMethods[i].getReturnType()); + assertEquals(javacMethods[i].getParameterCount(), raupenpilerMethods[i].getParameterCount()); + // assertEquals(javacMethods[i].getModifiers(), raupenpilerMethods[i].getModifiers()); } // Fields Field[] javacLoadedClassDeclaredFields = javacLoadedClass.getDeclaredFields(); - Field[] miniCompilerLoadedClassDeclaredFields = miniCompilerLoadedClass.getDeclaredFields(); + Field[] raupenpilerLoadedClassDeclaredFields = raupenpilerLoadedClass.getDeclaredFields(); - assertEquals(javacLoadedClassDeclaredFields.length, miniCompilerLoadedClassDeclaredFields.length); + assertEquals(javacLoadedClassDeclaredFields.length, raupenpilerLoadedClassDeclaredFields.length); for (Field field : javacLoadedClassDeclaredFields) { - for (Field miniCompilerField : miniCompilerLoadedClassDeclaredFields) { - if (field.getName().equals(miniCompilerField.getName())) { - assertEquals(field.getType(), miniCompilerField.getType()); - // assertEquals(field.getModifiers(), miniCompilerField.getModifiers()); + for (Field raupenpilerField : raupenpilerLoadedClassDeclaredFields) { + if (field.getName().equals(raupenpilerField.getName())) { + assertEquals(field.getType(), raupenpilerField.getType()); + // assertEquals(field.getModifiers(), raupenpilerField.getModifiers()); } } } diff --git a/src/test/java/main/EndToEndTester.java b/src/test/java/main/EndToEndTester.java index d7e40ef..233a9c3 100644 --- a/src/test/java/main/EndToEndTester.java +++ b/src/test/java/main/EndToEndTester.java @@ -11,6 +11,8 @@ package main; * Wenn unser Compiler funktioniert, sollten keine Errors kommen (sondern nur die Ausgaben, die wir in der CompilerInput.java Datei gemacht haben, * oder Methoden, die wir hier aufrufen).

* + *

PROBLEM: Hier kommen Errors, was eigentlich heißt, dass der Compiler nicht funktioniert, der Test sollte eigentlich passen. + *
DENN: Wenn ich statt unserem CompilerInput.class die CompilerInput.class von javac verwende (aus src/test/resources/output/javac ), dann funktioniert es.

*/ public class EndToEndTester { public static void main(String[] args) { diff --git a/src/test/java/main/MainTest.java b/src/test/java/main/MainTest.java index 45f07f4..890f4cd 100644 --- a/src/test/java/main/MainTest.java +++ b/src/test/java/main/MainTest.java @@ -2,6 +2,8 @@ package main; import org.junit.runner.RunWith; import org.junit.runners.Suite; +import parser.ParserTest; +import parser.ScannerTest; import semantic.EndToTypedAstTest; import semantic.SemanticTest; @@ -13,6 +15,8 @@ import semantic.SemanticTest; @RunWith(Suite.class) @Suite.SuiteClasses({ InputFilesTest.class, + ScannerTest.class, + ParserTest.class, SemanticTest.class, EndToTypedAstTest.class }) diff --git a/src/test/java/parser/AstBuilderTest.java b/src/test/java/parser/AstBuilderTest.java index 18ebc38..bc7d562 100644 --- a/src/test/java/parser/AstBuilderTest.java +++ b/src/test/java/parser/AstBuilderTest.java @@ -6,7 +6,7 @@ import ast.ProgramNode; import ast.expressions.IExpressionNode; import ast.expressions.binaryexpressions.CalculationNode; import ast.expressions.binaryexpressions.DotNode; -import ast.expressions.binaryexpressions.DotSubtractionNode; +import ast.expressions.binaryexpressions.DotSubstractionNode; import ast.expressions.binaryexpressions.NonCalculationNode; import ast.expressions.unaryexpressions.MemberAccessNode; import ast.expressions.unaryexpressions.UnaryNode; @@ -514,31 +514,31 @@ class AstBuilderTest { ClassNode class1 = Helper.generateEmptyClass("VariableCalculation"); BlockNode aPlusBBlock = new BlockNode(); - aPlusBBlock.addStatement(new ReturnNode(new CalculationNode(new CalculationNode(new DotNode(new DotSubtractionNode("a"))), "+", new DotNode(new DotSubtractionNode("b"))))); + aPlusBBlock.addStatement(new ReturnNode(new CalculationNode(new CalculationNode(new DotNode(new DotSubstractionNode("a"))), "+", new DotNode(new DotSubstractionNode("b"))))); MethodNode aPlusBMethod = new MethodNode("public", new BaseType(TypeEnum.INT), false, "aPlusB", aPlusBBlock); aPlusBMethod.addParameter(new ParameterNode(new BaseType(TypeEnum.INT), "a")); aPlusBMethod.addParameter(new ParameterNode(new BaseType(TypeEnum.INT), "b")); BlockNode aMinusBBlock = new BlockNode(); - aMinusBBlock.addStatement(new ReturnNode(new CalculationNode(new CalculationNode(new DotNode(new DotSubtractionNode("a"))), "-", new DotNode(new DotSubtractionNode("b"))))); + aMinusBBlock.addStatement(new ReturnNode(new CalculationNode(new CalculationNode(new DotNode(new DotSubstractionNode("a"))), "-", new DotNode(new DotSubstractionNode("b"))))); MethodNode aMinusBMethod = new MethodNode("public", new BaseType(TypeEnum.INT), false, "aMinusB", aMinusBBlock); aMinusBMethod.addParameter(new ParameterNode(new BaseType(TypeEnum.INT), "a")); aMinusBMethod.addParameter(new ParameterNode(new BaseType(TypeEnum.INT), "b")); BlockNode aTimeBBlock = new BlockNode(); - aTimeBBlock.addStatement(new ReturnNode(new CalculationNode(new DotNode(new DotNode(new DotSubtractionNode("a")), "*", new DotSubtractionNode("b"))))); + aTimeBBlock.addStatement(new ReturnNode(new CalculationNode(new DotNode(new DotNode(new DotSubstractionNode("a")), "*", new DotSubstractionNode("b"))))); MethodNode aTimeBMethod = new MethodNode("public", new BaseType(TypeEnum.INT), false, "aTimeB", aTimeBBlock); aTimeBMethod.addParameter(new ParameterNode(new BaseType(TypeEnum.INT), "a")); aTimeBMethod.addParameter(new ParameterNode(new BaseType(TypeEnum.INT), "b")); BlockNode aDivBBlock = new BlockNode(); - aDivBBlock.addStatement(new ReturnNode(new CalculationNode(new DotNode(new DotNode(new DotSubtractionNode("a")), "/", new DotSubtractionNode("b"))))); + aDivBBlock.addStatement(new ReturnNode(new CalculationNode(new DotNode(new DotNode(new DotSubstractionNode("a")), "/", new DotSubstractionNode("b"))))); MethodNode aDivBMethod = new MethodNode("public", new BaseType(TypeEnum.INT), false, "aDivB", aDivBBlock); aDivBMethod.addParameter(new ParameterNode(new BaseType(TypeEnum.INT), "a")); aDivBMethod.addParameter(new ParameterNode(new BaseType(TypeEnum.INT), "b")); BlockNode complexCalcBlock = new BlockNode(); - complexCalcBlock.addStatement(new ReturnNode(new CalculationNode(null, null, new DotNode(new DotNode(new DotNode(new DotNode(new DotSubtractionNode("a")), "*", new DotSubtractionNode("b")), "/", new DotSubtractionNode(new ValueNode(EnumValueNode.INT_VALUE, "1"))), "*", new DotSubtractionNode(new ValueNode(EnumValueNode.INT_VALUE, "3")))))); + complexCalcBlock.addStatement(new ReturnNode(new CalculationNode(null, null, new DotNode(new DotNode(new DotNode(new DotNode(new DotSubstractionNode("a")), "*", new DotSubstractionNode("b")), "/", new DotSubstractionNode(new ValueNode(EnumValueNode.INT_VALUE, "1"))), "*", new DotSubstractionNode(new ValueNode(EnumValueNode.INT_VALUE, "3")))))); MethodNode complexCalcMethod = new MethodNode("public", new BaseType(TypeEnum.INT), false, "complexCalc", complexCalcBlock); complexCalcMethod.addParameter(new ParameterNode(new BaseType(TypeEnum.INT), "a")); complexCalcMethod.addParameter(new ParameterNode(new BaseType(TypeEnum.INT), "b")); diff --git a/src/test/java/parser/Helper.java b/src/test/java/parser/Helper.java index 63261f4..a679c8a 100644 --- a/src/test/java/parser/Helper.java +++ b/src/test/java/parser/Helper.java @@ -2,10 +2,12 @@ package parser; import ast.ASTNode; import ast.ClassNode; +import ast.ProgramNode; import ast.members.ConstructorNode; import ast.members.MemberNode; import ast.statements.BlockNode; import ast.statements.ReturnNode; +import ast.type.AccessModifierNode; import org.antlr.v4.runtime.CharStream; import org.antlr.v4.runtime.CharStreams; import org.antlr.v4.runtime.CommonTokenStream; @@ -37,7 +39,7 @@ public class Helper { public static ClassNode generateEmptyClass(String className) { BlockNode blockNode = new BlockNode(); blockNode.addStatement(new ReturnNode(null)); - MemberNode constructor = new ConstructorNode("public", className, blockNode); + MemberNode constructor = new ConstructorNode("public",className, blockNode); ClassNode classNode = new ClassNode("public", className); classNode.addMember(constructor); return classNode; diff --git a/src/test/java/parser/ParserTest.java b/src/test/java/parser/ParserTest.java new file mode 100644 index 0000000..c567b4b --- /dev/null +++ b/src/test/java/parser/ParserTest.java @@ -0,0 +1,138 @@ +package parser; + +import org.antlr.v4.runtime.*; +import org.antlr.v4.runtime.tree.ParseTree; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import parser.generated.SimpleJavaLexer; +import parser.generated.SimpleJavaParser; + +import static org.junit.jupiter.api.Assertions.*; + +import java.util.*; + +public class ParserTest { + /* + @BeforeEach + public void init() { // noch nicht benötigt + String inputFilePath = "src/main/resources/input/CompilerInput.java"; + String outputDirectoryPath = "src/main/resources/output"; + } + */ + + @Test + public void parserTest() { + // init + CharStream inputCharStream = CharStreams.fromString("public class Name {}"); + SimpleJavaLexer lexer = new SimpleJavaLexer(inputCharStream); + CommonTokenStream tokenStream = new CommonTokenStream(lexer); + tokenStream.fill(); + + + /* Parser -> Parsetree */ + SimpleJavaParser parser = new SimpleJavaParser(tokenStream); + ParseTree parseTree = parser.program(); // parse the input + + //Variante 1 (geht) + String expectedParseTreeAsString = "(program (classDeclaration public class Name { }))"; + String actualParseTreeAsString = parseTree.toStringTree(parser); + + assertEquals(expectedParseTreeAsString, actualParseTreeAsString); + + // Variante 2 (geht nicht) + // - Sollte es gehen und es liegt am Parser? (keine Ahnung) -> Bitte Fehler (actual und expected) durchlesen + // ist die Methode parseStringToTree() korrekt? -> (glaub nicht) + Map expectedTreeStructure = parseStringToTree(expectedParseTreeAsString); + Map actualTreeStructure = buildTreeStructure(parseTree, parser); + + // assertEquals(expectedTreeStructure, actualTreeStructure); + } + + + + // Helpers Variante 2.1 + + public static Map buildTreeStructure(ParseTree tree, Parser parser) { + return buildTree(tree, parser, 0); + } + + private static Map buildTree(ParseTree tree, Parser parser, int indent) { + Map node = new HashMap<>(); + + if (tree instanceof RuleContext) { + int ruleIndex = ((RuleContext) tree).getRuleIndex(); + String ruleName = parser.getRuleNames()[ruleIndex]; + node.put("rule", ruleName); + } else { + node.put("text", tree.getText()); + } + + List> children = new ArrayList<>(); + for (int i = 0; i < tree.getChildCount(); i++) { + children.add(buildTree(tree.getChild(i), parser, indent + 1)); + } + + if (!children.isEmpty()) { + node.put("children", children); + } + + return node; + } + + // Helpers Variante 2.2 + + public static Map parseStringToTree(String input) { + input = input.trim(); + if (input.startsWith("(") && input.endsWith(")")) { + input = input.substring(1, input.length() - 1).trim(); + } + return parse(input); + } + + private static Map parse(String input) { + Map node = new HashMap<>(); + StringBuilder currentToken = new StringBuilder(); + List> children = new ArrayList<>(); + + int depth = 0; + boolean inToken = false; + for (char ch : input.toCharArray()) { + if (ch == '(') { + if (depth == 0) { + if (!currentToken.isEmpty()) { + node.put("node", currentToken.toString().trim()); + currentToken.setLength(0); + } + } else { + currentToken.append(ch); + } + depth++; + } else if (ch == ')') { + depth--; + if (depth == 0) { + children.add(parse(currentToken.toString().trim())); + currentToken.setLength(0); + } else { + currentToken.append(ch); + } + } else if (Character.isWhitespace(ch) && depth == 0) { + if (!currentToken.isEmpty()) { + node.put("node", currentToken.toString().trim()); + currentToken.setLength(0); + } + } else { + currentToken.append(ch); + } + } + + if (!currentToken.isEmpty()) { + node.put("node", currentToken.toString().trim()); + } + + if (!children.isEmpty()) { + node.put("children", children); + } + + return node; + } +} diff --git a/src/test/java/parser/ScannerTest.java b/src/test/java/parser/ScannerTest.java new file mode 100644 index 0000000..ba31a81 --- /dev/null +++ b/src/test/java/parser/ScannerTest.java @@ -0,0 +1,45 @@ +package parser; + +import org.antlr.v4.runtime.CharStream; +import org.antlr.v4.runtime.CharStreams; +import org.antlr.v4.runtime.CommonTokenStream; +import org.antlr.v4.runtime.Token; +import org.junit.jupiter.api.Test; +import parser.generated.SimpleJavaLexer; + +import java.util.Arrays; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class ScannerTest { + + /** + * This test method is used to test the scanner functionality of the SimpleJavaLexer. + * It creates a CharStream from a string representing a simple Java class declaration, + * and uses the SimpleJavaLexer to tokenize this input. + * It then compares the actual tokens and their types produced by the lexer to the expected tokens and their types. + */ + @Test + public void scannerTest() { + // Create a CharStream from a string representing a simple Java class declaration + CharStream inputCharStream = CharStreams.fromString("public class Name {}"); + + // Use the SimpleJavaLexer to tokenize the input + SimpleJavaLexer lexer = new SimpleJavaLexer(inputCharStream); + CommonTokenStream tokenStream = new CommonTokenStream(lexer); + tokenStream.fill(); + + // Prepare the expected results + List expectedTokens = Arrays.asList("public", "class", "Name", "{", "}", ""); + List expectedTokenTypes = Arrays.asList("AccessModifier", "Class", "Identifier", "OpenCurlyBracket", "ClosedCurlyBracket", "EOF"); + List actualTokens = tokenStream.getTokens(); + + // Compare the actual tokens and their types to the expected tokens and their types + assertEquals(expectedTokens.size(), actualTokens.size()); + for (int i = 0; i < expectedTokens.size(); i++) { + assertEquals(expectedTokens.get(i), actualTokens.get(i).getText()); + assertEquals(expectedTokenTypes.get(i), SimpleJavaLexer.VOCABULARY.getSymbolicName(actualTokens.get(i).getType())); + } + } +} diff --git a/src/test/java/semantic/SemanticHelper.java b/src/test/java/semantic/SemanticHelper.java index 3f187ee..ec1a45b 100644 --- a/src/test/java/semantic/SemanticHelper.java +++ b/src/test/java/semantic/SemanticHelper.java @@ -30,6 +30,6 @@ public class SemanticHelper { ParseTree parseTree = parser.program(); ASTBuilder astBuilder = new ASTBuilder(); - return astBuilder.visit(parseTree); + return (ProgramNode) astBuilder.visit(parseTree); } }