%{
#include <stdio.h>
int pi = 0, ni = 0, pf = 0, nf = 0;
%}
%%
[-][0-9]+ { ni++; } // negative integers
[+]?[0-9]+ { pi++; } // positive integers
[-][0-9]*\.[0-9]+ { nf++; } // negative fractions
[+]?[0-9]*\.[0-9]+ { pf++; } // positive fractions
. ; // ignore everything else
%%
int yywrap() { return 1; }
int main(int argc, char *argv[])
{
if (argc != 2)
{
printf("Usage: ./a.out input.txt\n");
return 0;
}
yyin = fopen(argv[1], "r");
yylex();
printf
("
Number of positive integers
: %d\n", pi); printf
("
Number of negative integers
: %d\n", ni); printf
("
Number of positive fractions
: %d\n", pf); printf
("
Number of negative fractions
: %d\n", nf);
return 0;
}
JXsKI2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgcGkgPSAwLCBuaSA9IDAsIHBmID0gMCwgbmYgPSAwOwolfQoKJSUKClstXVswLTldKyAgICAgICAgICAgICAgeyBuaSsrOyB9ICAgICAgICAgICAgIC8vIG5lZ2F0aXZlIGludGVnZXJzClsrXT9bMC05XSsgICAgICAgICAgICAgeyBwaSsrOyB9ICAgICAgICAgICAgIC8vIHBvc2l0aXZlIGludGVnZXJzClstXVswLTldKlwuWzAtOV0rICAgICAgeyBuZisrOyB9ICAgICAgICAgICAgIC8vIG5lZ2F0aXZlIGZyYWN0aW9ucwpbK10/WzAtOV0qXC5bMC05XSsgICAgIHsgcGYrKzsgfSAgICAgICAgICAgICAvLyBwb3NpdGl2ZSBmcmFjdGlvbnMKCi4gICAgICAgICAgICAgICAgICAgICAgOyAgICAgICAgICAgICAgICAgICAgIC8vIGlnbm9yZSBldmVyeXRoaW5nIGVsc2UKCiUlCgppbnQgeXl3cmFwKCkgeyByZXR1cm4gMTsgfQoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKewogICAgaWYgKGFyZ2MgIT0gMikKICAgIHsKICAgICAgICBwcmludGYoIlVzYWdlOiAuL2Eub3V0IGlucHV0LnR4dFxuIik7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgeXlpbiA9IGZvcGVuKGFyZ3ZbMV0sICJyIik7CiAgICB5eWxleCgpOwoKICAgIHByaW50ZigiTnVtYmVyIG9mIHBvc2l0aXZlIGludGVnZXJzOiAlZFxuIiwgcGkpOwogICAgcHJpbnRmKCJOdW1iZXIgb2YgbmVnYXRpdmUgaW50ZWdlcnM6ICVkXG4iLCBuaSk7CiAgICBwcmludGYoIk51bWJlciBvZiBwb3NpdGl2ZSBmcmFjdGlvbnM6ICVkXG4iLCBwZik7CiAgICBwcmludGYoIk51bWJlciBvZiBuZWdhdGl2ZSBmcmFjdGlvbnM6ICVkXG4iLCBuZik7CgogICAgcmV0dXJuIDA7Cn0K