%{
#include <stdio.h>
int a_count = 0;
int b_count = 0;
%}
%%
a { a_count++; }
b { b_count++; }
\n {
if ((a_count % 2 == 0) && (b_count % 2 == 1)) {
printf("ACCEPTED: Even a's and Odd b's\n");
} else {
printf("REJECTED: a_count = %d, b_count = %d\n", a_count, b_count);
}
// Reset for next input
a_count = 0;
b_count = 0;
}
[^ab\n] { printf("Invalid character: %s\n", yytext); }
%%
int main() {
printf("Enter strings (Ctrl+D or Ctrl+Z to end):\n");
yylex();
return 0;
}
int yywrap() {
return 1;
}
JXsKI2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgYV9jb3VudCA9IDA7CmludCBiX2NvdW50ID0gMDsKJX0KCiUlCmEgICAgICB7IGFfY291bnQrKzsgfQpiICAgICAgeyBiX2NvdW50Kys7IH0KXG4gICAgIHsKICAgICAgICAgIGlmICgoYV9jb3VudCAlIDIgPT0gMCkgJiYgKGJfY291bnQgJSAyID09IDEpKSB7CiAgICAgICAgICAgICAgcHJpbnRmKCJBQ0NFUFRFRDogRXZlbiBhJ3MgYW5kIE9kZCBiJ3NcbiIpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBwcmludGYoIlJFSkVDVEVEOiBhX2NvdW50ID0gJWQsIGJfY291bnQgPSAlZFxuIiwgYV9jb3VudCwgYl9jb3VudCk7CiAgICAgICAgICB9CiAgICAgICAgICAvLyBSZXNldCBmb3IgbmV4dCBpbnB1dAogICAgICAgICAgYV9jb3VudCA9IDA7CiAgICAgICAgICBiX2NvdW50ID0gMDsKICAgICAgfQpbXmFiXG5dIHsgcHJpbnRmKCJJbnZhbGlkIGNoYXJhY3RlcjogJXNcbiIsIHl5dGV4dCk7IH0KJSUKCmludCBtYWluKCkgewogICAgcHJpbnRmKCJFbnRlciBzdHJpbmdzIChDdHJsK0Qgb3IgQ3RybCtaIHRvIGVuZCk6XG4iKTsKICAgIHl5bGV4KCk7CiAgICByZXR1cm4gMDsKfQoKaW50IHl5d3JhcCgpIHsKICAgIHJldHVybiAxOwp9Cg==