Open In App

Lex program for Decimal to Hexadecimal Conversion

Last Updated : 30 Apr, 2019
Improve
Improve
Like Article
Like
Save
Share
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:




/* 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:


Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads