Я новичок в flex, я просто пытаюсь разобрать число:
%{
#include <iostream>
using namespace std;
extern int yylex();
%}
%option noyywrap
DIGIT [0-9]
ID [a-z][a-z0-9]*
NUM {DIGIT}*"."{DIGIT}* | {DIGIT}+
%%
{NUM} {printf("Number encountered : %s\n",yytext);}
%%
int main(int, char**) {
while (yylex());
}
Когда я заменяю строку Number encountered
на
{DIGIT}+ { printf( "Number %s\n", yytext);}
{DIGIT}*"."{DIGIT}* { printf( "Number %s\n", yytext);}
Я получаю вывод , но теперь я не.
Я имею в виду, что это не правильно анализирует. Ничего не печатается.
Как можно решить эту проблему?
Текущий код:
%{
#include <iostream>
using namespace std;
extern int yylex();
%}
%option noyywrap
WS [ \t\n]+
DIGIT [0-9]
NUM ({DIGIT}*"."{DIGIT}*|{DIGIT}+)
%%
NUM {printf("num : %s\n",yytext);}
%%