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 18:01 编辑
flex是改进版lex,这些yyxxx用于对接yacc或者它的升级版bison,yacc顾名思义就喜欢yy。
至于怎么个fast,老实说功能多了点,但也没fast到哪儿去,你就当它是广告吧。 lex(flex)是词法分析,生成token,而yacc(bison)是文法分析,其输入就是lex生成的token,所以yacc一般都是直接访问lex的变量,命名也是因为这样
yacc最有意思http://bbs.chinaunix.net//mobcent//app/data/phiz/default/03.png
本帖最后由 MMMIX 于 2016-09-17 13:22 编辑
回复 2# windoze
flex是改进版yacc
flex 是改进版的 lex; bison 才是改进版的 yacc。
lexer 和 parser 这两个差太多了。
回复 5# MMMIX
哈哈哈哈被你发现了,我昨晚写这个答案的时候脑子处于半休克状态 {:qq8:}
windoze 发表于 2016-09-17 18:00
回复 5# MMMIX
哈哈哈哈被你发现了,我昨晚写这个答案的时候脑子处于半休克状态
我还以为你被盗号了呢……
页:
[1]