ich weiss zwar nicht ob hier noch jemand liest, aber ich probiers
einmal.
Ich würde gerne einen Parser für EDIFACT bauen. Das Problem an dem ich
scheitere ist, dass in EDIFACT die diversen Trenn- und Sonderzeichen
(also ein Teil der Token die bei der lexikalischen Analyse
zurückkommen) dynamisch definiert werden. D. h. irgendwo in dem
EDIFACT ist ein Header drinnen der sie definiert.
Was für Möglichkeiten gibt es sowas mit den gängigen Parsergeneratoren
zu lösen?
Im Prinzip suche ich eine Möglichkeiten die Regular Expressions
dynamisch zu definieren oder Variablen innerhalb der Regular
Expressions zu definieren.
Hat jemand Ideen zu diesem Problem? :-)
Grüße, Robert
Das betrifft fuer's erste nur den Scanner, also sollte der
Parsergenerator kein direktes Problem damit haben.
Mit den ueblichen Scannergeneratoren (z.B. flex) geht's wohl nicht,
also musst Du wohl einen suchen, der das kann (ich kenne keinen), oder
den Scanner von Hand schreiben (ist nicht schwierig, manche Leute
ziehen das der Benutzung eines Scannergenerators vor). Inwieweit das
dynamische Erweitern des Scanners diese Aufgabe kompliziert, haengt
von der Art ab, wie Erweiterungen spezifiziert werden.
Wenn diese Scannererweiterungen nur neue Lexeme
(Eingabe-Scanner-Interface) fuer die gleichen Tokens
(Scanner-Parser-Interface) definiert, ist wirklich nur der Scanner
betroffen, wenn dagegen auch fuer den Parser neue Dinge dazukommen,
ist es komplizierter.
- anton
--
M. Anton Ertl Some things have to be seen to be believed
an...@mips.complang.tuwien.ac.at Most things have to be believed to be seen
http://www.complang.tuwien.ac.at/anton/home.html
einmal danke für die Antwort.
Wir haben uns das mit dem eigenen Scanner schreiben auch überlegt,
inzwischen haben wir aber eine einfachere Lösung gewählt, wir haben
einen Preprozessor geschrieben der die Daten auf Standard-Trennzeichen
normiert. War zwar ein bißchen umständlich (Escape-Character und
Trennzeichen im Text etc.) aber sicher noch einfacher, als den
kompletten Scanner zu schreiben.
Grüße, Robert