Hi, On 14 Feb 2003, Ralf Corsepius wrote:
Was man mindestens braucht, ist ein Stack von Zustaenden, Wenn die Sprache rekursiv ist, ja.
Nein. Fuer rekursive Sprachen braucht man schon eine Turingmaschine. Ein Kellerautomat kann kontextfreie Sprachen erkennen. (kontextfreie Sprachen sind eine echte Untermenge von rekursiven Sprachen)
Wenn die Sprache nicht-rekursiv ist, nein (Die gesuchte "Klammerungserkennung" degeneriert dann zu einem Sonderfall der "C-Kommentarerkennung").
Nein. C-Kommentare sind nicht geschachtelt. Mit nicht-rekursiv meinst du regulaer, ja? Das haben wir schon abgegessen, das Klammerausdruecke eben zu keiner regulaeren Sprache gehoeren.
und in der Tat stellt flex einen bereit (zusammen mit yy_push_state, yy_pop_state und yy_top_state).
Nur braucht es den Flex-eigenen Stack dazu nicht unbedingt. Man kann stattdessen auch einen eigenen Stack verwenden, wenn man will.
Oehh, ja, na gut. Aber wenn ich schon so viel selber in den Actions programmieren will, dann kann ich auch gleich ganz davon absehen, ueberhaupt flex zu benutzen. Das Ziel war ja in flex selbst mit Bordmitteln Klammerausdruecke zu erkennen. Das ich das mit C-Code kann ist klar. Und wenn es den Stack nicht anbieten wuerde, ginge es in flex nicht. Ich wundere mich sowieso, wieso sie sowas drin haben. Fuer kontextfreie Sprachen hat man bison, der Stack in flex scheint mir reichlich nutzlos (wird ehh nur aktiviert, wenn man "%option stack" benutzt). Ciao, Micha.