/* LRS(Language Recognition System) ±³Àç 241ÂÊ <¿¹Á¦9>¿¡ ´ëÇÑ ¾ð¾îÀÎ½Ä ÇÁ·Î±×·¥ Å×½ºÆ® ½ºÆ®¸µ : "abb$", "aaabbb$" */ /* Language Recognizer for the following CFG. G = ({S, A}, {a, b}, P, S) P: S --> aAb A --> aS A --> b */ #include char ch; int errflag = 0; /* Recognition-failed message. */ void error() { if (!errflag) { puts("FAIL"); errflag = 1; } } void pa() { if (ch == 'a') ch = getchar(); else error(); } void pb() { if (ch == 'b') ch = getchar(); else error(); } /* S --> aAb */ void pS() { void pA(); if (ch == 'a') { pa(); pA(); pb(); } else error(); } /* A --> aS A --> b */ void pA() { switch (ch) { case 'a': pa(); pS(); break; case 'b': pb(); break; default: error(); } } void main() { ch = getchar(); pS(); if (!errflag && ch == '$') puts("OK"); else error(); }