Adventi naptár
Czirkos Zoltán · 2021.08.24.
Egy fura állapotgép
Adott az alábbi programocska. Ez egy C kommentszűrő: a szabványos
bemenetéről olvasott szövegből kiszűri a /*
és */
közötti részeket.
#include <stdio.h>
int main(void) {
int c;
start:
c = getchar();
if (c == EOF) goto vege;
if (c == '/') goto pervolt;
putchar(c);
goto start;
pervolt:
c = getchar();
if (c == EOF) goto vege;
if (c == '*') goto komment;
putchar('/');
if (c == '/') goto pervolt;
putchar(c);
goto start;
komment:
c = getchar();
if (c == EOF) goto vege;
if (c == '*') goto csillag;
goto komment;
csillag:
c = getchar();
if (c == '/') goto start;
if (c == '*') goto csillag;
goto komment;
vege:
return 0;
}
A kérdések:
- Hova lett a ciklus?
- Hova lett az állapotváltozó?
- Egyáltalán: ez így egy állapotgépes szemlélettel megírt program, vagy valami egész más?