# Lex program for Decimal to Hexadecimal Conversion

• Last Updated : 30 Apr, 2019

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``    ``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:

My Personal Notes arrow_drop_up