Lex program to Count the Positive numbers, Negative numbers and Fractions
Last Updated :
01 May, 2019
Problem : Write a Lex program to count the positive numbers, negative numbers and fractions
Explanation :
FLEX (Fast Lexical Analyzer Generator) is a tool/computer program for generating lexical analyzers (scanners or lexers) written by Vern Paxson in C around 1987. Lex reads an input stream specifying the lexical analyzer and outputs source code implementing the lexer in the C programming language. The function yylex() is the main flex function which runs the Rule Section.
Prerequisite: Flex (Fast lexical Analyzer Generator)
Examples:
Input: 2 -8 -2.5 8.5
Output: No. of positive numbers: 1
No. of Negative numbers: 1
No. of Positive numbers in fractions: 1
No. of Negative numbers in fractions: 1
Input: 1 2 3 -4 -5 6.5 7.5
Output: No. of positive numbers: 3
No. of Negative numbers: 2
No. of Positive numbers in fractions: 2
No. of Negative numbers in fractions: 0
Implementation:
%{
int postiveno=0;
int negtiveno=0;
int positivefractions=0;
int negativefractions=0;
%}
DIGIT [0-9]
%%
\+?{DIGIT}+ postiveno++;
-{DIGIT}+ negtiveno++;
\+?{DIGIT}*\.{DIGIT}+ positivefractions++;
-{DIGIT}*\.{DIGIT}+ negativefractions++;
. ;
%%
int main()
{
yylex();
printf ( "\nNo. of positive numbers: %d" , postiveno);
printf ( "\nNo. of Negative numbers: %d" , negtiveno);
printf ( "\nNo. of Positive numbers in fractions: %d" , positivefractions);
printf ( "\nNo. of Negative numbers in fractions: %d\n" , negativefractions);
return 0;
}
|
Output:
Share your thoughts in the comments
Please Login to comment...