[linux-l] Grammar Design

Oliver Bandel oliver at first.in-berlin.de
Mi Jul 13 20:04:31 CEST 2005


Hi,

danke für die Antwort,

danke auch an alle anderen.

hatte eben ne recht lange mail verfasst, aber hier ist zwischendrin die Leitung weggebrochen.
Wenn die angekommen ist, prima, aber jetzt alles nochmal schreiben? :(

Ciao,#
   Oliver

On Wed, Jul 13, 2005 at 06:25:47PM +0200, Axel Wei wrote:
> Oliver Bandel schrieb:
> > Hi,
> >
> > hier ist doch sicherlich ein Informatiker an Bord, oder jemand,
> > der aus anderen Gründen/Hintergründen her schon mal ne eigene
> > Sprache implementiert hat?
> >
> > Folgende Ausgangssituation:
> >   Gegeben sei eine (ungefähre) Idee einer
> >   neu zu entickelnden Sprache sowie die Möglichkeit, eine
> >   Grammatik mit lex & yacc zu implementieren.
> 
> Hi Oliver,
> 
> wenn Du lex und yacc sinnvoll einsetzen willst, soltest Du darauf achten, 
> bei einer LR1-Grammatik zu bleiben. (C ist z.B. *keine* LR1-Grammatik. 
> Was das für Probleme bereitet, wenn man dennoch lex und yacc dafür 
> einsetzt, kannst Du in den gcc-Quellen studieren. Von der C-Grammatik 
> ist jedenfalls nicht mehr viel übrig.) Nur dann kannst Du die BNF in 
> yacc einfach eintippen.
> 
> >
> > Zu lösendes Problem:
> >    Finde einen Weg, effektiv eine Grammatik
> >   für die Sprache zu entwickeln, so daß man schnell von der Idee
> >   der Sprache zur Implemntierung der selbigen kommt.
> >
> > Also: Wie entwirft man auf elegante und effiziente/schnelle Weise
> >      eine Grammatik, ohne sich all zu oft in Parser-Konflikten
> >      zu verlieren.
> 
> Welchen Weg Du gehst, orientiert sich natürlich an Deinen Vorlieben ;)
> 
> > Da sich die zu entwickelnde Sprache noch im Aufbau befindet kann
> > nicht auf eine fertige Grammatik zurück gegriffen werden und einfach
> > die BNF implementiert werden.
> > Deswegen ist das ganze Problem auch noch ständig im Fluß.
> >
> > Mit was föngt man an?
> > Keywords und Priotitäten vorgeben (Klammerungen usw.) und arbeitet
> > sich dann von unten nach oben?
> >
> > Oder geht man eher von oben nach unten vor beim Grammatik-Entwickeln?
> 
> Wenn Du mich fragst, meine Checkliste sieht ungefähr so aus:
> 1. Brauche ich überhaupt eine neue Sprache (oder gibt es bereits eine,
>    die für meine Zwecke geeignet ist)?
> 2. Was will ich Ausdrücken? Welche Strukturen sollen repräsentiert
>    werden? (Ausdrücke, Graphen/Bäume, Relationen, Text, Objekte,
>    Automaten usw.)
> 3. Welche Sprachelemente brauche ich, um das auszudrücken, was ich
>    ausdrücken will? Wie kann ich diese in einer LR1-Grammatik fassen? Wie
>    sehen die Terminale und (viel wichtiger) die Nichtterminale aus?
> 4. Kann ich vielleicht Teile vorhandener Sprachen (z.B. reguläre
>    Ausdrücke) wiederverwenden? Wie lassen sich diese Teile in die
>    Grammatik integrieren?
> 
> Bevor ich also meine Tastatur und die Toolchain bemühe, will ich schonmal 
> wenigstens eine Vorstellung von dem haben, was da wachsen will. Die BNF 
> kann dabei eine Hilfe sein. "Von oben nach unten" empfinde ich 
> jedenfalls angenehmer als umgekehrt.
> 
> Wenn Du die Details (das "Ganz unten") am Anfang noch nicht kennst, ist 
> das nicht so schlimm, wenn Deine neue Sprache erweiterbar/modular 
> aufgebaut ist. Dann kannst Du die Implementierung ganzer Teile ruhig mal 
> auf später verschieben oder "kleine Änderungen mit kleinen Auswirkungen" 
> machen.
> 
> Und wenn Du Deine eigenen Konzepte noch nicht ganz verstanden hast, hilft 
> es oft mal, "Quick & Dirty" ein paar Versuche zu hacken. Wenn Du dann 
> verstanden hast, wie es geht, kannst Du ruhig und sauber nochmal von 
> vorne anfangen.
> 
> Das Wichtigste: Spaß soll es machen!
> 
> 			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 **
> _______________________________________________
> linux-l mailing list
> linux-l at mlists.in-berlin.de
> Die Mailingliste der BeLUG (Berliner Linux User Group)
> 
> Wenn du diese Mailingliste  abbestellen willst, gehe bitte auf
> https://mlists.in-berlin.de/mailman/listinfo/linux-l
> und trage dich dort bitte aus

-- 
Oliver Bandel, Dipl.-Ing (FH) Nachrichtentechnik,
Holsteinische Straße 25,
12161 Berlin,
Mobil-Tel: (0178) 669 70 49



Mehr Informationen über die Mailingliste linux-l