"We are back" « oc.at

S: Wie baue ich einen Parser?

DJ_Cyberdance 09.03.2006 - 11:04 1144 10
Posts

DJ_Cyberdance

Here to stay
Avatar
Registered: Jun 2002
Location: Vesterålen
Posts: 1838
Hallo!
Hat von euch schon mal jemand einen Parser gebaut? Ich muß eine Metasprache parsen, die eine Klassenstruktur beschreibt.

Das blöde dran ist das Parsen. Entweder schreibe ich selbst einen Parser (Keine Ahnung, wie das richtig geht? Tausende if-then-else Konstrukte?) oder ich verwende eine oder mehrere dieser Parser-Bibliotheken (Lex, Yacc, ?). Aber auch da hab ich keine Ahnung, wo ich anfangen soll. Gibts da irgendwelche Infoquellen für Anfänger auf dem Gebiet? Google findet zwar massig Infos, aber so ein richtig gut brauchbares Anfänger-Tutorial hab ich nicht gefunden.

Das ganze passiert übrigens in C++.

Spikx

My Little Pwny
Avatar
Registered: Jan 2002
Location: Scotland
Posts: 13504
Hm.. bräuchte das eigentlich auch momentan :D

that

Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11343
http://www.antlr.org/

Ich selbst habs zwar noch nicht verwendet, aber ANTLR ist sehr verbreitet, mächtig und gut dokumentiert.

Ecraft

Here to stay
Registered: Mar 2002
Location:
Posts: 1096
da muss man natürlich auch ein wenig werbung für die uni linz machen

http://www.ssw.uni-linz.ac.at/Research/Projects/Coco/

Tex

got r00t?
Avatar
Registered: Aug 2000
Location: salzburg
Posts: 1844
Zitat von Ecraft
da muss man natürlich auch ein wenig werbung für die uni linz machen

http://www.ssw.uni-linz.ac.at/Research/Projects/Coco/

mit dem teil haben wir an der uni (salzburg) auch schon einige dinge gemacht (allerdings in java). funktioniert gut und ist auch relativ einfach verständlich.

samuel

.:: unnahbar ::.
Avatar
Registered: Jul 2000
Location: hagenberg
Posts: 2680
nach was hast du im google gesucht?

ich wuerds mal mit "formale sprachen und compilerbau" versuchen. wir haben im 2. semester verschiedene dinge in dieser richtung implementiert.

was bei jeder analyse wichtig ist, ist zu beginn eine grammatik fuer die sprache festzulegen. somit brauchst du auch ned tausende if-konstrukte ;)

ica

hmm
Avatar
Registered: Jul 2002
Location: Graz
Posts: 9822
hab mit antlr und java einen parser geschrieben - am anfang steht man ehrlichgesagt ziemlich alleine da und die doku ist auch net gerade das wahre (aber auf jedenfall noch besser als von den anderen parser frameworks). aber mit der zeit funktioniert das ganze eigentlich recht gut und es geht dann recht schnell voran.

SYSMATRIX

Legend
Legend
Registered: May 2000
Location: ~
Posts: 5020
wie wärs mit boost::spirit?

DJ_Cyberdance

Here to stay
Avatar
Registered: Jun 2002
Location: Vesterålen
Posts: 1838
Im Moment spiel ich mich grad mal mit Lex und Yacc, hab dieses Tutorial gefunden

http://ds9a.nl/lex-yacc/cvs/lex-yacc-howto.html

und arbeite grad danach. Ein passendes Lex-File für meine Syntax hab ich schon, die Grammatikbeschreibung im Yacc versuch ich morgen. So schwer scheint das nicht zu sein, aber Überraschungen kanns immer geben... Danke auf jeden Fall für die Tips, werds mir trotzdem anschauen, vielleicht gehts ja noch einfacher :-)

that

Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11343
Zitat von SYSMATRIX
wie wärs mit boost::spirit?

Eine beeindruckende Demonstration, was C++ Compiler irgendwann in der Zukunft können werden. ;)

Spikx

My Little Pwny
Avatar
Registered: Jan 2002
Location: Scotland
Posts: 13504
Hmm.. noch ein Tutorial, diesmal für Bion++ und Flex++
http://www.oneder.de/content/view/24/28/lang,de/
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz