%{
#include <stdio.h>
%}

/* Token Definitions */
KEYWORD      int|float|if|else|while|return|void|char
IDENTIFIER   [a-zA-Z_][a-zA-Z0-9_]*
NUMBER       [0-9]+(\.[0-9]+)?
OPERATOR     [+\-*/=<>]
DELIMITER    [;,(){}]

%%
"//".*                              { /* Ignore single-line comments */ }
"/*"([^*]|\*+[^/])*\*+/             { /* Ignore multi-line comments */ }
[ \t\n]+                            { /* Ignore whitespace */ }
{KEYWORD}                           { printf("KEYWORD: %s\n", yytext); }
{IDENTIFIER}                        { printf("IDENTIFIER: %s\n", yytext); }
{NUMBER}                            { printf("NUMBER: %s\n", yytext); }
{OPERATOR}                          { printf("OPERATOR: %s\n", yytext); }
{DELIMITER}                         { printf("DELIMITER: %s\n", yytext); }
.                                   { printf("UNKNOWN: %s\n", yytext); }
%%

int main() {
    yylex();
    return 0;
}
