Open In App

Lex program for Decimal to Hexadecimal Conversion

Last Updated : 30 Apr, 2019
Comments
Improve
Suggest changes
Like Article
Like
Report
Problem: Write a Lex program for Decimal to Hexadecimal conversion. Explanation: 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: 12 
Output: C

Input: 116
Output: 74

Input: 55
Output: 37

Input: 212
Output: D4 
Implementation: C
/* Lex program for decimal to hexadecimal conversion */

%{
    /* Definition section */
    #include<stdio.h>
    int num, r, digit=0, count, pcount=0, i;
    char a[20];
%}

DIGIT [0-9]
/* Rule Section */
%%

{DIGIT}+ { num=atoi(yytext);

        while(num!=0)
        {

            r=num%16;
            digit='0'+r;
            if(digit>'9')
            digit+=7;
            a[count++]=digit;
            num=num/16;

        }

        for(i=count-1;i>=pcount;--i)
                printf("%c", a[i]);
                pcount=count;
        }

.|\n    ECHO;
       
%%

// driver code
int main()
{
    yylex();
    return 0;
}      
Output:

Next Article

Similar Reads