linux-l: Wie schreibt man Parser?

Oliver Bandel oliver at first.in-berlin.de
Sa Nov 22 03:24:19 CET 1997


Hallöchen!


On Thu, 20 Nov 1997, Wolfgang Metze wrote:

> Oliver Bandel schrieb:
> 
> > Hi!
> >
> > Steht eigentlich schon alles im Betreff.
> >
> 
> Parser schreibt man: P A R S E R
> 
> Aber das war wohl doch nicht Deine Frage oder?

Hahaha, ich habe selten so ... versucht zu ... lachen.


Habe ich "Parser" im Betreff in Anführungszeichen gesetzt?

Nein!

Also fragte ich nach was anderem.

Aber Du hast es glücklicherweise noch mitbekommen:

> 
> Spaß beiseite.

Ja, bitte!     ... also wirklich!   


> 
> Parser schreibt man am Besten mit der Hand.

Mit Füler, oder Kugelschreiber?
Oder meintest Du mit Fingermalfarben?



[...]
> Aus diesem Grund werden diese Teile meist
> 
> von Hand implementiert, weil Generatoren keinen so effizienten Code
> erzeugen.

Das habe ich vermutet; aber für den Anfang (Versuchsstadium) vielleicht
doch geeignet?

Oder sollte man Lisp nutzen (wegen rekursiven Problemen)?


Ich wollte das eigentlich gerne in C implementieren.

[...]
> Liegt dem Ganzen eine Grammatik zugrunde?

Ja.
Gibt es auch Parser, die in keiner Grammati etwas parsen sollen?
Wie soll das gehen?
Oder meinst Du, es wäre eine NICHT BEKANNTE Grammatik?

(Wie wäre es mit einem Semantik-Parser?! (!!!)  (KI) )

> Wenn ja, ist
> es eine LL(1)-Grammatik?

Kann ich nicht beurteilen, denn ich weiß nicht, was eine LL(1)-Grammatik
ist. Wüßte ich das, wäre ich vermutlich der Lösung des Parser-Problems 
so nahe, daß ich hier nicht mehr  fragen müßte...

Was also ist eine LL(1)-Grammatik?


> Wenn ja, ist alles ziemlich einfach, wenn nein,
> solltest Du
> daraus eine LL(1)-Grammatik machen.

Tja. Angenommen, ich müßte das machen.... wie geht das?

Geht es darum, daß man verschachtelte Parsing-Probleme auf 
nicht-verschachtelte reduziert?
Wenn ja: Wie geht man da am besten vor?


> 
> 
> > Irgendwelche schlauen Hinweise, oder Praxistips?
> >
> 
> Ja, ich habe schon einige Parser geschrieben. Aber wie gesagt, ein
> bißchen konkreter solltest Duwerden.

Erst mal - für den Anfang -  geht es darum, LaTeX-Grammatik zu
erkennen. Welche Textabschnitte sind wie mit den Markups versehen
worden?

Welcher Buchstabe hat welchen Status (Layout-Status z.B.), usw.

Später geht das ganze vielleicht mal in Richtung SGML.

Ich will für ein Programm LaTeX-Code einerseits generieren, und
andererseits auch analysieren.



Tschüß,
    Oliver


P.S.: Und warum icht eines Tages wirklich mal ne semantische Analyse 
      versuchen? (...)





Mehr Informationen über die Mailingliste linux-l