[linux-l] Grammar Design

Oliver Bandel oliver at first.in-berlin.de
So Sep 18 11:35:48 CEST 2005


On Sat, Sep 17, 2005 at 04:53:57PM +0200, Volker Grabsch wrote:
[...]
> Außerdem stehen die Chancen nicht schlecht, dass die Performance von
> Python+pyparser für die Zwecke des OP schon völlig ausreichen. Dann
> kann er sich sogar die Reimplementierung in lex+yacc+C komplett sparen.
> Um das besser einzuschätzen, wäre es gut, wenn er uns erklären könnte,
> was genau er eigentlich vor hat.
[...]

Naja, im Moment bin ich da noch ein bischen am herum probieren.

Will DSLs implementieren, in welcher Art... da schaue ich noch.

Im Moment finde ich es ganz gut, daß ich in OCaml entwickeln kann,
aber wegen lex/&yacc auch nach C springen könnte, wenn notwendig.

Sollten die lexer/parser komplexer werden müsste vielleicht
doch was spezielles ran.

Welche Art von Parser/Grammatik liegt denn HTML/XML zugrunde?
Mit lex/yacc kann man das ja auch noch bearbeiten.
oder gibt es da schon besseres?

Naja, ganz krass wird es natürlich, wenn man - z.B. für
Literate Programming Tools - verschiedene Kontexte hat,
in denen anders geparst/gelext(gescannt) wird.

Dann müsste der lexer sich der Umgebung anpassen,
in der geparst wird...
...welcher Art Grammatiken ist das?

Kann mir zwar denken, daß zu programmieren, aber welcher
Art Grammatik das ist, weiß ich nicht.
Vielleicht gibt's da ja schon fertig-Tools für?
(bezweifle ich aber... erst mal).

Im Prinzip kann man ja für komplexe Sachen auch via camlp4
die Syntax von OCaml anpassen. Das ist natürlich eine wudnerbare Sache,
da man auf die Möglichkeiten von Ocaml aufbauen kann.

Das bedeutet aber für den Anwender der Sprache, daß er/sie/es diese
komplexe Sprache können müsste.

Ich finde aber, es macht keinen Sinn, eine DSL zu implementieren,
die einen bestimmten zweck erfüllen soll und dafür dann noch eine
allgemeine Programmiersprache verstehen zu müssen.

Das ist dann doch nur was für Programmierer, aber nicht für
Normalmenschen eines speziellen Anwendungsgebiets.
Da sollte schon was eigenständiges kreiert werden,
so daß die Benutzer nur in Ihrem Fachgebiet sich auskennen müssen
und dennoch ihre eigenen Skripte schreiben können.
Das ist ja der Sinn einer DSL (neben anderen Vorteilen).


Insofern bin ich da noch unschlüssig, wie's weiter geht.

Was mir beispielsweise gerade eingefallen ist, wäre ein Konverter für
solche beknackten Sprachen, wie die von manchen Spam-Filtern
(Webieve). So daß man in eingermassen verständlichen Anweisungen
die Filter definieren kann, und man bekommt ein Websieve-Script heraus.
Oder halt für andere beknackt gemachte Eingabesprachen.
Leider denken viele Programmierer nicht an die Anwender und machen
eigentlich leichte Sachen unnötig kompliziert in der Benutzung.
Oder lassen komplizierte Sachen auch kompliziert fpr den Anwender,
statt eine einfache benutzerschnittstelle zu schaffen.

Und dann wird mit RTFM gewinkt, wenn jemand keine Böcke darauf hat,
sich in den Kack tiefer einzuarbeiten, nur um eigentlich simple Sachen
zu lösen...
... wenn man für eine eigentlich simple Sache viel Zeit investieren
muß, um diese dem Programm beizubringen, und sich dann mit RTFM und
"ach, da gibt es noch ein Tuturial und ein besonderes Paper dazu und
ausserdem kannste im Netz ja mal nach Problemlösungen suchen, vielleicht hatte
jemand Anderes das Problem auch schon" herum plagen muß, weil der
Programmierer zu faul oder ignorant war, eine gesunde Schnittstelle zu kreieren,
dann ist das gelinde gesagt Mist.

Deswegen fallen mir andauernd Sachen ein, die man diesbeztüglich
zusammen bauen könnte, auch wenn es dann oftmals bei der Idee bleibt.


Aber das eine oder andere krassere teil schwebt mir da schon 
immer wieder im Kopf rum (z.B. auch Literate programming Tools).

Vielleicht lege ich mir auch irgendwann noch die Panther-Bücher zu.
Aber auch im Netz hatte ich schon mal interessante Ressourcen gefunden.
Mal kieken.

Derzeit überlege ich, ob ich das Tool (Laban Scale Generator,
  siehe http://me.in-berlin.de/~first/labscalgen-invoke.cgi)
nicht doch eher HTML-/XML/LaTeX-like umbaue.

Das war in derzeitiger Version erst mal nur ein Start-Teil,
ein Erstversuch.  Aber einer, den man schon benutzen kann.

Immerhin kann man da nun auch Variablen setzen usw.

Aber viell. wäre eine andere Syntax/Grammatik besser.

Das ist dann eben das Ausprobieren und schauen, was denn _praktikabel_ ist.

Wird viellicht "inspired by" LaTeX, HTML/XML oder so.
Aber soll auch Möglichkeiten wie Makros/prozeduren/Funktionen zulassen.

Bin kein XML-Spezi, denke aber, Sachen wie Variablen
funktionieren damit nicht. Und spätestens bei Prozeduren/Funktionen/Makros
ist da wohl Schicht.  Also muß was eigenes her.
Gestern Abend hatte ich da schon Ideen zu. Soll ja auch für Normalanwender
verstehbar bleiben, also muß ich immer abwähgen zwischen "läßt sich
prima implementieren", "ist sehr leistungsfähig" und "bleibt für nicht-programmierer
noch verständlich".


Ciao,
   Oliver



Mehr Informationen über die Mailingliste linux-l