%{
#include <stdio.h>
// State definitions
#define S0 0 // Even a, Even b (start)
#define S1 1 // Odd a, Even b (accepting)
#define S2 2 // Even a, Odd b
#define S3 3 // Odd a, Odd b
int state = S0;
%}
%%
a {
if (state == S0) state = S1;
else if (state == S1) state = S0;
else if (state == S2) state = S3;
else if (state == S3) state = S2;
}
b {
if (state == S0) state = S2;
else if (state == S1) state = S3;
else if (state == S2) state = S0;
else if (state == S3) state = S1;
}
\n {
if (state == S1)
printf("Accepted\n");
else
printf("Rejected\n");
state = S0; // Reset for next string
}
. ; // Ignore other characters
%%
int main() {
printf("Enter strings (press Ctrl+D to stop):\n");
yylex();
return 0;
}
JXsKI2luY2x1ZGUgPHN0ZGlvLmg+CgovLyBTdGF0ZSBkZWZpbml0aW9ucwojZGVmaW5lIFMwIDAgIC8vIEV2ZW4gYSwgRXZlbiBiIChzdGFydCkKI2RlZmluZSBTMSAxICAvLyBPZGQgYSwgRXZlbiBiIChhY2NlcHRpbmcpCiNkZWZpbmUgUzIgMiAgLy8gRXZlbiBhLCBPZGQgYgojZGVmaW5lIFMzIDMgIC8vIE9kZCBhLCBPZGQgYgoKaW50IHN0YXRlID0gUzA7CiV9CgolJQphICB7CiAgICBpZiAoc3RhdGUgPT0gUzApIHN0YXRlID0gUzE7CiAgICBlbHNlIGlmIChzdGF0ZSA9PSBTMSkgc3RhdGUgPSBTMDsKICAgIGVsc2UgaWYgKHN0YXRlID09IFMyKSBzdGF0ZSA9IFMzOwogICAgZWxzZSBpZiAoc3RhdGUgPT0gUzMpIHN0YXRlID0gUzI7Cn0KYiAgewogICAgaWYgKHN0YXRlID09IFMwKSBzdGF0ZSA9IFMyOwogICAgZWxzZSBpZiAoc3RhdGUgPT0gUzEpIHN0YXRlID0gUzM7CiAgICBlbHNlIGlmIChzdGF0ZSA9PSBTMikgc3RhdGUgPSBTMDsKICAgIGVsc2UgaWYgKHN0YXRlID09IFMzKSBzdGF0ZSA9IFMxOwp9ClxuIHsKICAgIGlmIChzdGF0ZSA9PSBTMSkKICAgICAgICBwcmludGYoIkFjY2VwdGVkXG4iKTsKICAgIGVsc2UKICAgICAgICBwcmludGYoIlJlamVjdGVkXG4iKTsKCiAgICBzdGF0ZSA9IFMwOyAvLyBSZXNldCBmb3IgbmV4dCBzdHJpbmcKfQouICA7IC8vIElnbm9yZSBvdGhlciBjaGFyYWN0ZXJzCiUlCgppbnQgbWFpbigpIHsKICAgIHByaW50ZigiRW50ZXIgc3RyaW5ncyAocHJlc3MgQ3RybCtEIHRvIHN0b3ApOlxuIik7CiAgICB5eWxleCgpOwogICAgcmV0dXJuIDA7Cn0K