1.6 独立解析器及字节码编译器 界畵畡 在早期几乎都是被用来嵌入到其它系统中使用,所以源代码通常被编译成动态库或静态库被宿主系 统加载或链接。但随着 界畵畡 的第三方库越来越丰富,人们开始倾向于把 界畵畡 作为一门独立语言来使用。界畵畡 的官方版本里也提供了一个简单的独立解析器,便是 畬畵畡甮畣 所实现的这个。并有 畬畵畡畣甮畣 实现了一个简单的字 节码编译器,可以预编译文本的 界畵畡 源程序。13 1.7 阅读源代码的次序 界畵畡 的源代码有着良好的设计,优美易读。其整体篇幅不大,仅两万行 畃 代码左右14。但一开始入手阅 读还是有些许难度的。 从易到难,理清作者编写代码的脉络非常重要。界畵畡畊畉畔 的作者 畍畩畫略 畐畡畬畬 在回答“哪一个开源代码项目 设计优美,值得阅读不容错过”这个问题时,推荐了一个阅读次序15: 首先、阅读外围的库是如何实现功能扩展的,这样可以熟悉 界畵畡 公开 畁畐畉。不必陷入功能细节。 然后、阅读 畁畐畉 的具体实现。界畵畡 对外暴露的 畁畐畉 可以说是一个对内部模块的一层封装,这个层次尚 未触及核心,但可以对核心代码有个初步的了解。 11极端情况下,我们还可以对 Lua 的源码做稍许改变,把 parser 从最终的发布版本中裁减掉,让虚拟机只能加载预编译好的字节码。这样可以减少 执行代码的体积。Lua 的代码解析部分与核心部分之间非常独立,做到这一点所需修改极少。但这种做法并不提倡。 12如果你静态链接 Lua 库,还可以通过这些 API 控制最终链入执行文件的代码体积。 13笔者倾向于在服务器应用中使用独立的 Lua 解析器。这样会更加灵活,可以随时切换其它 Lua 实现(例如采用性能更高的 LuaJIT),并可以方 便的使用第三方库。 14Lua 5.2.1 版本的源代码分布在 58 个文件中,共 20128 行 C 代码。 15Ask Reddit: Which OSS codebases out there are so well designed that you would consider them ’must reads’? http://www.reddit. com/comments/63hth/ask_reddit_which_oss_codebases_out_there_are_so/c02pxbp
- 粉丝: 26
- 资源: 4135
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助