[linux-l] Grammar Design
Axel Weiß
aweiss at informatik.hu-berlin.de
Sa Sep 17 13:19:38 CEST 2005
Volker Grabsch schrieb:
> Gerade wegen dem vielen Ausprobieren und Redesign sind mir lex/yacc
> einfach zu aufwändig.
Huh?? Wenn man in der Klasse der LR1-Grammatiken bleibt, sind lex/yacc
(ala flex/bison) doch eine *erhebliche* Erleichterung! Was ist daran zu
aufwändig?! Wenn man allerdings diese Klasse verlässt, sind andere
Werkzeuge/Programmiersprachen generell geeigneter. (Wie man am Beispiel
des GCC sieht, kann man mit flex/bison auch Nicht-LR1-Grammatiken
implementieren. Das Ganze wird aber recht krampfig, und die Grammatik
ist in den yacc-Dateien nicht mehr wiederzufinden. Schaut mal in die
GCC-Quellen...).
> Doch selbst wenn feststeht, dass du es in C machen willst, rate ich
> dennoch an, gerade diese Ausprobieren/Verwerfen - Phase mit besseren,
> einfacheren Tools zu beschreiten (z.B. mit pyparser). Danach die Sache
> nach lex/yacc zu bringen (besser gesagt: flex/bison), ist mehr oder
> weniger trivial, also IMHO das kleinere Übel.
Ich meine: am Anfang sollte die Entscheidung stehen, ob eine
LR1-Grammatik für die angestrebten Ziele ausreicht (oder nicht). Diese
Entscheidung bestimmt die zu verwendeten Werkzeuge und damit das weitere
Vorgehen. Für LR1-Grammatiken gibt es derzeit nichts effizienteres als
flex/bison, und zu den wichtigsten Vorzügen zähle ich, dass der
Entwickler gezwungen wird, bei seiner Entscheidung (pro LR1) zu bleiben.
Axel
--
Humboldt-Universität zu Berlin
Institut für Informatik
Signalverarbeitung und Mustererkennung
Dipl.-Inf. Axel Weiß
Rudower Chaussee 25
12489 Berlin-Adlershof
+49-30-2093-3050
** www.freesp.de **
Mehr Informationen über die Mailingliste linux-l