Problem: Write a Lex program for Decimal to Binary conversion.
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.
Examples:
Input: 12 Output: 1100 Input: 115 Output: 1110011 Input: 25 Output: 11001 Input: 220 Output: 11011100
Implementation:
/* Lex program for decimal to binary conversion */ %{ /* Definition section */
#include<stdio.h>
int num, r, b=0, p=1;
%} DIGIT [0-9] /* Rule Section */ %% {DIGIT}+ { num= atoi (yytext);
while (num > 0)
{
r= num % 2;
b+= r*p;
p*= 10;
num/= 2;
}
printf ( "%d" , b);
}
.|\n ECHO; %% // driver code int main()
{ yylex();
return 0;
} |
Output:
Article Tags :