%%
"if" |
"else" |
"while" |
"for" |
"do" |
"switch" |
"goto" |
"break" |
"case" |
"const" |
"float" |
"double" |
"int" |
"long" |
"short" |
"signed" |
"unsigned" |
"register" |
"typedef" |
"return" |
"enum" |
"sizeof" |
"static" |
"struct" |
"union" |
"void" |
"main" |
"continue" |
"default" |
"printf" |
"scanf" {printf("%s is a keyword\n",yytext);}
[a-zA-Z][a-zA-Z0-9_]* {printf("%s is a identifier\n",yytext);}
[0-9]+ {printf("%s is a number",yytext);}
[+/*%\-] {printf("%s is an arithmetic operator\n",yytext);}
[< >][=]? |
[!=][=] {printf("%s is a relational operator\n",yytext);}
[&][&]|[|][|]|[!] {printf("%s is a logical operator\n",yytext);}
[&][~][|][^][<<][>>] {printf("%s is a bitwise operator\n",yytext);}
[,] {printf("%s is a seperator\n",yytext);}
[;] {printf("%s is a terminator\n",yytext);}
[()] {printf("%s is a braces\n",yytext);}
[{}] {printf("%s is a paranthesis\n",yytext);}
[[]] {printf("%s is a squarebrace\n",yytext);}
"%d" |
"%c" |
"%s" |
"%f" {printf("%s is a formatspecifier\n",yytext);}
[/][/][a-zA-Z]* {printf("%s is a line comment\n",yytext);}
[/][*][a-z0-9A-Z #()%&+-<>!~;".,]*[*][/] {printf("%s is a block comment\n",yytext);}
["][a-z0-9A-Z #()%&+-<>!~;".,]*["] {printf("%s is a string\n",yytext);}
[@#$] {printf("%s is a special character\n",yytext);}
"\\n" {printf("%s is a new line character\n",yytext);}
"#include<stdio.h>" |
"#include<stdbool.h>" |
"#include<string.h>" |
"#include<math.h>" {printf("%s is a header file\n",yytext);}
%%
main()
{
yylex();
}
JSUKImlmIiB8CiJlbHNlIiB8CiJ3aGlsZSIgfAoiZm9yIiB8CiJkbyIgfAoic3dpdGNoIiB8CiJnb3RvIiB8CiJicmVhayIgfAoiY2FzZSIgfAoiY29uc3QiIHwKImZsb2F0IiB8CiJkb3VibGUiIHwKImludCIgfAoibG9uZyIgfAoic2hvcnQiIHwKInNpZ25lZCIgfAoidW5zaWduZWQiIHwKInJlZ2lzdGVyIiB8CiJ0eXBlZGVmIiB8CiJyZXR1cm4iIHwKImVudW0iIHwKInNpemVvZiIgfAoic3RhdGljIiB8CiJzdHJ1Y3QiIHwKInVuaW9uIiB8CiJ2b2lkIiB8CiJtYWluIiB8CiJjb250aW51ZSIgfAoiZGVmYXVsdCIgfAoicHJpbnRmIiB8CiJzY2FuZiIge3ByaW50ZigiJXMgaXMgYSBrZXl3b3JkXG4iLHl5dGV4dCk7fQpbYS16QS1aXVthLXpBLVowLTlfXSoge3ByaW50ZigiJXMgaXMgYSBpZGVudGlmaWVyXG4iLHl5dGV4dCk7fQpbMC05XSsge3ByaW50ZigiJXMgaXMgYSBudW1iZXIiLHl5dGV4dCk7fQpbKy8qJVwtXSB7cHJpbnRmKCIlcyBpcyBhbiBhcml0aG1ldGljIG9wZXJhdG9yXG4iLHl5dGV4dCk7fQpbPCA+XVs9XT8gfApbIT1dWz1dICB7cHJpbnRmKCIlcyBpcyBhIHJlbGF0aW9uYWwgb3BlcmF0b3JcbiIseXl0ZXh0KTt9ClsmXVsmXXxbfF1bfF18WyFdIHtwcmludGYoIiVzIGlzIGEgbG9naWNhbCBvcGVyYXRvclxuIix5eXRleHQpO30KWyZdW35dW3xdW15dWzw8XVs+Pl0gIHtwcmludGYoIiVzIGlzIGEgYml0d2lzZSBvcGVyYXRvclxuIix5eXRleHQpO30KWyxdIHtwcmludGYoIiVzIGlzIGEgc2VwZXJhdG9yXG4iLHl5dGV4dCk7fQpbO10ge3ByaW50ZigiJXMgaXMgYSB0ZXJtaW5hdG9yXG4iLHl5dGV4dCk7fSAKWygpXSAge3ByaW50ZigiJXMgaXMgYSBicmFjZXNcbiIseXl0ZXh0KTt9Clt7fV0ge3ByaW50ZigiJXMgaXMgYSBwYXJhbnRoZXNpc1xuIix5eXRleHQpO30KW1tdXSB7cHJpbnRmKCIlcyBpcyBhIHNxdWFyZWJyYWNlXG4iLHl5dGV4dCk7fQoiJWQiIHwKIiVjIiB8CiIlcyIgfAoiJWYiIHtwcmludGYoIiVzIGlzIGEgZm9ybWF0c3BlY2lmaWVyXG4iLHl5dGV4dCk7fQpbL11bL11bYS16QS1aXSoge3ByaW50ZigiJXMgaXMgYSBsaW5lIGNvbW1lbnRcbiIseXl0ZXh0KTt9ClsvXVsqXVthLXowLTlBLVogIygpJSYrLTw+IX47Ii4sXSpbKl1bL10ge3ByaW50ZigiJXMgaXMgYSBibG9jayBjb21tZW50XG4iLHl5dGV4dCk7fQpbIl1bYS16MC05QS1aICMoKSUmKy08PiF+OyIuLF0qWyJdIHtwcmludGYoIiVzIGlzIGEgc3RyaW5nXG4iLHl5dGV4dCk7fQpbQCMkXSAge3ByaW50ZigiJXMgaXMgYSBzcGVjaWFsIGNoYXJhY3RlclxuIix5eXRleHQpO30KIlxcbiIgIHtwcmludGYoIiVzIGlzIGEgbmV3IGxpbmUgY2hhcmFjdGVyXG4iLHl5dGV4dCk7fQoiI2luY2x1ZGU8c3RkaW8uaD4iIHwKIiNpbmNsdWRlPHN0ZGJvb2wuaD4iIHwKIiNpbmNsdWRlPHN0cmluZy5oPiIgfAoiI2luY2x1ZGU8bWF0aC5oPiIge3ByaW50ZigiJXMgaXMgYSBoZWFkZXIgZmlsZVxuIix5eXRleHQpO30KJSUKCiAgbWFpbigpCiAgewogICB5eWxleCgpOwogIH0K