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最有意思http://bbs.chinaunix.net//mobcent//app/data/phiz/default/03.png

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

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

MMMIX 发表于 2016-09-18 20:18

windoze 发表于 2016-09-17 18:00
回复 5# MMMIX

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

我还以为你被盗号了呢……
页: [1]
查看完整版本: lex包含了很多以yy开头的变量和函数,这个yy的英文全称是?