Parsing Julian Nagel Lehrstuhl für Rechnerarchitektur Universität Heidelberg 06.07.2016
1 2 3 Inhaltsverzeichnis 4 5 6
Viele Ideen dazu wie effektiv Hardware entwickelt werden kann, aber keine IDE welche diese Vorstellungen abdeckt. Grafische Blockbeschreibungen und Darstellung von Hardware Erweiterbarkeit für zukünftige Tools für das Hardwaredesign (FSM Designer) Komfortable IDE-Funktionen aus der Software Entwicklung (Tab-Vervollständigung, Refactoring, Jump to Instances)
Diplomarbeit Konzeption und Prototypen-Implementation einer Software zum effizienten Entwurf von Hardware mit Hilfe einer hierarchischen Methodik von Benjamin Bruno Erste Software, die gewünschte Features anreißt Weitere Entwicklung des Hardware-Designers verlangt Umgang mit Code Parsen und Evaluation von
Interpretation von Quellcode [1] Übertragen in strukturiertes at Vokabeln () Grammatiken () Ausgabe: Syntaxbaumes Wie kann man mit folgendem Quellcode arbeiten? module t e s t ( ) ; endmodule
Lexikalische Analyse t logische Einheiten Erkennt & markiert Vokabular einer Sprache Ausgabe: Token Token Zerlegung nach regulären Grammatiken
module t e s t ( ) ; endmodule Ausgabe : Quellcode module testmodule ( parens open ) parens close Token module keyword module identifier ; semicolon endmodule endmodule keyword
Syntaktische Analyse der Token Platziert Token in Parse-Tree Erzeugt Strukturbeschreibungen Keine Analyse der Semantik ist ein Zwischenschritt
module t e s t ( ) ; endmodule
IDE für Java [2] Open Source Community Edition Von JetBrains entwickelt Seit Januar 2001 Breite Plugin-Unterstützung Einfache Erweiterbarkeit um weitere Sprachen möglich bietet viele komfortable Funktionen
Für Code in Java 1.8 Entwicklung mithilfe weiterer Plugins - - PSIViewer - Debugging Grammatik
Unterstützung von AST als Grundgerüst für weitere Entwicklungen bietet komfortablen -Editor Verwaltung von AST und Verilog Datei
Framework: [3] Generiert -Code in Java Erzeugt Token für
Implementation von zwei Token Als Regex Als Keyword
Framework: [4] Liest Grammatik in ein Generiert -Code in Java Besitzt eigenen, nicht so mächtig wie Bietet zusätzliche Abstraktion durch BNF verbesserte Lesbarkeit erleichtertes Debugging effiziente Entwicklung
IEEE als Grundlage [5] SVeN: IEEE-Spezifikation im Textformat [6] Überführung in BNF mit AWK SED Dennoch weitere Anpassungen nötig
verlangt spezielle BNF Linksrekursivität nicht unterstützt Ersetzen durch
Regel darf nicht leer sein Ersetzen durch
Fertigstellen der entwicklung 1 Kleine Anpassungen des s 2 Compiler Direktiven implementieren (z.b. im Perl Plugin für Intellij umgesetzt) 3 Bugs beheben
Zukünftige Funktionen als Evaluation Auflösen von user defined types Auflösen von Instanzen Auflösen von Blöcken Verilog Analyse- und Debug-Funktionen Beschreiben statt programmieren
Dankeschön! Fragen?
I Sven Naumann, Hagen Langer Parsing Teubner Verlag, 1994 https://www.jetbrains.com/idea/ (01.07.2016) http://jflex.de/ (01.07.2016) https://github.com/jetbrains/ (01.07.2016) http://ieeexplore.ieee.org/ (01.07.2016) http://sven.xtreme-eda.com/ (01.07.2016)