%{
#include <stdio.h>
int a_count = 0, b_count = 0;
%}
%%
a { a_count++; }
b { b_count++; }
[^ab\n] { printf("Invalid character: %s\n", yytext); }
\n {
if (a_count % 2 == 1 && b_count % 2 == 0) {
printf
(" Accepted
: Odd
number of a
's and Even number of b's\n"
); } else {
printf(" Rejected: a = %d, b = %d\n", a_count, b_count);
}
a_count = 0;
b_count = 0;
}
%%
int yywrap() {
return 1;
}
int main() {
printf("Enter strings (a/b only). Press Ctrl+D (Linux/Mac) or Ctrl+Z (Windows) to stop:\n");
yylex();
return 0;
}
CgolewojaW5jbHVkZSA8c3RkaW8uaD4KaW50IGFfY291bnQgPSAwLCBiX2NvdW50ID0gMDsKJX0KCiUlCgphICAgICAgICB7IGFfY291bnQrKzsgfQpiICAgICAgICB7IGJfY291bnQrKzsgfQpbXmFiXG5dICB7IHByaW50ZigiSW52YWxpZCBjaGFyYWN0ZXI6ICVzXG4iLCB5eXRleHQpOyB9ClxuICAgICAgIHsKICAgICAgICAgICAgIGlmIChhX2NvdW50ICUgMiA9PSAxICYmIGJfY291bnQgJSAyID09IDApIHsKICAgICAgICAgICAgICAgICBwcmludGYoIiBBY2NlcHRlZDogT2RkIG51bWJlciBvZiBhJ3MgYW5kIEV2ZW4gbnVtYmVyIG9mIGInc1xuIik7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHByaW50ZigiIFJlamVjdGVkOiBhID0gJWQsIGIgPSAlZFxuIiwgYV9jb3VudCwgYl9jb3VudCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBhX2NvdW50ID0gMDsKICAgICAgICAgICAgIGJfY291bnQgPSAwOwogICAgICAgICB9CgolJQoKaW50IHl5d3JhcCgpIHsKICAgIHJldHVybiAxOwp9CgppbnQgbWFpbigpIHsKICAgIHByaW50ZigiRW50ZXIgc3RyaW5ncyAoYS9iIG9ubHkpLiBQcmVzcyBDdHJsK0QgKExpbnV4L01hYykgb3IgQ3RybCtaIChXaW5kb3dzKSB0byBzdG9wOlxuIik7CiAgICB5eWxleCgpOwogICAgcmV0dXJuIDA7Cn0=