问题:编写一个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;
}
输出: