Compilierungsmöglichkeiten - brauche Rat
-
Hallo Zusammen,
ich bin derzeit auf der Suchen nach Lösungen.
SCL (ST - Structured Text - Pascal ähnlich) in
Ansi-C zu übersetzen, und später auch wieder zurück.Ich gehe davon aus das der Quellcode richtig ist und nicht mehr optimiert werden muss und auch keine Semantische Analyse erforderlich ist.
Im Prinzip:
----------
Frontend:
Quellcode+Grammatikdefinition->Lexer->Parser-> Syntax-Tree
Backend:
Syntaxtree->Back-End->ZielcodeZur estellung des Frontends hab ich verschiedene Möglichkeiten
- Gold Parsing System
Gold Bulider zur Erstellung des Grammatik-Files in EBNF und BNF und zum übersetzen des Grammatik-Files in ein .cgt-File.
Das ganze dann mit dem Quellcode in einem Engine Programm zu einem Parse-Tree übersetzen.
2)GCC
für GCC unter Cygwin gibt es wohl einen Befehl wie man sich einen Parse-Tree von einem Ansi-C-Programm erzeugen kann.
(gcc -fdump-tree-original-raw ./test.c)
Ich habe es mal ausprobiert.
Es kommt bei mir ein File (test.c.003t.orginal) raus mit dem ich aber bisher sehr wenig anfangen kann.
Mir ist nicht erkenntlich wie ich den Orginalquellcode in dem File wiederekenne.3)lex&yacc
Das schein wohl die geläufigste Methode zu sein das Frontend zu realisieren.
Ich selbst hab damit noch kaum Erfahrung. Ich habe die Programme Flex und Yacc mal unter Cygwin installiert, bin aber noch zu keinem Ergebnis gekommen.Frontend und Backend
4)Die Programmiersprache TXL (TXL Home Page)
Das Programm besteht aus 4 .exe Dateien die man mit dem Comandwindow in Windows bedienen kann.
Man definiert wieder eine Grammatik des Quellcodes und zusätzlich Übersetzungsregeln und Muster.
Wie mir scheint kann man damit einen kompletten Compiler realisieren.Falls mir jemand zu einer der Fragen weiterhelfen kann oder damit Erfahrung hat, bin ich für jeden Hinweis dankbar.
Darüberhinaus hab ich noch ein paar weitere Fragen.
(?) Gibt es eine allgemeine Darstellungsform für Parse-Bäume.
(?) Gibt es einen Parser der Parse-Bäume in XML ausgiebt ?(?) Wie kann ich das Backend realisieren ?
(?) Ich habe davon gehört das man den Parse-Tree, wenn er in XML vorhanden ist, mit XSLT zu Zielcode übersetzen kann. Hat jemand damit Erfahrung ?Herzlichen Dank
Thomas
- Gold Parsing System
-
-
Vielen Dank für die Antwort.
Falls jemand anderes noch was zum Thema sagen kann bin ich weiterhin interesiert.
Das Problematischste ist im Moment noch wie ich an das Backend ran gehe.
Kennt jemand Lösungsansätze ?
Grüße Thomas
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Compiler- und IDE-Forum in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
rüdiger schrieb:
Lieber_Gott schrieb:
(?) Gibt es einen Parser der Parse-Bäume in XML ausgiebt ?
Wenn man der Doku auf der Seite glauben darf, gibt das Ding aber keinen vollständigen AST aus, sondern nur Klassen-und Funktionsdeklarationen etc.
Ich habe Parserbau mit JavaCC (und auch Prolog) betrieben, was recht einfach ist, aber ich vermute hier wird eine C(++)-basierte Lösung gesucht?
-
Howdy!
laksöakl schrieb:
Das Problematischste ist im Moment noch wie ich an das Backend ran gehe.
Am naheliegendsten waere wohl, das Backend einfach von Hand zu schreiben
Lieber_Gott schrieb:
2)GCC
für GCC unter Cygwin gibt es wohl einen Befehl wie man sich einen Parse-Tree von einem Ansi-C-Programm erzeugen kann.
(gcc -fdump-tree-original-raw ./test.c)
Ich habe es mal ausprobiert.
Es kommt bei mir ein File (test.c.003t.orginal) raus mit dem ich aber bisher sehr wenig anfangen kann.
Mir ist nicht erkenntlich wie ich den Orginalquellcode in dem File wiederekenne.Dafuer musst du wohl die GCC doku dazu lesen ( http://gcc.gnu.org/onlinedocs/gccint/ ). Ist vermutlich nicht allzu witzig, vor allem da der GCC mehrere verschiedene Parse-Baum-REpresentationen verwendet, und ich nichtmal weiss, welche dump-tree ausgibt. Ich wuerds lassen.
3)lex&yacc
Das schein wohl die geläufigste Methode zu sein das Frontend zu realisieren.
Ich selbst hab damit noch kaum Erfahrung. Ich habe die Programme Flex und Yacc mal unter Cygwin installiert, bin aber noch zu keinem Ergebnis gekommen.flex/bison ist eine Moeglichkeit von Vielen ( http://en.wikipedia.org/wiki/Compiler_generator#Several_compiler-compilers ). Damit hast du Parser & Lexer. Den Syntax-Tree wirst du dann aber selbst aufbauen muessen.
(?) Gibt es eine allgemeine Darstellungsform für Parse-Bäume.
Du meinst als Format? Nein. Jeder kocht da so sein eigenes Sueppchen und tut was er will.
(?) Ich habe davon gehört das man den Parse-Tree, wenn er in XML vorhanden ist, mit XSLT zu Zielcode übersetzen kann. Hat jemand damit Erfahrung ?
Ich hab keine Erfahrungen speziell damit, aber ich hab sehr viel Schlechtes ueber XSLT im Allgemeinen gehoert.
Wie du vllt. schon aus dem Rest des Posts rausgehoert hast: Ich kenne kein Tool, das die Generierung von ASTs und Backends abnimmt. Darum wuerd ich das (abgesehen von Lexer/Parser) einfach alles von Hand machen.
-
Blue-Tiger schrieb:
Ich kenne kein Tool, das die Generierung von ASTs und Backends abnimmt
JavaCC hat mit JJTree einen Präprozessor, mit dem sich sehr einfach ASTs erstellen lassen. Standardmäßig wird für jedes Nichtterminal ein Knoten erstellt, was allerdings noch weiter modifiziert werden kann.