gpt4 book ai didi

c - yy_top_state() 似乎因 flex 而失败

转载 作者:太空宇宙 更新时间:2023-11-04 03:06:42 24 4
gpt4 key购买 nike

所以我正在用 flex 编写这个可重入扫描器,并且我正在使用堆栈选项来跟踪状态。根据文档,似乎

yy_push_state(SCRIPT, yyscanner);
//now yy_top_state(yyscanner) == SCRIPT; should eval true right?

但是当我在 yy_push_state() 之后立即放置以下 printf()

printf("SCRIPT=%d; DQUOTE=%d; CURRENT=%d\n", SCRIPT, DQUOTE, 
yy_top_state(yyscanner));

我得到这个作为输出的返回

SCRIPT=2; DQUOTE=3; CURRENT=1

如果有任何错误,请指出我做错了什么。

提前致谢

最佳答案

不,我不这么认为。根据我看到的代码,将当前状态压入堆栈,然后将状态更改为新状态。

必要时扩展堆栈后,yy_push_state(new_state)执行:

(yy_start_stack)[(yy_start_stack_ptr)++] = YY_START;
BEGIN(new_state);

其中 YY_START 是一个基于当前状态的宏,BEGIN 是设置新状态的宏。

关于c - yy_top_state() 似乎因 flex 而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4074222/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com