Flex启动条件意外结果

时间:2018-07-23 01:55:13

标签: c flex-lexer

我已经厌倦了使用flex条件变量的一个非常简单的示例。

根据我的理解,当我输入“ magic”作为输入时,根据不同的条件,它应该打印出不同的字符串,例如“ first”,“ second”。

但是,当我输入magic时,它仅输出“ magic”,这使我非常困惑。

%START AA BB CC
%%
^a                {ECHO; BEGIN AA;}
^b                {ECHO; BEGIN BB;}
^c                {ECHO; BEGIN CC;}
\n                {ECHO; BEGIN 0;}
<AA>magic         printf("first");
<BB>magic         printf("second");
<CC>magic         printf("third");

1 个答案:

答案 0 :(得分:0)

输入字符串应为“ amagic \ n”

代替“ a \ n”->“魔术\ n”

因为每次输入“ \ n”,该标志都会再次设置为0。