%{
#include <stdio.h>
#include <ctype.h>
int lines = 0, words = 0, chars = 0;
%}
%option noyywrap
%%
\n { lines++; chars++; }
[ \t]+ { chars += yyleng; }
[a-zA-Z_][a-zA-Z0-9_]* { words++; chars += yyleng; printf("Identifier: %s\n", yytext); }
[0-9]+ { chars
+= yyleng
; printf
("
Number: %s\n", yytext); } [+\-*/=<>!&|]+ { chars += yyleng; printf("Operator: %s\n", yytext); }
[{}()\[\],;] { chars += yyleng; printf("Special Character: %s\n", yytext); }
. { chars += yyleng; }
%%
int main() {
yylex();
printf("\nLines: %d\nWords: %d\nCharacters: %d\n", lines, words, chars);
return 0;
}
JXsKI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxjdHlwZS5oPgppbnQgbGluZXMgPSAwLCB3b3JkcyA9IDAsIGNoYXJzID0gMDsKJX0KCiVvcHRpb24gbm95eXdyYXAKCiUlClxuICAgICAgICAgIHsgbGluZXMrKzsgY2hhcnMrKzsgfSAgClsgXHRdKyAgICAgIHsgY2hhcnMgKz0geXlsZW5nOyB9ICAKW2EtekEtWl9dW2EtekEtWjAtOV9dKiB7IHdvcmRzKys7IGNoYXJzICs9IHl5bGVuZzsgcHJpbnRmKCJJZGVudGlmaWVyOiAlc1xuIiwgeXl0ZXh0KTsgfQpbMC05XSsgICAgICB7IGNoYXJzICs9IHl5bGVuZzsgcHJpbnRmKCJOdW1iZXI6ICVzXG4iLCB5eXRleHQpOyB9ClsrXC0qLz08PiEmfF0rIHsgY2hhcnMgKz0geXlsZW5nOyBwcmludGYoIk9wZXJhdG9yOiAlc1xuIiwgeXl0ZXh0KTsgfQpbe30oKVxbXF0sO10geyBjaGFycyArPSB5eWxlbmc7IHByaW50ZigiU3BlY2lhbCBDaGFyYWN0ZXI6ICVzXG4iLCB5eXRleHQpOyB9Ci4gICAgICAgICAgIHsgY2hhcnMgKz0geXlsZW5nOyB9CgolJQoKaW50IG1haW4oKSB7CiAgICB5eWxleCgpOwogICAgcHJpbnRmKCJcbkxpbmVzOiAlZFxuV29yZHM6ICVkXG5DaGFyYWN0ZXJzOiAlZFxuIiwgbGluZXMsIHdvcmRzLCBjaGFycyk7CiAgICByZXR1cm4gMDsKfQo=