/* Lex program for counting words, lines, and characters */
%{
#include <stdio.h>
#include <string.h>
int charCount = 0;
int wordCount = 0;
int lineCount = 0;
int digCount = 0;
%}
/* Regular expression definitions */
word [^ \t\n]+
Dig [0-9]+
%%
{Dig} {digCount++;}
"340" {digCount = digCount+10;}
{word} { wordCount++; charCount += strlen(yytext); }
\n { charCount++; lineCount++; }
. { charCount++; }
%%
int main(void) {
yylex();
printf("Characters: %d, Words: %d, Lines: %d, Dig: %d\n",
charCount, wordCount, lineCount, digCount);
return 0;
}
int yywrap(void) {
return 1;
}
LyogTGV4IHByb2dyYW0gZm9yIGNvdW50aW5nIHdvcmRzLCBsaW5lcywgYW5kIGNoYXJhY3RlcnMgKi8KJXsKI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCmludCBjaGFyQ291bnQgPSAwOwppbnQgd29yZENvdW50ID0gMDsKaW50IGxpbmVDb3VudCA9IDA7CmludCBkaWdDb3VudCA9IDA7CiV9CgovKiBSZWd1bGFyIGV4cHJlc3Npb24gZGVmaW5pdGlvbnMgKi8Kd29yZCAgIFteIFx0XG5dKwpEaWcgWzAtOV0rCgolJQp7RGlnfSAgICAgICB7ZGlnQ291bnQrKzt9CiIzNDAiICAgICB7ZGlnQ291bnQgPSBkaWdDb3VudCsxMDt9Cnt3b3JkfSAgICAgIHsgd29yZENvdW50Kys7IGNoYXJDb3VudCArPSBzdHJsZW4oeXl0ZXh0KTsgfQpcbiAgICAgICAgICB7IGNoYXJDb3VudCsrOyBsaW5lQ291bnQrKzsgfQouICAgICAgICAgICB7IGNoYXJDb3VudCsrOyB9CiUlCgppbnQgbWFpbih2b2lkKSB7CiAgICB5eWxleCgpOwogICAgcHJpbnRmKCJDaGFyYWN0ZXJzOiAlZCwgV29yZHM6ICVkLCBMaW5lczogJWQsIERpZzogJWRcbiIsCiAgICAgICAgICAgY2hhckNvdW50LCB3b3JkQ291bnQsIGxpbmVDb3VudCwgZGlnQ291bnQpOwogICAgcmV0dXJuIDA7Cn0KaW50IHl5d3JhcCh2b2lkKSB7CiAgICByZXR1cm4gMTsKfQ==