光有核心代码和一个虚拟机还无法让Lua程序运行起来。因为必须从外部输入运行的Lua程序运行起来。Lua的程序的人读形式是一种程序文体,需要经过解析得到内部数据结构(常量和opcode的集合)。这个过程是通过parser:lparser.c()及词法分析llex.c(luaX为前缀的API)
        解析完文体代码,还需要最终生成虚拟机理解的数据,这个步骤在locde.c中实现,其API以luaK为前缀。

        为了满足某些需求,加快代码翻译的流程。还可以采用预编译的过程。把运行是编译的结果,生成为字节码。这个过程及逆过程由ldump.c  和lundump.c实现。其API以luaU为前缀。

        Lua在早期几乎都是被用来嵌入其它系统中使用,所以源代码通常被编译成动态库或者静态库被宿主系统加载链接。但,随着Lua的第三方库越来越丰富。人们开始倾向于把Lua作为一门独门语言来使用。Lua官方版本也提供了一个简单的独立解析器,便是lua.c所实现的这个。并有luac.c实现了一个简单的独立编译器,可以预编译文本的Lua源代码。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐