%{
#include <stdio.h>
%}
%opƟon noyywrap
// Regular expressions
DIGIT [0-9]
ID [a-zA-Z_][a-zA-Z0-9_]*
KEYWORD int
|float|if
|else
|for
|while
|return
|void
|char
OPERATOR (\+|\-|\*|/|==|!=|<=|>=|<|>|=)
DELIMITER [\{\}\[\]\(\);,]
WHITESPACE [ \t\r\n]+
COMMENT (//.*|/\*([^*]|\*+[^*/])*\*+/)
%%
{KEYWORD} { prinƞ("Keyword: %s\n", yytext); }
{ID} { prinƞ("IdenƟfier: %s\n", yytext); }
{DIGIT
}+ { prinƞ
("
Integer: %s\n", yytext); } {DIGIT
}+"
."
{DIGIT
}+ { prinƞ
("
Float: %s\n", yytext); } {OPERATOR} { prinƞ("Operator: %s\n", yytext); }
{DELIMITER} { prinƞ("Delimiter: %s\n", yytext); }
{COMMENT} { prinƞ("Comment\n"); }
{WHITESPACE} { /* ignore */ }
. { prinƞ("Unknown character: %s\n", yytext); }
%%
int main() {
yylex();
return 0;
}
JXsKI2luY2x1ZGUgPHN0ZGlvLmg+CiV9CiVvcMafb24gbm95eXdyYXAKLy8gUmVndWxhciBleHByZXNzaW9ucwpESUdJVCBbMC05XQpJRCBbYS16QS1aX11bYS16QS1aMC05X10qCktFWVdPUkQgaW50fGZsb2F0fGlmfGVsc2V8Zm9yfHdoaWxlfHJldHVybnx2b2lkfGNoYXIKT1BFUkFUT1IgKFwrfFwtfFwqfC98PT18IT18PD18Pj18PHw+fD0pCkRFTElNSVRFUiBbXHtcfVxbXF1cKFwpOyxdCldISVRFU1BBQ0UgWyBcdFxyXG5dKwpDT01NRU5UICgvLy4qfC9cKihbXipdfFwqK1teKi9dKSpcKisvKSAKJSUKe0tFWVdPUkR9IHsgcHJpbsaeKCJLZXl3b3JkOiAlc1xuIiwgeXl0ZXh0KTsgfQp7SUR9IHsgcHJpbsaeKCJJZGVuxp9maWVyOiAlc1xuIiwgeXl0ZXh0KTsgfQp7RElHSVR9KyB7IHByaW7GnigiSW50ZWdlcjogJXNcbiIsIHl5dGV4dCk7IH0Ke0RJR0lUfSsiLiJ7RElHSVR9KyB7IHByaW7GnigiRmxvYXQ6ICVzXG4iLCB5eXRleHQpOyB9CntPUEVSQVRPUn0geyBwcmluxp4oIk9wZXJhdG9yOiAlc1xuIiwgeXl0ZXh0KTsgfQp7REVMSU1JVEVSfSB7IHByaW7GnigiRGVsaW1pdGVyOiAlc1xuIiwgeXl0ZXh0KTsgfQp7Q09NTUVOVH0geyBwcmluxp4oIkNvbW1lbnRcbiIpOyB9CntXSElURVNQQUNFfSB7IC8qIGlnbm9yZSAqLyB9Ci4geyBwcmluxp4oIlVua25vd24gY2hhcmFjdGVyOiAlc1xuIiwgeXl0ZXh0KTsgfQolJQppbnQgbWFpbigpIHsKIHl5bGV4KCk7CiByZXR1cm4gMDsKfSAK