[linux-l] Grammar Design

Oliver Bandel oliver at first.in-berlin.de
Mo Jul 11 18:53:36 CEST 2005


On Mon, Jul 11, 2005 at 12:03:43PM +0200, Ihno Krumreich wrote:
> On Mon, Jul 11, 2005 at 01:12:57AM +0200, Oliver Bandel wrote:
> > On Mon, Jul 11, 2005 at 12:54:59AM +0200, Oliver Bandel wrote:
> > [...]
> > > > - Oder sollen fortlaufend Daten eingelesen und verarbeitet werden?
> > > 
> > > Sp?tere Sprachen sollen auch das mal tun. Also entweder als Streamingfilter
> > > oder wie man das nennen mag.
> > 
> > Habe auch schon dr?ber nachgedacht, ob man nicht Eventgesteuerte Sachen,
> > also quasi GUI-like zeugs mit lex/yacc abarbeiten k?nnte...
> > ...ist sicherlich sinnvoller, als so krudes zeugs zu machen, wie die meisten
> > GUI-Toolkits einem aufschwatzen wollen, also alles irgendwie mit
> > Programmieranweisungen in allg. Programmiersprachen und irgendwelchen
> > API-Aufrufen machen zu m?ssen...
> 
> Naja. Was macht man den bei einer GUI-Prog? Man erzeugt ein Objekt und
> sagt dem Eventmanager fuer welche Events das Objekt sich zustaendig
> fuehlt. Das kann man auch in einer Grammatik beschreiben und dann mit
> lex&yacc verarbeiten.


Eben. Wird aber nicht so gemacht?
Warum nicht?



[...]
> > So sieht das Ergebnis aus:
> > 
> > =================
> > 
> > @SysInclude {doc}
> > 
> > @Doc
> > @Text @Begin
> > 
> > {{"Montag"} /1.0f "Aufstehen" /1.0f "Kaffee kochen" /1.0f "arbeiten" /1.0f "schlafen gehen"} |1.0f {"schlafe noch" /1.0f {"Dienstag"} /1.0f "Ausschlafen"}
> > 
> > 
> > @End @Text
> > =================
> > 
> 
> Warum heist es {"schlafe noch" /1.0f {"Dienstag"} /1.0f "Ausschlafen"}
> und nicht {"Dienstag" /1.0f {"schlafe noch"} /1.0f "Ausschlafen"} ?


Weil es in der Ausgangssprache

===============================================================
tuesday = "Dienstag" above "Ausschlafen" below "schlafe noch"
===============================================================

heisst und nicht

===============================================================
tuesday = "Dienstag" above ("Ausschlafen" below "schlafe noch")
===============================================================

und ich strikt von links nach rechts zusammenfasse.
Soll heissen, was von links nach rechts zusammen gebaut wird,
gehört zusammen, bevor die nächste ANweisung kommt; nur
die Klammern würden das dann ändern.

(Evtl. könnte man ja auch Anweisungen mit anderer Prio oder
 Zusammenfassen von rechts her einsetzen, wenn es irgendwo Sinn macht...?!
 Macht das irgendwo Sinn? ...wie gesagt, ich experimentiere hier noch etwas herum)

Hätte das natürlich auch anders machen können,
aber irgendwie erschien es mir am sinnvollsten so.
Und warum sollte "below" höhere Priorität als "above" haben?

Daß das Beispiel etwas ungünstig gewählt war ist mir auch erst aufgefallen,
als ich es mir nochmals als ps-File anschaute... ;-)

Gruß,
   Oliver



Mehr Informationen über die Mailingliste linux-l