%{
#include <stdio.h>
#include <stdlib.h>
float a
=0.0, b
=0.0, c
=0.0; %}
%%
"int"|"void"|"float" { printf("Data Type: %s\n", yytext); } /* Identifies data types */
[a-zA-Z][a-zA-Z0-9_]* { printf("Identifier: %s\n", yytext); } /* Identifies identifiers */
[0-9]+ { printf("Constant: %s\n", yytext); } /* Identifies integer constants */
[0-9]+"."[0-9]+ { printf("Constant: %s\n", yytext); } /* Identifies float constants */
"+" { printf("Addition Operator\n"); } /* Identifies addition operator */
"=" { printf("Assignment Operator\n"); } /* Identifies assignment operator */
"printf" { printf("Print Statement\n"); } /* Identifies printf statement */
"return" { printf("Return Statement\n"); } /* Identifies return statement */
"(" { printf("Opening Parenthesis\n"); } /* Identifies opening parenthesis */
")" { printf("Closing Parenthesis\n"); } /* Identifies closing parenthesis */
";" { printf("Semicolon\n"); } /* Identifies semicolon */
. {} /* Ignores characters not matched by any rule */
%%
int main (void) {
yylex();
return (0);
}
JXsKI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KZmxvYXQgYT0wLjAsIGI9MC4wLCBjPTAuMDsKJX0KCiUlCgoiaW50Inwidm9pZCJ8ImZsb2F0IiB7IHByaW50ZigiRGF0YSBUeXBlOiAlc1xuIiwgeXl0ZXh0KTsgfSAvKiBJZGVudGlmaWVzIGRhdGEgdHlwZXMgKi8KW2EtekEtWl1bYS16QS1aMC05X10qIHsgcHJpbnRmKCJJZGVudGlmaWVyOiAlc1xuIiwgeXl0ZXh0KTsgfSAvKiBJZGVudGlmaWVzIGlkZW50aWZpZXJzICovClswLTldKyB7IHByaW50ZigiQ29uc3RhbnQ6ICVzXG4iLCB5eXRleHQpOyB9IC8qIElkZW50aWZpZXMgaW50ZWdlciBjb25zdGFudHMgKi8KWzAtOV0rIi4iWzAtOV0rIHsgcHJpbnRmKCJDb25zdGFudDogJXNcbiIsIHl5dGV4dCk7IH0gLyogSWRlbnRpZmllcyBmbG9hdCBjb25zdGFudHMgKi8KIisiIHsgcHJpbnRmKCJBZGRpdGlvbiBPcGVyYXRvclxuIik7IH0gLyogSWRlbnRpZmllcyBhZGRpdGlvbiBvcGVyYXRvciAqLwoiPSIgeyBwcmludGYoIkFzc2lnbm1lbnQgT3BlcmF0b3JcbiIpOyB9IC8qIElkZW50aWZpZXMgYXNzaWdubWVudCBvcGVyYXRvciAqLwoicHJpbnRmIiB7IHByaW50ZigiUHJpbnQgU3RhdGVtZW50XG4iKTsgfSAvKiBJZGVudGlmaWVzIHByaW50ZiBzdGF0ZW1lbnQgKi8KInJldHVybiIgeyBwcmludGYoIlJldHVybiBTdGF0ZW1lbnRcbiIpOyB9IC8qIElkZW50aWZpZXMgcmV0dXJuIHN0YXRlbWVudCAqLwoiKCIgeyBwcmludGYoIk9wZW5pbmcgUGFyZW50aGVzaXNcbiIpOyB9IC8qIElkZW50aWZpZXMgb3BlbmluZyBwYXJlbnRoZXNpcyAqLwoiKSIgeyBwcmludGYoIkNsb3NpbmcgUGFyZW50aGVzaXNcbiIpOyB9IC8qIElkZW50aWZpZXMgY2xvc2luZyBwYXJlbnRoZXNpcyAqLwoiOyIgeyBwcmludGYoIlNlbWljb2xvblxuIik7IH0gLyogSWRlbnRpZmllcyBzZW1pY29sb24gKi8KCi4ge30gLyogSWdub3JlcyBjaGFyYWN0ZXJzIG5vdCBtYXRjaGVkIGJ5IGFueSBydWxlICovCgolJQoKaW50IG1haW4gKHZvaWQpIHsKICAgIHl5bGV4KCk7CiAgICByZXR1cm4gKDApOwp9