%{
#include <stdio.h>
#include <stdlib.h>
int line_number = 1;
%}
%%
"int" { printf("KEYWORD: int\n"); }
"return" { printf("KEYWORD: return\n"); }
"printf" { printf("KEYWORD: printf\n"); }
"main" { printf("IDENTIFIER: main\n"); }
"Hello, World!" { printf("STRING_LITERAL: \"Hello, World!\"\n"); }
"{" { printf("SYMBOL: {\n"); }
"}" { printf("SYMBOL: }\n"); }
"(" { printf("SYMBOL: (\n"); }
")" { printf("SYMBOL: )\n"); }
";" { printf("SYMBOL: ;\n"); }
[ \t\r\n]+ { /* Ignore whitespace */ }
[a-zA-Z_][a-zA-Z0-9_]* { printf("IDENTIFIER: %s\n", yytext); }
[0-9]+ { printf
("
NUMBER: %s\n", yytext); } . { printf("UNKNOWN: %s\n", yytext); }
%%
int main() {
yylex
(); // Call the lexer to tokenize input
return 0;
}
JXsKI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCmludCBsaW5lX251bWJlciA9IDE7CiV9CgolJQoiaW50IiAgICAgICAgICAgIHsgcHJpbnRmKCJLRVlXT1JEOiBpbnRcbiIpOyB9CiJyZXR1cm4iICAgICAgICAgeyBwcmludGYoIktFWVdPUkQ6IHJldHVyblxuIik7IH0KInByaW50ZiIgICAgICAgICB7IHByaW50ZigiS0VZV09SRDogcHJpbnRmXG4iKTsgfQoibWFpbiIgICAgICAgICAgIHsgcHJpbnRmKCJJREVOVElGSUVSOiBtYWluXG4iKTsgfQoiSGVsbG8sIFdvcmxkISIgIHsgcHJpbnRmKCJTVFJJTkdfTElURVJBTDogXCJIZWxsbywgV29ybGQhXCJcbiIpOyB9CiJ7IiAgICAgICAgICAgICAgeyBwcmludGYoIlNZTUJPTDoge1xuIik7IH0KIn0iICAgICAgICAgICAgICB7IHByaW50ZigiU1lNQk9MOiB9XG4iKTsgfQoiKCIgICAgICAgICAgICAgIHsgcHJpbnRmKCJTWU1CT0w6IChcbiIpOyB9CiIpIiAgICAgICAgICAgICAgeyBwcmludGYoIlNZTUJPTDogKVxuIik7IH0KIjsiICAgICAgICAgICAgICB7IHByaW50ZigiU1lNQk9MOiA7XG4iKTsgfQpbIFx0XHJcbl0rICAgICAgIHsgLyogSWdub3JlIHdoaXRlc3BhY2UgKi8gfQpbYS16QS1aX11bYS16QS1aMC05X10qIHsgcHJpbnRmKCJJREVOVElGSUVSOiAlc1xuIiwgeXl0ZXh0KTsgfQpbMC05XSsgICAgICAgICAgIHsgcHJpbnRmKCJOVU1CRVI6ICVzXG4iLCB5eXRleHQpOyB9Ci4gICAgICAgICAgICAgICAgeyBwcmludGYoIlVOS05PV046ICVzXG4iLCB5eXRleHQpOyB9CgolJQoKaW50IG1haW4oKSB7CiAgICB5eWxleCgpOyAgLy8gQ2FsbCB0aGUgbGV4ZXIgdG8gdG9rZW5pemUgaW5wdXQKICAgIHJldHVybiAwOwp9