Lex program to Count the Positive numbers, Negative numbers and Fractions
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:
/* Lex program to Count the Positive numbers, - Negative numbers and Fractions */ %{ /* Definition section */ int postiveno=0; int negtiveno=0; int positivefractions=0; int negativefractions=0; %} /* Rule Section */ DIGIT [0-9] %% \+?{DIGIT}+ postiveno++; -{DIGIT}+ negtiveno++; \+?{DIGIT}*\.{DIGIT}+ positivefractions++; -{DIGIT}*\.{DIGIT}+ negativefractions++; . ; %% // driver code 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:
Please Login to comment...