使用lex检测浮点数

时间:2017-01-15 15:40:22

标签: c floating-point lex

我正在尝试使用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;

}

1 个答案:

答案 0 :(得分:0)

指定F时,请尝试使用(Expo)代替Sign "+"|"-"。 我还建议使用Sign [+-]来避免{{1}}中未终止的字符范围[x-y]。