我爲Flex做了這個實驗,看看我是否輸入了ABC,如果它會看到所有的A,AB,ABC或者只有ABC或者只有表達式列表中的第一個匹配。Flex如何區分A,AB和ABC?
%{
#include <stdio.h>
%}
%%
A puts("got A");
AB puts("got AB");
ABC puts("got ABC");
%%
int main(int argc, char **argv)
{
yylex();
return 0;
}
當我編譯和運行該程序後進入ABC,它以「得到了ABC」這語出驚人我,因爲我認爲法不守訪問文本的軌跡,只找到第一個匹配響應;但實際上,它似乎找到了最長的匹配。
當且僅當不再匹配時,Flex使用什麼策略來響應A?