我有一个弹性问题。我无法理解什么是BEGIN(INITIAL)命令。我认为这是我已经进入当前状态的开始的方式,但我不确定我是否正确。你能用简单的语言向我解释BEGIN(INITIAL)的作用吗?
提前谢谢!
答案 0 :(得分:5)
它带回到初始状态。说你有类似的东西:
%x FOO
%%
[A-Z] { BEGIN(FOO); }
. {}
<FOO>. {}
<FOO>\n { BEGIN(INITIAL); }
%%
这里初始状态,即状态INITIAL是与前两个模式匹配的状态,即“默认”状态。如果您阅读任何大写字符,您将最终进入FOO状态。在状态FOO中,如果遇到换行符,您将最终处于初始状态,这也是与前两个规则匹配的状态。