Bison fuer C++ und Parser allgemein ...
-
Habe folgendes Problem und hoffe auf tipps von erfahreneren Leuten:
Ich moechte fuer eine bestimmte art von dateien (text-dateien) die eine bestimmte syntax haben, einen parser schreiben.
das probleme hierbei sind:
- die syntax ist nicht ganz einfach.
- Aenderungen der syntax ziehen laestigerweise eine veraenderung des parsers mit sich
Meine Frage:
Gibt es web-sites, wo ich etwas ueber beispielsweise Bison /Yacc (Parser-Generatoren) lesen kann (am besten fuer C++) mit Beispielen??Ist die vorgehensweise dies mit solch vorgefertigten Programmen zu machen bei einer mittelmaessig schwierigen syntax der einzulesenden dateien besser oder geht kann man dies nicht empfehlen und sollte dies selber schreiben?
was denkt ihr?
danke
gruss
-
es gibt glaub fertige libs, die sowas ziemlich modular anbieten. wenns dir auf den lerneffekt ankommt, dann schreibs selber. ist interessant das mal zu machen
(und auch nicht so schwer, wie es ausschaut)
-
also ich glaube schon dass das fuer ne einfach syntax nicht so schwer ist, jedoch bin ich auch der meinung man sollte das rad nicht von neuem erfinden.
ich gucke mir mal flex++bison++ an. das is fuer c++.
nebenbei:
kann mir jemand mal verraten wie man mit
ifstream.get(...) oder ner anderen methode aus einer textdatei das naechste token einliest wobei LEERZEICHEN oder NEWLINE die delimiter sind?
(ich habs vergessen und im internet habe ich keine passenden beispiele finden koennen)vielen dank vorab.
gruss
-
Boost::Spirit ist ein Parser Werkzeug, direkt in C++ geschrieben. Das heisst, dass du die EBNF-Gramatik direkt in den C++ Code schreibst
-
peperonee schrieb:
kann mir jemand mal verraten wie man mit
ifstream.get(...) oder ner anderen methode aus einer textdatei das naechste token einliest wobei LEERZEICHEN oder NEWLINE die delimiter sind?Das macht soundso flex, du musst nur zeichenweise einlesen können.
Schau dir ein beliebiges Buch oder Uni-Skriptum über Compilerbau an, da steht alles drin, was du brauchst.
-
Dieser Thread wurde von Moderator/in davie aus dem Forum C++ 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.