%{ /*LEX program to count the number of: a) Positive and negative integers
b) Positive and negative fractions */
int zcnt=0, pcnt=0, ncnt=0, pfcnt=0, nfcnt=0;
%}
zero [+]?[0]+|[-][0]+|[+]?[0]\.[0]|[-][0]\.[0]
%%
{zero} { zcnt++; }
[+]?[0]*[1-9][0-9]* { pcnt++; }
[-][0]*[1-9][0-9]* { ncnt++; }
[+]?[0-9]*\.[0-9]+ { pfcnt++; }
[-][0-9]*\.[0-9]+ { nfcnt++; }
\n return;
%%
main()
{
printf("Enter nos separated by space: ");
yylex();
printf("No of zeros=%d\n", zcnt);
printf("No of positive integers=%d\n", pcnt);
printf("No of negative integers=%d\n", ncnt);
printf("No of positive fractions=%d\n", pfcnt);
printf("No of negative fractions=%d\n", nfcnt);
}
JXsgLypMRVggcHJvZ3JhbSB0byBjb3VudCB0aGUgbnVtYmVyIG9mOiBhKSBQb3NpdGl2ZSBhbmQgbmVnYXRpdmUgaW50ZWdlcnMKYikgUG9zaXRpdmUgYW5kIG5lZ2F0aXZlIGZyYWN0aW9ucyAqLwppbnQgemNudD0wLCBwY250PTAsIG5jbnQ9MCwgcGZjbnQ9MCwgbmZjbnQ9MDsKJX0KemVybyBbK10/WzBdK3xbLV1bMF0rfFsrXT9bMF1cLlswXXxbLV1bMF1cLlswXQolJQp7emVyb30geyB6Y250Kys7IH0KWytdP1swXSpbMS05XVswLTldKiB7IHBjbnQrKzsgfQpbLV1bMF0qWzEtOV1bMC05XSogeyBuY250Kys7IH0KWytdP1swLTldKlwuWzAtOV0rIHsgcGZjbnQrKzsgfQpbLV1bMC05XSpcLlswLTldKyB7IG5mY250Kys7IH0KXG4gcmV0dXJuOwolJQptYWluKCkKewpwcmludGYoIkVudGVyIG5vcyBzZXBhcmF0ZWQgYnkgc3BhY2U6ICIpOwp5eWxleCgpOwpwcmludGYoIk5vIG9mIHplcm9zPSVkXG4iLCB6Y250KTsKcHJpbnRmKCJObyBvZiBwb3NpdGl2ZSBpbnRlZ2Vycz0lZFxuIiwgcGNudCk7CnByaW50ZigiTm8gb2YgbmVnYXRpdmUgaW50ZWdlcnM9JWRcbiIsIG5jbnQpOwpwcmludGYoIk5vIG9mIHBvc2l0aXZlIGZyYWN0aW9ucz0lZFxuIiwgcGZjbnQpOwpwcmludGYoIk5vIG9mIG5lZ2F0aXZlIGZyYWN0aW9ucz0lZFxuIiwgbmZjbnQpOwp9