%{
#include <stdio.h>
#include <stdlib.h>
%}
%%
// Regular Expressions (token definitions)
int [a-zA-Z_][a-zA-Z0-9_]*
digit [0-9]+
keyword int
|float|if
|else
|for
|while
|return
%%
// Rules and actions
{keyword} {printf("Token: %s | Type: KEYWORD\n", yytext); }
{int} {printf("Token: %s | Type: IDENTIFIER\n", yytext); }
{float} {printf
("Token
: %s | Type: CONSTANT\n", yytext); } {digit} {printf("Token: %s | Type: CONSTANT\n", yytext); }
"+"|"-"|"*"|"/" { printf("Token: %s | Type: OPERATOR\n", yytext); }
"(" | ")" | ";" | "," { printf("Token: %s | Type: PUNCTUATION\n", yytext); }
"//".* {printf("Token: %s | Type: COMMENT\n", yytext); }
"/*".* "*/" {printf("Token: %s | Type: COMMENT\n", yytext); }
[ \t\n\r]+ { /* Ignore whitespace */ }
. { printf("Token: %s | Type: UNKNOWN\n", yytext); }
%%
int main() {
yylex(); // Invoke the lexical analyzer
return 0;
}
JXsKI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KJX0KJSUKLy8gUmVndWxhciBFeHByZXNzaW9ucyAodG9rZW4gZGVmaW5pdGlvbnMpCmludCAgICAgW2EtekEtWl9dW2EtekEtWjAtOV9dKgpmbG9hdCAgIFswLTldK1wuWzAtOV0rCmRpZ2l0ICAgWzAtOV0rCmtleXdvcmQgaW50fGZsb2F0fGlmfGVsc2V8Zm9yfHdoaWxlfHJldHVybgolJQovLyBSdWxlcyBhbmQgYWN0aW9ucwp7a2V5d29yZH0gICAgICB7cHJpbnRmKCJUb2tlbjogJXMgfCBUeXBlOiBLRVlXT1JEXG4iLCB5eXRleHQpOyB9CntpbnR9ICAgICAge3ByaW50ZigiVG9rZW46ICVzIHwgVHlwZTogSURFTlRJRklFUlxuIiwgeXl0ZXh0KTsgfQp7ZmxvYXR9ICAgICAge3ByaW50ZigiVG9rZW46ICVzIHwgVHlwZTogQ09OU1RBTlRcbiIsIHl5dGV4dCk7IH0Ke2RpZ2l0fSAgICAgIHtwcmludGYoIlRva2VuOiAlcyB8IFR5cGU6IENPTlNUQU5UXG4iLCB5eXRleHQpOyB9CiIrInwiLSJ8IioifCIvIiB7IHByaW50ZigiVG9rZW46ICVzIHwgVHlwZTogT1BFUkFUT1JcbiIsIHl5dGV4dCk7IH0KIigiIHwgIikiIHwgIjsiIHwgIiwiIHsgcHJpbnRmKCJUb2tlbjogJXMgfCBUeXBlOiBQVU5DVFVBVElPTlxuIiwgeXl0ZXh0KTsgfQoiLy8iLiogICB7cHJpbnRmKCJUb2tlbjogJXMgfCBUeXBlOiBDT01NRU5UXG4iLCB5eXRleHQpOyB9CiIvKiIuKiAiKi8iICAgICB7cHJpbnRmKCJUb2tlbjogJXMgfCBUeXBlOiBDT01NRU5UXG4iLCB5eXRleHQpOyB9ClsgXHRcblxyXSsgICB7IC8qIElnbm9yZSB3aGl0ZXNwYWNlICovIH0KCi4gICAgICAgICAgICAgICB7IHByaW50ZigiVG9rZW46ICVzIHwgVHlwZTogVU5LTk9XTlxuIiwgeXl0ZXh0KTsgfQolJQoKaW50IG1haW4oKSB7Cnl5bGV4KCk7ICAvLyBJbnZva2UgdGhlIGxleGljYWwgYW5hbHl6ZXIKICAgIHJldHVybiAwOwp9Cg==