Structure and more
Some checks are pending
Gitea Actions Demo / Explore-Gitea-Actions (push) Waiting to run

This commit is contained in:
Lucas 2024-06-12 11:17:16 +02:00
parent 8d6190b130
commit 6a971345d4
25 changed files with 21 additions and 14 deletions

View File

@ -19,7 +19,7 @@ public class Main {
System.out.println("Main file has args: " + args[0]);
} else {
try {
CharStream codeCharStream = CharStreams.fromPath(Paths.get("src/main/resources/CompilerInput.java"));
CharStream codeCharStream = CharStreams.fromPath(Paths.get("src/main/resources/input/CompilerInput.java"));
parseFile(codeCharStream);
} catch (IOException e) {
System.err.println("Error reading the file: " + e.getMessage());
@ -78,7 +78,6 @@ public class Main {
ByteCodeGenerator byteCodeGenerator = new ByteCodeGenerator();
byteCodeGenerator.visit(typedAst);
System.out.println("Bytecode generated");
}

View File

@ -52,7 +52,7 @@ public class ClassCodeGen implements ClassVisitor {
}
private void printIntoClassFile(byte[] byteCode, String name) {
String directoryPath = "src/main/resources/classFileOutput";
String directoryPath = "src/main/resources/output";
File directory = new File(directoryPath);
if (!directory.exists()) {
directory.mkdirs();

View File

@ -5,7 +5,7 @@
all: delete compile-javac compile-raupenpiler
compile-javac:
javac -d .\resources\output\javac .\resources\CompilerInput.java
javac -d .\resources\output\javac .\resources\input\CompilerInput.java
compile-raupenpiler:
## funktioniert bisher nicht, das will die Klasse nicht laden, der traditionelle Weg findet externe Libraries (antlr) nicht, maven hat andere Probleme
@ -19,6 +19,5 @@ delete:
rm -f ./resources/output/javac/*.class
rm -f ./resources/output/raupenpiler/*.class
rm -f ./java/*.class
rm -f ../main/resources/classFileOutput/*.class
rm -f ../main/resources/output/*.class

View File

@ -1,16 +1,18 @@
/**
* This class is used to test the output of the compiler.
* <p>
* Im gleichen Ordner wie die diese Datei (TestCompilerOutput.java) muss die selbstkompilierte CompilerInput.java Datei sein.
* --->>>> Diese muss man also vom Ordner classFileOutput in diesen ordner hier (test/java) rein kopieren. (bis es eine bessere Lösung gibt) <<<<---
* Die selbstkompilierte .class Datei wird dann hier drin geladen und eine Instanz von ihr erstellt, es können auch Methoden aufgerufen werden.
* Diese TestCompilerOutput.java Datei wird dann mit "javac .\TestCompilerOutput.java" kompiliert und mit "java TestCompilerOutput" ausgeführt.
*
* <p>Im gleichen Ordner wie diese Datei (TestCompilerOutput.java) muss die selbstkompilierte CompilerInput.java Datei sein.
* <br><strong>Hinweis:</strong> Diese muss man also vom Ordner classFileOutput in diesen Ordner hier (test/java) rein kopieren. (bis es eine bessere Lösung gibt)</p>
*
* <p>Die selbstkompilierte .class Datei wird dann hier drin geladen und eine Instanz von ihr erstellt, es können auch Methoden aufgerufen werden.
* <p>Diese TestCompilerOutput.java Datei wird dann in <code> \src\test\java> </code> mit <code>javac .\TestCompilerOutput.java</code> kompiliert und mit <code>java TestCompilerOutput</code> ausgeführt.
* 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 der Test sollt eigentlich passen
* oder Methoden, die wir hier aufrufen).</p>
*
* <p><strong>PROBLEM:</strong> Hier kommen Errors, was eigentlich heißt, dass der Compiler nicht funktioniert, der Test sollte eigentlich passen.
* <br><strong>DENN:</strong> Wenn ich statt unserem CompilerInput.class die CompilerInput.class von javac verwende (aus <code> src/test/resources/output/javac </code>), dann funktioniert es.</p>
*/
public class TestCompilerOutput {
public static void main(String[] args) {
try {
// Try to load the class named "CompilerInput"

View File

@ -5,5 +5,12 @@ public class CompilerInput {
public static int testMethod(char x){
return 0;
}
public class Test {
public static int testMethod(char x, int a){
return 0;
}
}
}