[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