Übersetzung der case-Anweisung

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Übersetzung der case-Anweisung
Hi,

ich habe bald Übersetzerbau-Prüfung. Im Skript beschreibt der Philippsen die Code-Funktion für die Case-Anweisung in Java, und irgendwie komme ich damit nicht klar. In diesem Diagramm springt die tableswitch Anweisung eine Stelle in der Sprungtabelle an, an der dann ein goto steht !? Das will mir nicht in den Kopf. Ausserdem werden bei den Alternativen scheinbar automatisch gotos zum Ende eingeführt, was ja nur der Fall sein sollte, wenn eine break-Anweisung dasteht, ansonsten fall-through.

Hat das jemand hier kapiert ?

Gruß

Markus


wenn du 'ne Foliennummer angeben würdest, wärs viele infacher, nachzuvollziehen, was du meinst :slight_smile:


okay, das ist folie 6-29 ( vom 17.11.2005 )


wo werden scheinbar automatisch breaks eingeführt?!
das ist interpreter-code der dasteht, nicht der generierte code.


die code-funktion generiert doch rekursiv interpreter code für die jvm. und die diagramme für die übersetzung von case, while, if usw s bestehen aus bereits generiertem code und abermaligen aufrufen der code-funktion ( für bspw ausdrücke als bedingung von case oder die alternativen ). ich habe mich gefragt: wieso stehen da schon gotos in den alternativen, nach den statements (code(st0) … code(stk) ) und warum ist die sprungtabelle am ende ?


das ist ein schaubild. interpretier da mal nicht soviel rein :wink:
wenn da ein sprung ist, dann muss im code ein “break” gestanden haben.

corrigendum zu meinem vorigen post:
das ist kein interpreter code, sondern compiler-code.


alles klar :slight_smile: dennoch danke :wink: