1 / 26

Turtle – Grafik – Interpreter

Turtle – Grafik – Interpreter. Programmiersprache für eine Turtle Ingo Höpping. Beispiel. Ergebnis des GK 2009. Quellen / Ideen. Kapitel 6.3 - Eine Anwendung: ein Turtlegrafik-Interpreter. Fahrplan. Was kann die Turtle? Was soll die Programmiersprache können?

Télécharger la présentation

Turtle – Grafik – Interpreter

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Turtle – Grafik – Interpreter Programmiersprache für eine Turtle Ingo Höpping Informatik: Theoretische Informatik; Weilburg XII/11

  2. Beispiel Ergebnis des GK 2009 Informatik: Theoretische Informatik; Weilburg XII/11

  3. Quellen / Ideen Kapitel 6.3 - Eine Anwendung: ein Turtlegrafik-Interpreter Informatik: Theoretische Informatik; Weilburg XII/11

  4. Fahrplan • Was kann die Turtle? • Was soll die Programmiersprache können? • Beschreibung der Sprache (Syntaxdiagramme) • Scanner – Parser – Interpreter / Compiler • Rahmenprogramm (GUI) • Hilfe / Dokumentation / Auswertung Informatik: Theoretische Informatik; Weilburg XII/11

  5. Was kann die Turtle? Delphi-Turtle eigene Turtle aus Halbjahr OOM (analoger Befehlsumfang) Java-Turtle • draw / drawTo • move / moveTo • turn / turnTo • clear • setBackground • setForeground Informatik: Theoretische Informatik; Weilburg XII/11

  6. Was soll die Programmiersprache können? • Konzeption / Wünsche der Schüler • SST / HA / GA / LSG / … • Befehlsumfang, Syntaxvereinbarungen, Ideen zur Umsetzung, … • Diskussion und Beratung (Einschränkung) • alles ist möglich  … Informatik: Theoretische Informatik; Weilburg XII/11

  7. Beispiel I (GK 2009) Informatik: Theoretische Informatik; Weilburg XII/11

  8. Beispiel II (GK 2011) Informatik: Theoretische Informatik; Weilburg XII/11

  9. Beispiel II (GK 2011 – Vereinbarungen / Wünsche umsetzbar?) Informatik: Theoretische Informatik; Weilburg XII/11

  10. Beispiel II (GK 2011 – Vereinbarungen / Wünsche umsetzbar?) Informatik: Theoretische Informatik; Weilburg XII/11

  11. Beispiel II (GK 2011 – Vereinbarungen / Wünsche umsetzbar?) Informatik: Theoretische Informatik; Weilburg XII/11

  12. Vom Quelltext zur Zeichnung Abbruch Quelltext false • SCANNER • lexikal. Analyse • entfernt über-flüssige Zeichen • setzt Tokens • erzeugt redText • Transduktor • PARSER • syntaktische und semantische Analyse • Akzeptor redText true • INTERPRETER / COMPILER • interpretiert redText • führt Programm aus redText Informatik: Theoretische Informatik; Weilburg XII/11

  13. Beschreibung der Syntax / Sprache? Informatik: Theoretische Informatik; Weilburg XII/11

  14. Was leistet der Scanner? • Lexikalische Analyse • Entfernen überflüssiger Zeichen • Setzen von Tokens • (evtl. Setzen eines Fehlercodes #) Informatik: Theoretische Informatik; Weilburg XII/11

  15. Beispiel I (GK 2009 – Entwurf Tokens für Scanner) Informatik: Theoretische Informatik; Weilburg XII/11

  16. Beispiel I (GK 2009 – Beispiel für Scannerergebniss) Quelltext redText { loop(36) { loop(4) { move(100); turn(90); } turn(10); } } {l36{l4{m100;t90;}t10;}} { loob(4) { move100); turn(90); } } {#4{#00;t90;}} Informatik: Theoretische Informatik; Weilburg XII/11

  17. Umsetzung - Delphi • Scanner  ScannerUnit.pas • Parser  ParserUnit.pas • Interpreter  InterpreterUnit.pas • Aufruf aus MainUnit.pas Informatik: Theoretische Informatik; Weilburg XII/11

  18. Umsetzung - Java • Scanner  Scanner.java • Parser  Parser.java • Interpreter  Interpreter.java • Aufruf aus TurtleGUI.java • Beispielvorlagen (case, array, liste) Informatik: Theoretische Informatik; Weilburg XII/11

  19. Mögliche Erweiterungen • Laden / Speichern von Programmen • Hilfe im Programm • Dokumentation der Programmiersprache • syntax highlighting • Angabe der Fehlerstelle • Variable? Zuweisungen? • Codegeneratoren Informatik: Theoretische Informatik; Weilburg XII/11

  20. Wie kompliziert müssen Scanner und Parser sein? • Für die Turtle: einfache DEA (Transduktor, Akzeptor) • Komplexere Sprachen • Top-Down-Parser: LL(k)-, LF(k)-Parser • Bottom-Up-Parser: LR(k)- LALR-Parser Informatik: Theoretische Informatik; Weilburg XII/11

  21. Java hat doch gar keinen Scanner / Parser!? • Java-Quellcode wird vom Java-Compiler (javac.exe) übersetzt • Compiler enthält Scanner und Parser (besser: Aufgaben des Scanners und Parsers werden vom Compiler mit ausgeführt) Informatik: Theoretische Informatik; Weilburg XII/11

  22. Compiler • Compiler führt lexikalische Analyse des Quelltextes durch • Erzeugt Symboltabelle und Syntaxbaum • Syntaxbaum wird in Programm in Maschinensprache übersetzt • Ausführbare Datei Quelle: Klett; Informatik 5 Informatik: Theoretische Informatik; Weilburg XII/11

  23. Compiler (Analysephase) • Quelltext quadrat = zahl * zahl • Generierte Lexeme • <Token, Position in Symboltabelle> <token,1><=><token,2><*><token,2> <=> • Berechnungsbaum <token,1> <*> <token,2> <token,2> • Symboltabelle • semantische Analyse • Typüberprüfung Informatik: Theoretische Informatik; Weilburg XII/11

  24. Compiler (Übersetzungsphase) Informationen der Syntaxbäume / Symboltabelle werden in Maschinencode übersetzt: • Zwischencode wird generiert • prozessorunabhängig; für abstrakte Rechenmaschine geeignet • meist in Drei-Adress-Form • wert1 = token2 * token2 • token1 = wert1 • maschinenunabhängige Optimierung • Strukturierung des Codes in der höheren Programmiersprache (z. B. durch Kopieren von Funktionen an die entsprechenden Stellen innerhalb des Programms oder Weglassen nicht relevanten Codes) • maschinenabhängige Optimierung • Anpassen an innere Strukturen und Eigenschaften des Prozessors • Nutzung des Cache • Berücksichtigung der Arbeitsweise innerhalb des Caches: Bsp. Fakultät • Berücksichtigung spezieller Befehlssätze • Übersetzen der einzelnen Befehle in passenden Maschinencode Informatik: Theoretische Informatik; Weilburg XII/11

  25. Codegeneratoren • CUP und JFlex • JFlex erstellt (aus einer Input-Datei *.jflex) einen lexikalischen Scanner (in Form einer Java-Klasse) • CUP erstellt (aus einer Input-Datei *.cup) einen Parser (in Form einer Java-Klasse) Hilfsprogramme zum Erstellen von Scannern und Parsern: • AtoCC • „… mit Hilfe von AtoCC kann leicht ein LALR(1)-Parser/Interpreter entwickelt werden.“ Informatik: Theoretische Informatik; Weilburg XII/11

  26. … genug geschwätzt!!! Informatik: Theoretische Informatik; Weilburg XII/11

More Related