0
我使用Flex生成從聲明語句標記爲:在柔性掃描分離標識符從關鍵字
int a = 5;
令牌是:這詞位爲INT
<int> <id,a> <=> <5>
值得注意的是int和一個是詞法id的詞法。
來到法代碼:
%{
#define YYSTYPE char*
#include "parser.tab.h"
#include "stdlib.h"
int lineno=1;
%}
white [ \t]+
letter [A-Za-z]
digit [0-9]
id {letter}({letter}|{digit})*
number {digit}+
relop >=|<=|>|<|==|!=
%%
{white} { }
{number} {yylval=strdup(yytext); return NUMBER;}
{id} { yylval=strdup(yytext); return ID;}
"+" return PLUS;
"-" return MINUS;
"*" return TIMES;
"/" return DIVIDE;
int return INT;
float return FLOAT;
問題是字符串int和浮子被匹配爲ID和令牌被返回作爲ID。因此存在語法錯誤。有什麼辦法可以解決這個問題嗎?