Benutzer-Werkzeuge

Webseiten-Werkzeuge


compilerbau:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
compilerbau:start [2022/05/19 08:03] – [Compilerbau (Einführung)] Martin Pabstcompilerbau:start [2022/05/19 08:10] (aktuell) – [Fertiges Programm zum Ausprobieren] Martin Pabst
Zeile 16: Zeile 16:
 Im Folgenden wird die Funktionsweise eines Compilers vorgestellt, der mathematische Terme (z.B. ''2 * (3 + a) - b'' ) mit gegebenen Variablenbelegungen zur Laufzeit auswerten kann. In einem zweiten Schritt wird dieser Compiler zu einer einfachen Programmiersprache [[.erweiterung:start|erweitert]], die Wiederholungen, Zuweisungen und eine einfach Print-Anweisung enthält. Im Folgenden wird die Funktionsweise eines Compilers vorgestellt, der mathematische Terme (z.B. ''2 * (3 + a) - b'' ) mit gegebenen Variablenbelegungen zur Laufzeit auswerten kann. In einem zweiten Schritt wird dieser Compiler zu einer einfachen Programmiersprache [[.erweiterung:start|erweitert]], die Wiederholungen, Zuweisungen und eine einfach Print-Anweisung enthält.
  
 +====== Inhalt dieses Tutorials ======
   * [[.lexer:start|a) Lexer]] \\    * [[.lexer:start|a) Lexer]] \\ 
   * [[.parser:start|b) Parser]] \\    * [[.parser:start|b) Parser]] \\ 
Zeile 25: Zeile 26:
  
 ====== Fertiges Programm zum Ausprobieren ====== ====== Fertiges Programm zum Ausprobieren ======
-Der Compiler unten bekommt ein kleines Testprogramm übergeben. Er verarbeitet es in drei Schritten:+Ihr wollt sicher sehen, was der Compiler kann, der im Rahmen dieses Tutorials erstellt wird, daher hier gleich ein Blick auf das fertige Programm. \\ \\  
 +Unser Compiler unten bekommt ein kleines Testprogramm übergeben. Er verarbeitet es in drei Schritten:
   - Der Lexer zerlegt das Programm in einzelne Tokens.   - Der Lexer zerlegt das Programm in einzelne Tokens.
   - Der Parser bekommt die Tokenliste und baut daraus den AST (abstract syntax tree) auf.   - Der Parser bekommt die Tokenliste und baut daraus den AST (abstract syntax tree) auf.
   - Der Interpreter führ das Testprogramm aus, indem er den AST geeignet traversiert.   - Der Interpreter führ das Testprogramm aus, indem er den AST geeignet traversiert.
  
-Hier das Testprogramm:+Hier das Testprogramm, das unser Compiler übersetzen wird.:
 <code java> <code java>
 a = 1; a = 1;
Zeile 40: Zeile 42:
 } }
 </code> </code>
 +
 +
 +<WRAP center round tip 80%>
 +Schreibe weitere Testprogramme mit der oben angegebenen Syntax, füge sie unten ein und lasse sie vom Compiler übersetzen und ausführen!
 +</WRAP>
  
  
Zeile 49: Zeile 56:
  * Der Text wird hier Stringkonstante definiert. Er könnte ebenso  * Der Text wird hier Stringkonstante definiert. Er könnte ebenso
  * gut gerade vom Benutzer eingegeben worden sein. Wichtig ist: Der  * gut gerade vom Benutzer eingegeben worden sein. Wichtig ist: Der
- * Java-Compiler compiliert hier nichts. Es wird alles durch Lexer, + * Java-Compiler compiliert hier nichts. Es wird alles durch unseren 
- * Parser und Interpreter erledigt.+ selbstprogrammierten Compiler (Lexer, Parser und Interpreter
 + * übersetzt und ausgeführt.
  */  */
-String text =  +String text = """ 
-   "a = 1;\n" +  +a = 1; 
-   "b = 2; \n" +  +b = 2;  
-   "while(a < 10) { \n" +  +while(a < 10) {  
-   "  a = a + 1; \n" +  +  a = a + 1;  
-   "  b = b * 2; \n" +  +  b = b * 2;  
-   "  print(b); \n" +  +  print(b);  
-    }";+
 +""";
  
 println("Eingabetext:\n" + text); println("Eingabetext:\n" + text);
compilerbau/start.1652940231.txt.gz · Zuletzt geändert: 2022/05/19 08:03 von Martin Pabst

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki