NichtHaskell2.0/src/test/TestSpecs.md
Lucas 9f40949f5a
Some checks are pending
Gitea Actions Demo / Explore-Gitea-Actions (push) Waiting to run
Structure
2024-05-31 11:20:31 +02:00

2.0 KiB

Scanner

Scanner Input

Beispiel 1: Empty Class

String empty class = "public class Name {}";

Beispiel 2: Filled Class

String filled class = 
        "class javaFileInput.Example {" +
        "if (x < 5) {" +
        "for (int i = 0; i < 10; i++) {" +
        "while (true) {" +
        "x = 5;" +
        "}"

Scanner Output

Beispiel 1: Empty Class

Token Type; Token Text Type gibts nur bei Terminalen, Text bei allen

[null "public", null "class", IDENTIFIER "Name", null "{", null "}", EOF "<EOF>"]

Bsp von Ihm mal:
[TokPublic,TokClass,TokIdentifier "Name",TokLeftBrace,TokRightBrace]

Beispiel 2: Filled Class

[TokClass,TokIdentifier "javaFileInput.Example",TokLeftBrace]
[TokIf,TokLeftParen,TokIdentifier "x",TokLessThan,TokNumber 5,TokRightParen,TokLeftBrace]
[TokFor,TokLeftParen,TokIdentifier "int",TokIdentifier "i",TokAssign,TokNumber 0,TokSemicolon,TokIdentifier "i",TokLessThan,TokNumber 10,TokSemicolon,TokIdentifier "i",TokPlus,TokPlus,TokRightParen,TokLeftBrace]
[TokWhile,TokLeftParen,TokIdentifier "true",TokRightParen,TokLeftBrace]
[TokIdentifier "x",TokAssign,TokNumber 5,TokSemicolon]
[TokRightBrace]

Parser

Parser Input

(Scanner Output)

Parser Output (AST)

Beispiel 1: Empty Class

Beispiel 2: Filled Class

Semantische Analyse / Typcheck

Typcheck Input

(Parser Output = AST)

Typcheck Output

Beispiel 1: Empty Class

Beispiel 2: Filled Class

Bytecodegenerierung

Bytecodegenerierung Input

(Typcheck Output = vom Typcheck eventuell manipulierter AST)

Bytecodegenerierung Output

Beispiel 1: Empty Class

Compiled Classfile

public class javaFileInput.Example {
}

Beispiel 2: Filled Class

für E2E Tests: Testdatei mit Main ausführen/kompilieren Testdatei mit "javac CompilerInput.java" kompilieren

wenn beides erfolgreich Ergebnis vom eigenen Compiler mit "java myOutput" ausführen Ergebnis von javac mit "java CompilerInput" ausführen