%{
#include <stdio.h>
#include <string.h>

int lineno = 1;
%}

%%
"int"       { printf("Keyword: %s\n", yytext); }
"float"     { printf("Keyword: %s\n", yytext); }
"if"        { printf("Keyword: %s\n", yytext); }
"else"      { printf("Keyword: %s\n", yytext); }
"return"    { printf("Keyword: %s\n", yytext); }

[0-9]+      { printf("Constant: %s\n", yytext); }
[a-zA-Z_][a-zA-Z0-9_]* { printf("Identifier: %s\n", yytext); }

"=="        { printf("Operator: %s\n", yytext); }
"="         { printf("Operator: %s\n", yytext); }
"+"         { printf("Operator: %s\n", yytext); }
"-"         { printf("Operator: %s\n", yytext); }
"*"         { printf("Operator: %s\n", yytext); }
"/"         { printf("Operator: %s\n", yytext); }

";"         { printf("Delimiter: %s\n", yytext); }
","         { printf("Delimiter: %s\n", yytext); }
"("         { printf("Delimiter: %s\n", yytext); }
")"         { printf("Delimiter: %s\n", yytext); }
"{"         { printf("Delimiter: %s\n", yytext); }
"}"         { printf("Delimiter: %s\n", yytext); }

[\n]        { lineno++; }
[ \t]       { /* skip whitespace */ }
.           { printf("Unknown token: %s\n", yytext); }
%%

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

int yywrap() {
    return 1;
}
