我正在尝试使用lex来检测浮点数。 以下代码带有输入+ 4.23e-21 给出输出
{+ 4.23} E-21
1
我希望它打印
{+ 4.23e-21}
1
我做错了什么以及如何解决?
%{
#include <stdio.h>
int N_count = 0;
%}
Sign [+-]
Num [0-9]
Expo [eE]{Sign}?{Num}+
F {Sign}?({Num}*\.{Num}+)(Expo)?
%%
{F} {printf("Float = {%s}\n", yytext); N_count++;}
%%
int main()
{
yyin = fopen("test.txt", "r");
yylex();
printf("%d\n", N_count);
return 0;
}
答案 0 :(得分:0)
指定F时,请尝试使用(Expo)
代替Sign "+"|"-"
。
我还建议使用Sign [+-]
来避免{{1}}中未终止的字符范围[x-y]。