lua源码学习篇一:环境部署
研究生即将毕业,答辩完成后,这几天有些时间。开始写一些自己的东西,记录自己的学习历程。
--前言
本着学习和交流的原则,本文的内容仅供参考,而不是权威版本,如有任何问题,欢迎指出。
--声明
跨专业考计算机研究生,至今三年已过,期间有过很多的迷茫,也经历了一些挫折。但是,对编程技术的强烈好奇心驱使我不断前行。我想,大多数爱好计算机的同学,也成想过自己能够创造出一门编程语言,或者至少对编程语言的运行的原理有一个清晰的认识。
这时候,其实要学的东西很多,特别是我这种跨专业的同学。比如说,编译原理一门课,就够喝上一壶的了。还有计算机组成原理,汇编语言等等。有很多时候,提起勇气想要去学习一下,可能会被这复杂的理论知识吓蒙,就算能坚持一段时间地学习,也会因为理论太枯燥没有相应地实践而放弃,对这个领域的知识望而却步。
因此,我决定从lua语言开始,核心代码只有一万多行,涉及编译的更少。当然关于虚拟机的指令已经垃圾回收的问题,现在还没有去看。主要是想对lua的词法分析和语法分析进行一个学习性地记录。由于lua是纯C语言写成的脚本语言,因此,学习lua源码要先会C的基础知识,同时看过一些编译原理前段的部分知识,即词法和语法分析。
lua是一个动态执行的脚本语言。在实际的运行过程中不会先生成编译文件再执行,而是边解释边执行,也就是说,一边读取程序文件,一边将源程序翻译成相应地指令交给虚拟机执行。lua解释的过程不会生成语法树,而是在语法分析的同时进行词法分析。今天第一篇先讲一下如何调试lua编译源码的。
下载lua源码,不需要编译,将src下的源码导入到visual studio.这个过程不会的可以去网上学习。
lua源码是纯C的,所以就当做程序直接运行。首先是找到lua.c, luac.c, 里面都有一个main函数,先把lua.c里面的main函数改成lua_main。这样全局只有一个main函数,就是在luac里面。
右击“解决方案”->属性->调试->命令参数, 输入luac的运行参数,本文示例:-l "F:\\lua\\lt1.lua"。其中 -l 代表luac 的打印中间码,第二个参数是自己的lua程序文件所在的路径,里面可以随便写一个lua语句。然后就是打断点一步步调试了。
done。
lua源码学习篇一:环境部署的更多相关文章
- lua源码学习篇三:赋值表达式解析的流程
上节说到表达式的解析问题,exprstate函数用于解析普通的赋值表达式.lua语言支持多变量赋值.本文先从单变量赋值表达式讲起. a = b = c = a + b 对于简单的两个数的求和过程,lu ...
- lua源码学习篇四:字节码指令
在llimits.h文件中定义了指令的类型.其实就是32个字节. typedef lu_int32 Instruction; 上节说到变量最终会存入proto的数组k中,返回的索引放在expdesc ...
- lua源码学习篇二:语法分析
一步步调试,在lparser.c文件中luaY_parser函数是语法分析的重点函数,词法分析也是在这个过程中调用的.在这个过程中,用到一些数据结构,下面会详细说. Proto *luaY_parse ...
- spring源码学习之路---环境搭建(一)
作者:zuoxiaolong8810(左潇龙),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可. 最近已经开始了spring源 ...
- JUnit 3.8.1 源码学习
JUnit 3.8.1 源码学习 环境搭建(源码加载配置) 由于IDE自身含有JUint插件,因此通过正常途径是没有源码加载入口的,因此需通过手动加载扩展JAR,然后再添加对应源码JAR,如图:项目右 ...
- Redis源码学习:Lua脚本
Redis源码学习:Lua脚本 1.Sublime Text配置 我是在Win7下,用Sublime Text + Cygwin开发的,配置方法请参考<Sublime Text 3下C/C++开 ...
- Hadoop源码学习笔记之NameNode启动场景流程一:源码环境搭建和项目模块及NameNode结构简单介绍
最近在跟着一个大佬学习Hadoop底层源码及架构等知识点,觉得有必要记录下来这个学习过程.想到了这个废弃已久的blog账号,决定重新开始更新. 主要分以下几步来进行源码学习: 一.搭建源码阅读环境二. ...
- Vue源码学习(一):调试环境搭建
最近开始学习Vue源码,第一步就是要把调试环境搭好,这个过程遇到小坑着实费了点功夫,在这里记下来 一.调试环境搭建过程 1.安装node.js,具体不展开 2.下载vue项目源码,git或svn等均可 ...
- 源码学习系列之SpringBoot自动配置(篇二)
源码学习系列之SpringBoot自动配置(篇二)之HttpEncodingAutoConfiguration 源码分析 继上一篇博客源码学习系列之SpringBoot自动配置(篇一)之后,本博客继续 ...
随机推荐
- 这样讲 SpringBoot 自动配置原理,你应该能明白了吧
https://juejin.im/post/5ce5effb6fb9a07f0b039a14 前言 小伙伴们是否想起曾经被 SSM 整合支配的恐惧?相信很多小伙伴都是有过这样的经历的,一大堆配置问题 ...
- windows挂载nfs
注意:Win10 Creators Update前只有Win10企业版可以挂载NFS, Creators Update后专业版也可挂载NFS了. 安装 按Win+R输入OptionalFeatures ...
- ui自动化之selenium操作(四)简单元素操作
1. clear() clear()方法用于清除文本输入框内的内容:一般输入框中都有默认文字,如果不清空有可能会导致字符拼接: browser.find_element(By.ID,"use ...
- idea 新手入门配置
1.配置新建类时,创建者信息 2.配置svn 1. 在idea中不显示无用的内容,配置如下 .hprof;.iml;.pyc;.pyo;.rbc;.yarb;~;.DS_Store;.git;.hg ...
- cve-2019-1609,Harbor任意管理员注册漏洞复现
一.Harbor介绍 以Docker为代表的容器技术的出现,改变了传统的交付方式.通过把业务及其依赖的环境打包进Docker镜像,解决了开发环境和生产环境的差异问题,提升了业务交付的效率.如何高效地管 ...
- win7抓带tag标记报文
1. 本地连接 ,右键→属性→高级→属性里选择“优先级和 VLAN” ,看右 边的 “值” 是不是已经启用, 没有启用的话就启用它. (如果没有这个选项, 那你可能要把网卡驱动升个高版本的了. ) ...
- UI控件Telerik UI for ASP.NET MVC全新发布R2 2019 SP1
Telerik UI for ASP.NET MVC拥有使用JavaScript和HTML5构建网站和移动应用所需的70+UI部件,来满足开发者的各种需求,提供无语伦比的开发性能和用户体验.它主要是针 ...
- java常用类与包装类--常用类正则表达式 String正则方法+Matcher+Pattern
0.java中的正则 java 中的正则总共涉及三个类(或者说1个String类和一个regex包) java.lang.String java.util. Matcher java.util.Pat ...
- ks代码助解
代码实现: data_test_2 = {'gd':[1,1,1,1,1,1,0,0,0,0,0,0,0],'score':[1,2,0,2,2,7,4,5,4,0,4,18,np.nan]} dat ...
- 【LuoguP5280】[ZJOI2019] 线段树
题目链接 题目描述 略 Sol 显然不能直接暴力模拟. 观察这个东西本质在干什么,就是某一次操作可能进行可能不进行,然后求所有情况下被标记节点总数. 这个显然可以转化为概率问题,每次有二分之一的概率进 ...