Lua解析器Read脚本内容

你知道C语言是怎么Read一整个文件吗?如果你知道了,那么请忽略本文,如果你不知道,你可以花五分钟来阅读本文。在我开始阅读Lua代码之前,我好像从来没有用C语言写过一次性Read整个文件的字符的代码,以往都是一句句的读取。以至于我对这样的代码失去了敏感性。在开始阅读Lua代码的时候,花了两个小时来寻找Lua解析器如何读取脚本的内容,一直当我看到getc的时候才豁然开朗,以前几乎没有用过getc,开篇就定式的写下了fscanf。下面是一段C语言的代码:

#include <stdio.h>
int main()
{
    FILE * file = fopen("fordebug.lua", "r");
    int c = getc(file);
    file->_base[file->_cnt] = 0;
    printf(file->_base);
    return 0;
}
So easy. 相信你能很快的看懂这段代码,如果我没有猜错,lua正是这样读取脚本文件的。大家可以根据call stack进去看看。

main -> load -> luaL_loadfilex -> skipcomment -> skipBOM。在lparser.c文件中,skipBOM的内容是这样的:

static int skipBOM (LoadF *lf) {
  const char *p = "\xEF\xBB\xBF";  /* Utf8 BOM mark */
  int c;
  lf->n = 0;
  do {
    c &
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值