%{
#include <stdio.h>
int charCount = 0;
int wordCount = 0;
int spaceCount = 0;
int specialCount = 0;
int upperCount = 0;
int lowerCount = 0;
int lineCount = 0;
%}
%%
[A-Z] { charCount++; upperCount++; }
[a-z] { charCount++; lowerCount++; }
[ \t] { charCount++; spaceCount++; }
\n { charCount++; lineCount++; }
[0-9] { charCount++; } /* digits counted as characters */
[^A-Za-z0-9 \t\n] { charCount++; specialCount++; }
([A-Za-z0-9]+) { wordCount++; }
%%
int main(int argc, char *argv[]) {
if(argc > 1) {
FILE *file = fopen(argv[1], "r");
if(!file) {
printf
("Could not
open file
%s\n", argv[1]); return 1;
}
yyin = file;
}
yylex();
printf("Total Characters: %d\n", charCount);
printf("Total Words: %d\n", wordCount);
printf("Blank Spaces: %d\n", spaceCount);
printf("Special Characters: %d\n", specialCount);
printf("Capital Letters: %d\n", upperCount);
printf("Lowercase Letters: %d\n", lowerCount);
printf
("
Number of Lines
: %d\n", lineCount);
return 0;
}
JXsKI2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgY2hhckNvdW50ID0gMDsKaW50IHdvcmRDb3VudCA9IDA7CmludCBzcGFjZUNvdW50ID0gMDsKaW50IHNwZWNpYWxDb3VudCA9IDA7CmludCB1cHBlckNvdW50ID0gMDsKaW50IGxvd2VyQ291bnQgPSAwOwppbnQgbGluZUNvdW50ID0gMDsKJX0KCiUlCgpbQS1aXSAgICAgICAgICB7IGNoYXJDb3VudCsrOyB1cHBlckNvdW50Kys7IH0KW2Etel0gICAgICAgICAgeyBjaGFyQ291bnQrKzsgbG93ZXJDb3VudCsrOyB9ClsgXHRdICAgICAgICAgIHsgY2hhckNvdW50Kys7IHNwYWNlQ291bnQrKzsgfQpcbiAgICAgICAgICAgICB7IGNoYXJDb3VudCsrOyBsaW5lQ291bnQrKzsgfQpbMC05XSAgICAgICAgICB7IGNoYXJDb3VudCsrOyB9ICAgLyogZGlnaXRzIGNvdW50ZWQgYXMgY2hhcmFjdGVycyAqLwpbXkEtWmEtejAtOSBcdFxuXSB7IGNoYXJDb3VudCsrOyBzcGVjaWFsQ291bnQrKzsgfQooW0EtWmEtejAtOV0rKSB7IHdvcmRDb3VudCsrOyB9CgolJQoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkgewogICAgaWYoYXJnYyA+IDEpIHsKICAgICAgICBGSUxFICpmaWxlID0gZm9wZW4oYXJndlsxXSwgInIiKTsKICAgICAgICBpZighZmlsZSkgewogICAgICAgICAgICBwcmludGYoIkNvdWxkIG5vdCBvcGVuIGZpbGUgJXNcbiIsIGFyZ3ZbMV0pOwogICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICB9CiAgICAgICAgeXlpbiA9IGZpbGU7CiAgICB9CgogICAgeXlsZXgoKTsKCiAgICBwcmludGYoIlRvdGFsIENoYXJhY3RlcnM6ICVkXG4iLCBjaGFyQ291bnQpOwogICAgcHJpbnRmKCJUb3RhbCBXb3JkczogJWRcbiIsIHdvcmRDb3VudCk7CiAgICBwcmludGYoIkJsYW5rIFNwYWNlczogJWRcbiIsIHNwYWNlQ291bnQpOwogICAgcHJpbnRmKCJTcGVjaWFsIENoYXJhY3RlcnM6ICVkXG4iLCBzcGVjaWFsQ291bnQpOwogICAgcHJpbnRmKCJDYXBpdGFsIExldHRlcnM6ICVkXG4iLCB1cHBlckNvdW50KTsKICAgIHByaW50ZigiTG93ZXJjYXNlIExldHRlcnM6ICVkXG4iLCBsb3dlckNvdW50KTsKICAgIHByaW50ZigiTnVtYmVyIG9mIExpbmVzOiAlZFxuIiwgbGluZUNvdW50KTsKCiAgICByZXR1cm4gMDsKfQ==