1
我想在做一個詞法分析器完成任務,但我一直每次收到此錯誤我儘量讓lex.cc.y文件使用Flex:Flex的表達警告,規則不能匹配
「fofo.l」,行:13警告規則不能匹配。
「fofo.l」,行:14警告規則不能匹配。
%{
#include <stdio.h>
#define Relop 1
#define Addop 2
#define Mulop 3
#define Assignop 4
#define Not 5
%}
%%
["<"|">"|"<="|">="|"=="|"!="]* { return Relop; }
["+"|"-"|"||"]* { return Addop; }
["*"|"/"|"%"|"&&"]* { return Mulop; }
["="]* { return Assignop; }
["!"]* { return Not; }
. { return -1; }
%%
int main() {
int token;
while ((token = yylex())) {
switch (token) {
case Relop: printf("Relop: %s\n", yytext); break;
case Addop: printf("Addop: %s\n", yytext); break;
case Mulop: printf("Mulop: %s\n", yytext); break;
case Assignop: printf("Assignop: %s\n", yytext); break;
case Not: printf("Not: %s\n", yytext); break;
default: printf("Error: %s not recognized\n", yytext);
}
}
}
您需要重新閱讀有關[] – rici
含義的手冊,以及我在一段時間後才能解決問題,但出於某種原因,我得到了「Realop」作爲這兩個「!」的輸出。和「=」字符,而我應該分別得到「不」和「分配」。我也遇到了無法識別的減號「 - 」。 –
你是否知道[]意味着什麼以及爲什麼不應該像你一樣使用它們? – rici