flex解析器中的BEGIN(INITIAL)

时间:2014-03-20 08:44:44

标签: flex-lexer text-parsing

我有一个弹性问题。我无法理解什么是BEGIN(INITIAL)命令。我认为这是我已经进入当前状态的开始的方式,但我不确定我是否正确。你能用简单的语言向我解释BEGIN(INITIAL)的作用吗?

提前谢谢!

1 个答案:

答案 0 :(得分:5)

它带回到初始状态。说你有类似的东西:

%x FOO
%%

[A-Z]    { BEGIN(FOO); }
.        {}
<FOO>.   {}
<FOO>\n  { BEGIN(INITIAL); }
%%

这里初始状态,即状态INITIAL是与前两个模式匹配的状态,即“默认”状态。如果您阅读任何大写字符,您将最终进入FOO状态。在状态FOO中,如果遇到换行符,您将最终处于初始状态,这也是与前两个规则匹配的状态。