【发布时间】:2015-03-23 13:23:14
【问题描述】:
我使用 C++ 编程,使用 Flex 词法分析器,我需要识别两个不同的标记,但它们都共享一些符号。我需要识别(a<b+c*4)类型的表达式,其次我需要识别逻辑运算<->。如果我输入a <-> b (a iff b),词法分析器会将其视为a<、-> 和b,但我想得到a、<-> 和b。
//REGEX FOR MATH EXPRESSIONS.
[a-zA-Z0-9<>=]+
//REGEX FOR THE <-> LOGIC OPERATOR
"<->"
这是我的弹性代码:
%option noyywrap
%{
#include <iostream>
#include "parser.tab.c"
using namespace std;
%}
%%
[a-zA-Z0-9<>=]+ {
yylval = strdup(yytext);
return SYMBOL;
}
"&&" {
return AND;
}
"||" {
return OR;
}
"!" {
return NOT;
}
"!(" {
return DIST;
}
[ \0\0] {
return END;
}
"(" {
return LEFT_PAR;
}
")" {
return RIGHT_PAR;
}
"->" {
return THEN;
}
"<->" {
return IFF;
}
%%
我该如何解决这个问题?
您好。
【问题讨论】:
标签: c++ regex token flex-lexer