%{
#include <stdio.h>
#include <stdlib.h>
%}
%%
[0-9]+ { yylval
= atoi
(yytext
); return
NUMBER; } // Recognize numbers
[-+*/\n] { return yytext[0]; } // Recognize operators and newline
[ \t] ; // Ignore whitespace
. { printf("Invalid character: %s\n", yytext); } // Handle invalid characters
%%
int main() {
int token;
while (1) {
token = yylex();
if (token == 0) {
break;
}
printf
("
Number: %d\n", yylval);
} else if (token == '+' || token == '-' || token == '*' || token == '/') {
printf("Operator: %c\n", token);
}
}
return 0;
}
JXsKCiNpbmNsdWRlIDxzdGRpby5oPgoKI2luY2x1ZGUgPHN0ZGxpYi5oPgoKJX0KCgoKJSUKClswLTldKyAgICAgICAgICAgICAgeyB5eWx2YWwgPSBhdG9pKHl5dGV4dCk7IHJldHVybiBOVU1CRVI7IH0gICAvLyBSZWNvZ25pemUgbnVtYmVycwoKWy0rKi9cbl0gICAgICAgICAgICB7IHJldHVybiB5eXRleHRbMF07IH0gICAgICAgICAgICAgICAgICAgICAgLy8gUmVjb2duaXplIG9wZXJhdG9ycyBhbmQgbmV3bGluZQoKWyBcdF0gICAgICAgICAgICAgICA7IC8vIElnbm9yZSB3aGl0ZXNwYWNlCgouICAgICAgICAgICAgICAgICAgIHsgcHJpbnRmKCJJbnZhbGlkIGNoYXJhY3RlcjogJXNcbiIsIHl5dGV4dCk7IH0gLy8gSGFuZGxlIGludmFsaWQgY2hhcmFjdGVycwoKJSUKCgoKaW50IG1haW4oKSB7CgogICAgaW50IHRva2VuOwoKICAgIHdoaWxlICgxKSB7CgogICAgICAgIHRva2VuID0geXlsZXgoKTsKCiAgICAgICAgaWYgKHRva2VuID09IDApIHsKCiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICB9CgogICAgICAgIGlmICh0b2tlbiA9PSBOVU1CRVIpIHsKCiAgICAgICAgICAgIHByaW50ZigiTnVtYmVyOiAlZFxuIiwgeXlsdmFsKTsKCiAgICAgICAgfSBlbHNlIGlmICh0b2tlbiA9PSAnKycgfHwgdG9rZW4gPT0gJy0nIHx8IHRva2VuID09ICcqJyB8fCB0b2tlbiA9PSAnLycpIHsKCiAgICAgICAgICAgIHByaW50ZigiT3BlcmF0b3I6ICVjXG4iLCB0b2tlbik7CgogICAgICAgIH0KCiAgICB9CgogICAgcmV0dXJuIDA7Cgp9Cgo=