lf you re welcome're ________...

歌舞青春2英文台词剧本解析_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
文档贡献者贡献于
评价文档:
46页免费34页免费50页免费76页免费55页免费 52页免费57页免费12页免费65页免费32页免费
喜欢此文档的还喜欢34页免费46页免费52页免费40页免费48页免费
歌舞青春2英文台词剧本解析|英​文​台​词​剧​本​解​析
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
大小:142.57KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢林育群-You_re everything-日本富士电视台_土豆_高清视频在线观看lf-I-say-you`re-ten-one,would-yuo-believe-me
如果我说你`重新一零一,你相信我
此结果来自百度翻译,长句或段落建议您使用
0){var rand = parseInt(Math.random() * (000)+100000);top.location.href='/'+encodeURIComponent(document.getElementById('s').value.trim().replace( / /g, '_'))+'?renovate='+}else{top.location.href='/'+encodeURIComponent(document.getElementById('s').value.trim().replace( / /g, '_'));};}" action="/">
查过的词自动加入生词本
Tip:此功能设置只能在登录状态下生效
lf-I-say-you`re-ten-one,would-yuo-believe-me
需要改进的内容:
单词大小写
其他(请在下面补充描述)
错误描述:
您还可在这里补充说明下 O(∩_∩)O~
方便的话,请您留下一种联系方式,便于问题的解决:随笔 - 14&
文章 - 47&
trackbacks - 0
242526272829301234567891011121314151617182021222324252627282930311234
阅读排行榜
评论排行榜
很早就想读lua的源码,也曾很多次浏览过大概。不过我一直没有深入去读,一是想自己在读lua源码之前,仅凭自己对lua使用的理解自己先实现一个简单的lua子集,二是我觉得自己实现过lua的子集之后也能帮助自己更容易的理解lua源码。前段时间,花了几个月的业余时间,实现了一个简单粗糙的lua子集()之后,我觉得现在可以开始读lua的源码了。从lua.c的main函数开始,lua.c是一个stand-alone的解释器,编译完就是一个交互式命令行解释器,输入一段lua代码,然后执行并返回结果,也可以执行一个lua文件。main:&&/*&call&'pmain'&in&protected&mode&*/&&lua_pushcfunction(L,&&pmain);&&lua_pushinteger(L,&argc);&&/*&1st&argument&*/&&lua_pushlightuserdata(L,&argv);&/*&2nd&argument&*/&&status&=&lua_pcall(L,&2,&1,&0);&&result&=&lua_toboolean(L,&-1);&&/*&get&result&*/main函数创建了lua_State之后就按照调用C导出给lua函数的方式调用了pmain函数。pmain函数中通过lua栈获取到命令行的argc和argv参数之后,对参数进行分析后,主要可以分为两个分支,一个处理交互命令行,一个处理文件。dotty出来交互命令行,handle_script处理lua文件。handle_script:& status&=&luaL_loadfile(L,&fname);&&lua_insert(L,&-(narg+1));&&if&(status&==&LUA_OK)&&&&status&=&docall(L,&narg,&LUA_MULTRET);&&else&&&&lua_pop(L,&narg);在handle_script中先loadfile,然后docall。loadfile会产生一个什么东西在栈上呢?写过lua的程序的人估计都会了解到下面这段lua代码:local f = load(filename)f()load会将文件chunk编译成一个function,然后我们就可以对它调用。如果我们详细看lua文档的话,这个函数可以带有upvalues,也就是这个函数其实是一个闭包(closure)。按照我自己实现的那个粗糙的lua子集的方式的话,每个运行时期的可调用的lua函数都是闭包。#define&luaL_loadfile(L,f)&&&&&luaL_loadfilex(L,f,NULL)luaL_loadfilex:&&if&(filename&==&NULL)&{&&&&lua_pushliteral(L,&"=stdin");&&&&lf.f&=&&&}&&else&{&&&&lua_pushfstring(L,&"@%s",&filename);&&&&lf.f&=&fopen(filename,&"r");&&&&if&(lf.f&==&NULL)&return&errfile(L,&"open",&fnameindex);&&}&&if&(skipcomment(&lf,&&c))&&/*&read&initial&portion&*/&&&&lf.buff[lf.n++]&=&'\n';&&/*&add&line&to&correct&line&numbers&*/&&if&(c&==&LUA_SIGNATURE[0]&&&&filename)&{&&/*&binary&file?&*/&&&&lf.f&=&freopen(filename,&"rb",&lf.f);&&/*&reopen&in&binary&mode&*/&&&&if&(lf.f&==&NULL)&return&errfile(L,&"reopen",&fnameindex);&&&&skipcomment(&lf,&&c);&&/*&re-read&initial&portion&*/&&}&&if&(c&!=&EOF)&&&&lf.buff[lf.n++]&=&c;&&/*&'c'&is&the&first&character&of&the&stream&*/&&status&=&lua_load(L,&getF,&&lf,&lua_tostring(L,&-1),&mode);luaL_loadfile是一个宏,实际是luaL_loadfilex函数,在luaL_loadfilex函数中,我们发现是通过调用lua_load函数实现,lua_load的函数原型是:LUA_API int lua_load (lua_State *L, lua_Reader reader, void *data,&const char *chunkname, const char *mode);定义在lapi.c中,它接受一个lua_Reader的函数并把data作为这个reader的参数。在luaL_loadfilex函数中传给lua_load作为reader是一个static函数getF,getF通过fread读取文件。lua_load:& ZIO&z;&&int&&&lua_lock(L);&&if&(!chunkname)&chunkname&=&"?";&&luaZ_init(L,&&z,&reader,&data);&&status&=&luaD_protectedparser(L,&&z,&chunkname,&mode);在函数lua_load中,又将lua_Reader和data通过luaZ_init函数把数据绑定到ZIO的结构中,ZIO是buffered streams。之后调用luaD_protectedparser,此函数定义在ldo.c中,在这个函数中,我们发现它使用了构造lua_Reader和data的方式构造了调用函数f_parser和它的数据SParser,并将它们传给luaD_pcall,luaD_pcall的功能是在protected模式下用SParser数据调用f_parser函数,因此我们只需追踪f_parser函数即可。luaD_protectedparser:status&=&luaD_pcall(L,&f_parser,&&p,&savestack(L,&L-&top),&L-&errfunc);f_parser:&&if&(c&==&LUA_SIGNATURE[0])&{&&&&checkmode(L,&p-&mode,&"binary");&&&&cl&=&luaU_undump(L,&p-&z,&&p-&buff,&p-&name);&&}&&else&{&&&&checkmode(L,&p-&mode,&"text");&&&&cl&=&luaY_parser(L,&p-&z,&&p-&buff,&&p-&dyd,&p-&name,&c);&&}&f_parser通过数据头的signature来判断读取的数据是binary还是text的,如果是binary的数据,则调用luaU_undump来读取预编译好的lua chunks,如果是text数据,则调用luaY_parser来parse lua代码。我们发现luaU_undump和luaY_parser函数的返回值都是Closure *类型,这个刚好就和我们前面预计的一样,一个chunk load之后返回一个闭包。进入luaY_parser函数后,就调用了一个static的mainfunc开始parse lua代码。仔细回顾上面看过的函数,我们会发现每个C文件的导出函数都会使用lua开头,如果没有lua开头的函数都是static函数。并且我们会发现lua后的大写前缀可以标识这个函数所属的文件:luaL_loadfile&luaL_loadfilex&L应该是library的意思,属于lauxlibluaD_protectedparser&luaD_pcall&D是do的意思,属于ldoluaU_undump U 是undump的意思,属于lundumpluaY_parser Y 是代表yacc的意思,lua的parser最早是用过yacc生成的,后来改成手写,名字也保留下来,属于lparser其它的lua函数也都有这个规律。
阅读(3721)
&re: lua源码剖析(一)& 21:14&
无意中看到你的文章,感到好惭愧,我不知道该拿出什么勇气继续走下去---------爱上C++的菜鸟&&&&&&
&re: lua源码剖析(一)& 16:14&
佩服...&&&&&&
&re: lua源码剖析(一)& 10:02&
分析的优点基础了,要是能深入一点就好了..&&&&&&更多频道内容在这里查看
爱奇艺用户将能永久保存播放记录
过滤短视频
暂无长视频(电视剧、纪录片、动漫、综艺、电影)播放记录,
使用您的微博帐号登录,即刻尊享微博用户专属服务。
使用您的QQ帐号登录,即刻尊享QQ用户专属服务。
使用您的人人帐号登录,即刻尊享人人用户专属服务。
方式2:免费发送短信到手机
请输入正确的手机号
此短信不收取任何费用,保证您的手机号安全不被泄露
下载APP到本机
当前浏览器仅支持手动复制代码
视频地址:
flash地址:
html代码:
收藏成功,可进入查看所有收藏列表
爸爸去哪儿2游戏 立即参与
30秒后自动关闭
you're a sh
发布时间:
播放量数据:
本视频来自于“配音秀”的个人配音作品(更多好玩视频请下载配音秀客户端,现已推出iOS和Android版本,官网地址:)
本视频来自于“配音秀”的个人配音作品(更多好玩视频请下载配音秀客户端,现已推出iOS和Android版本,官网地址:)
你可能还想订阅他们:
周围人都在搜-百度搜索提供
&正在加载...
由于版权原因,此视频暂不支持播放
Sorry,due to copyright issues
you can’t watch the video
这些视频最近很火,赶紧看看吧
很抱歉,您所观看的视频已经下线
这些视频最近很火,赶紧看看吧
呃......网络出错了
Hi,{{username}}:
,请继续享受影片无限看、全站无广告等特权。
您的会员还有{{_remainDays}}天就要到期了
VIP还有{{_remainDays}}天到期
您的会员已经过期{{_remainDays}}天
VIP已过期{{_remainDays}}天
您使用浏览器不支持直接复制的功能,建议您使用Ctrl+C或右键全选进行地址复制
色情低俗内容
血腥暴力内容
广告或欺诈内容
侵犯了我的权力
还可以输入300字
&li data-elem="tabtitle" data-seq="{{seq}}"&
&a href="javascript:void(0);"&
&span>{{start}}-{{end}}&/span&
&li data-downloadSelect-elem="item" data-downloadSelect-selected="false" data-downloadSelect-tvid="{{tvid}}"&
&a href="javascript:void(0);"&{{pd}}&/a&
选择您要下载的《》剧集:
安装爱奇艺视频客户端,
马上开始为您下载本片
5秒后自动消失
免费发送到手机,下载手机APP
请输入正确的手机号
此短信不收取任何费用,保证您的手机号安全不被泄露

我要回帖

 

随机推荐