%{
#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
// --- Token Rules and Actions ---
{keyword} { printf("Token: %s | Type: KEYWORD\n", yytext); }
{float} { printf
("Token
: %s | Type: CONSTANT (FLOAT)\n", yytext); } {digit} { printf("Token: %s | Type: CONSTANT (INT)\n", yytext); }
{int} { printf("Token: %s | Type: IDENTIFIER\n", yytext); }
"+"|"-"|"*"|"/" { printf("Token: %s | Type: OPERATOR\n", yytext); }
"(" | ")" | ";" | "," { printf("Token: %s | Type: PUNCTUATION\n", yytext); }
[ \t\n\r]+ { /* Ignore whitespace */ }
. { printf("Token: %s | Type: UNKNOWN\n", yytext); }
%%
// --- Main Function ---
int main(int argc, char** argv) {
yylex(); // Start lexical analysis
return 0;
}
JXsKI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KJX0KCiUlCi8vIC0tLSBSZWd1bGFyIEV4cHJlc3Npb25zICh0b2tlbiBkZWZpbml0aW9ucykgLS0tCmludCAgICAgICAgICAgICBbYS16QS1aX11bYS16QS1aMC05X10qCmZsb2F0ICAgICAgICAgICBbMC05XStcLlswLTldKwpkaWdpdCAgICAgICAgICAgWzAtOV0rCmtleXdvcmQgICAgICAgICBpbnR8ZmxvYXR8aWZ8ZWxzZXxmb3J8d2hpbGV8cmV0dXJuCgovLyAtLS0gVG9rZW4gUnVsZXMgYW5kIEFjdGlvbnMgLS0tCntrZXl3b3JkfSAgICAgICB7IHByaW50ZigiVG9rZW46ICVzIHwgVHlwZTogS0VZV09SRFxuIiwgeXl0ZXh0KTsgfQp7ZmxvYXR9ICAgICAgICAgeyBwcmludGYoIlRva2VuOiAlcyB8IFR5cGU6IENPTlNUQU5UIChGTE9BVClcbiIsIHl5dGV4dCk7IH0Ke2RpZ2l0fSAgICAgICAgIHsgcHJpbnRmKCJUb2tlbjogJXMgfCBUeXBlOiBDT05TVEFOVCAoSU5UKVxuIiwgeXl0ZXh0KTsgfQp7aW50fSAgICAgICAgICAgeyBwcmludGYoIlRva2VuOiAlcyB8IFR5cGU6IElERU5USUZJRVJcbiIsIHl5dGV4dCk7IH0KIisifCItInwiKiJ8Ii8iIHsgcHJpbnRmKCJUb2tlbjogJXMgfCBUeXBlOiBPUEVSQVRPUlxuIiwgeXl0ZXh0KTsgfQoiKCIgfCAiKSIgfCAiOyIgfCAiLCIgeyBwcmludGYoIlRva2VuOiAlcyB8IFR5cGU6IFBVTkNUVUFUSU9OXG4iLCB5eXRleHQpOyB9ClsgXHRcblxyXSsgICAgICB7IC8qIElnbm9yZSB3aGl0ZXNwYWNlICovIH0KLiAgICAgICAgICAgICAgIHsgcHJpbnRmKCJUb2tlbjogJXMgfCBUeXBlOiBVTktOT1dOXG4iLCB5eXRleHQpOyB9CgolJQoKLy8gLS0tIE1haW4gRnVuY3Rpb24gLS0tCmludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgewogICAgeXlsZXgoKTsgIC8vIFN0YXJ0IGxleGljYWwgYW5hbHlzaXMKICAgIHJldHVybiAwOwp9