%{
#include <stdio.h>
%}
%%
"#include
<stdio
.h
>"
{ printf
("# include
<stdio
.h
> is a preprocessor\n"
); }
/* Keywords */
"int"|"void"|"main"|"printf" { printf("A keyword: %s\n", yytext); }
/* Identifiers */
[a-zA-Z_][a-zA-Z0-9_]* { printf("An identifier: %s\n", yytext); }
/* Numbers */
[0-9]+ { printf
("An
integer: %s\n", yytext); }
/* Operators */
[+\-*/=] { printf("An operator : %s\n", yytext); }
/* Punctuation */
[(){};,] { printf("%s is a punctuation\n", yytext); }
/* String literal */
\".*\" { printf("%s is a literalstring\n", yytext); }
/* Ignore spaces */
[ \t\n] ;
/* Anything else */
. { printf("Unknown: %s\n", yytext); }
%%
int main() {
yylex();
return 0;
}
JXsKI2luY2x1ZGUgPHN0ZGlvLmg+CiV9CgolJQoiI2luY2x1ZGU8c3RkaW8uaD4iICAgICB7IHByaW50ZigiIyBpbmNsdWRlPHN0ZGlvLmg+IGlzIGEgcHJlcHJvY2Vzc29yXG4iKTsgfQoKLyogS2V5d29yZHMgKi8KImludCJ8InZvaWQifCJtYWluInwicHJpbnRmIiAgIHsgcHJpbnRmKCJBIGtleXdvcmQ6ICVzXG4iLCB5eXRleHQpOyB9CgovKiBJZGVudGlmaWVycyAqLwpbYS16QS1aX11bYS16QS1aMC05X10qICB7IHByaW50ZigiQW4gaWRlbnRpZmllcjogJXNcbiIsIHl5dGV4dCk7IH0KCi8qIE51bWJlcnMgKi8KWzAtOV0rICAgICAgICAgICAgICAgICAgeyBwcmludGYoIkFuIGludGVnZXI6ICVzXG4iLCB5eXRleHQpOyB9CgovKiBPcGVyYXRvcnMgKi8KWytcLSovPV0gICAgICAgICAgICAgICAgeyBwcmludGYoIkFuIG9wZXJhdG9yIDogJXNcbiIsIHl5dGV4dCk7IH0KCi8qIFB1bmN0dWF0aW9uICovClsoKXt9OyxdICAgICAgICAgICAgICAgIHsgcHJpbnRmKCIlcyBpcyBhIHB1bmN0dWF0aW9uXG4iLCB5eXRleHQpOyB9CgovKiBTdHJpbmcgbGl0ZXJhbCAqLwpcIi4qXCIgICAgICAgICAgICAgICAgICB7IHByaW50ZigiJXMgaXMgYSBsaXRlcmFsc3RyaW5nXG4iLCB5eXRleHQpOyB9CgovKiBJZ25vcmUgc3BhY2VzICovClsgXHRcbl0gICAgICAgICAgICAgICAgIDsKCi8qIEFueXRoaW5nIGVsc2UgKi8KLiAgICAgICAgICAgICAgICAgICAgICAgeyBwcmludGYoIlVua25vd246ICVzXG4iLCB5eXRleHQpOyB9CgolJQoKaW50IG1haW4oKSB7CiAgICB5eWxleCgpOwogICAgcmV0dXJuIDA7Cn0=