3

我正在尝试制作一个依赖于启动条件的可重入扫描仪。

我一直在关注类似于这个家伙的问题:

使用 Flex 编写可重入词法分析器

yyscan_t正如一张海报所提到的,如果您明确创建并将其作为额外参数传递,扫描仪将起作用。但是,当我使用等来操作启动条件时,我仍然会收到yyg undeclared错误消息。BEGIN <sc>

这是一个错误吗?我应该明确地使用yy_push_stateand yy_pop_statestate 函数吗?

4

1 回答 1

2

看起来当您使用时,%option reentrant您只能在词法分析器的操作部分中使用BEGINYY_START,而不能在代码部分中使用。操作解析器状态需要访问解析器状态是有意义的,但BEGIN不接受任何参数,因此无法提供它。使用%option stackand yy_push/pop_state似乎是一个合理的解决方法。

于 2012-12-19T20:01:04.520 回答