Chinaunix

标题: lex包含了很多以yy开头的变量和函数,这个yy的英文全称是? [打印本页]

作者: cdsfiui    时间: 2016-09-16 22:56
标题: lex包含了很多以yy开头的变量和函数,这个yy的英文全称是?
例如lex有变量yyin,yyout,yytext,yyleng,yylineno,函数有yylex(),yywrap(),yyless(int),yymore。
我想知道这个yy是什么英文短语的缩写? 和Yacc/bison有关系吗?

Plus: 为什么flex被叫做fast lex。难道lex很慢而gun的flex用什么特殊的方式,编译速度很快,或者是编译出来的c代码效率很高? 这个fast体现在哪里呢?

谢谢

作者: windoze    时间: 2016-09-17 01:24
本帖最后由 windoze 于 2016-09-17 18:01 编辑

flex是改进版lex,这些yyxxx用于对接yacc或者它的升级版bison,yacc顾名思义就喜欢yy。
至于怎么个fast,老实说功能多了点,但也没fast到哪儿去,你就当它是广告吧。
作者: drangon    时间: 2016-09-17 08:41
lex(flex)是词法分析,生成token,而yacc(bison)是文法分析,其输入就是lex生成的token,所以yacc一般都是直接访问lex的变量,命名也是因为这样


作者: pandaiam    时间: 2016-09-17 13:20
yacc最有意思

作者: MMMIX    时间: 2016-09-17 13:21
本帖最后由 MMMIX 于 2016-09-17 13:22 编辑

回复 2# windoze


flex是改进版yacc

flex 是改进版的 lex; bison 才是改进版的 yacc。
lexer 和 parser 这两个差太多了。

作者: windoze    时间: 2016-09-17 18:00
回复 5# MMMIX

哈哈哈哈被你发现了,我昨晚写这个答案的时候脑子处于半休克状态

作者: MMMIX    时间: 2016-09-18 20:18
windoze 发表于 2016-09-17 18:00
回复 5# MMMIX

哈哈哈哈被你发现了,我昨晚写这个答案的时候脑子处于半休克状态

我还以为你被盗号了呢……





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2