该指令在 flex (lex) 中意味着什么:
#define yywrap() 1
和这个 [ \t]+$
我在下面的代码中找到它:
(%%
[ \t]+ putchar('_');
[ \t]+%
%%
输入“你好世界”
输出“你好世界”
)
根据Lex 和 Yacc 页面 http://dinosaur.compilertools.net/flex/flex_10.html:
当扫描仪收到来自的文件结束指示时YY_INPUT
,然后它检查yywrap()
功能。如果yywrap()
返回 false(零),则假定该函数已继续并设置yyin
指向另一个输入文件,然后扫描继续。如果它返回 true(非零),则扫描器终止,向其调用者返回 0。请注意,无论哪种情况,启动条件都保持不变;它不会恢复到INITIAL
.
The #define
用于简化程序的构建(这样就不会-ll
需要链接选项)。
进一步阅读:
- lex 和 yacc 是什么? http://aquamentus.com/tut_lexyacc.html
- 重新处理输入的例程 http://osr507doc.sco.com/en/tools/Lex_reprocessing.html
-
6. Lex和YACC内部如何工作 http://tldp.org/HOWTO/Lex-YACC-HOWTO-6.html(Lex 和 YACC 入门/HOWTO)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)