Re: Artikel Debian

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char expr [] = "(a(((bc(d))lll)de(faaa)))zzz";
int i = 0;

char gettoken () {
    return expr [i++];
}
void tokenback () {
    i--;
}

/*
aaaa
aaaaaa
aaaaaaa
aaaaaaaa()
*/

int stream ();
int followed ();
int compound ();
int or_operator ();
int repeat_operator ();

int or_operator () {
    repeat_operator ();
    if (gettoken () == '+') {
        repeat_operator ();
    }
    else
        tokenback ();
}

int repeat_operator () {
    if (gettoken () == '*') {
        stream ();
    }
    else
        tokenback ();
    stream ();

}

int stream () {
    compound ();
    followed ();
}

int followed () {
    int ch = gettoken ();
    if ((ch >= 'a') \&amp;\&amp; (ch <= 'z')) {
        printf ("%c ", ch);
        or_operator ();
    }
    else
        tokenback ();
}

int compound () {
    if (gettoken () == '(') {
        or_operator ();
        if (gettoken () != ')') {
            fprintf (stderr, "fehler klammer vergessen %c %in", expr [i], i);
            exit (1);
        }
    }
    else
        tokenback ();
}




int main (void) {
    or_operator ();
}