📜  用于十进制到二进制转换的Lex程序

📅  最后修改于: 2021-06-28 06:47:09             🧑  作者: Mango

问题:编写一个Lex程序以进行十进制到二进制的转换。

解释:
FLEX(快速词法分析器生成器)是一种工具/计算机程序,用于生成Vern Paxson于1987年左右在C中编写的词法分析器(扫描器或词法分析器)。Lex读取指定词法分析器的输入流,并输出在C语言中实现词法分析器的源代码编程语言。函数yylex()是运行规则部分的主要flex函数。

例子:

Input: 12 
Output: 1100

Input: 115
Output: 1110011

Input: 25
Output: 11001

Input: 220
Output: 11011100 

执行:

/* Lex program for decimal to binary conversion */
  
%{
  /* Definition section */
  #include
  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;
}      

输出: