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