当前位置: 首页 > news >正文

设计logo网站免费下载wordpress 访问控制

设计logo网站免费下载,wordpress 访问控制,建筑图片,如何做家具网站前言 本篇在讲什么 Lua的词法分析 本篇需要什么 对Lua语法有简单认知 对C语法有简单认知 依赖Visual Studio工具 本篇的特色 具有全流程的图文教学 重实践,轻理论,快速上手 提供全流程的源码内容 ★提高阅读体验★ 👉 ♠ 一级标题…
前言
本篇在讲什么

Lua的词法分析
本篇需要什么

Lua语法有简单认知
C++语法有简单认知
依赖Visual Studio工具

本篇的特色

具有全流程的图文教学
重实践,轻理论,快速上手
提供全流程的源码内容


★提高阅读体验★

👉 ♠ 一级标题 👈

👉 ♥ 二级标题 👈

👉 ♣ 三级标题 👈

👉 ♦ 四级标题 👈

目录

  • ♠ 前言
  • ♠ luaL_dofile
  • ♠ 保留字
  • ♠ token
  • ♠ 关键函数
  • ♠ 实例详解
  • ♠ 推送
  • ♠ 结语


♠ 前言


♠ luaL_dofile

在C++中我们通过luaL_dofile宏来加载一个lua文件,如下述代码所示

int main()
{lua_State* L = luaL_newstate();luaL_openlibs(L);luaL_dofile(L, "lua_src/test.lua");lua_close(L);
}

其实际上执行了两个函数,分别是luaL_loadfilelua_pcall,二者包括宏均定义在lauxlib.h脚本内

在这里插入图片描述

本篇重点去认识和了解luaL_loadfile函数,在该函数内去对一个Lua文件进行词法分析


♠ 保留字

我们先了解一下Lua的一些保留字,其定义在llex.h脚本当中,每一个保留字都对应了Lua中某个关键字或类型,比如TK_AND代指的就是and关键字

在这里插入图片描述

保留字定义为int类型,从257开始,以此递增,原因是Lua识别字符的时候通过Ascii码来标记,防止二者有冲突

在这里插入图片描述


♠ token

我们先了解一下什么是token,其代指的保留字相关的枚举类型,每一个都是一个token类型

Lua在做词法分析的时候会根据不同的token类型去执行不同的方法,词法分析的过程可以理解成对每一个token分析的过程

在这里插入图片描述

举个例子,我们在脚本test.lua中定义了一句Lua代码,如下图所示,其解析过程如下:

1、local ——> TK_LOCAL(268)
2、空格 ——> 32(空格ascii码)
3、num ——> TK_NAME(285)(自定义变量)
4、空格 ——> 32(空格ascii码)
5、等号 ——> 61(=的ascii码)
6、空格 ——> 32(空格ascii码)
7、1 ——> TK_NUMBER(数字1,ascill码61)

在这里插入图片描述


♠ 关键函数

我们了解一下个词法分析相关的重要函数和作用

  • luaL_loadfile

解析Lua脚本,获取脚本内的二进制或字节流

  • luaY_parser

词法分析的核心函数

  • luaX_next

解析字节流中的下一个token块

  • chunk

解析token的函数

简单的概括下对一段Lua代码进行词法分析都经历了哪些步骤

在这里插入图片描述


♠ 实例详解

我们直接通过断点调试和堆栈信息查看,来看看解析一段Lua代码的过程,这里直接从luaY_parser函数开始,Lua代码如下所示

local num = 1

1、运行代码后第一个断点卡在了chunk函数,我们可以通过堆栈信息看到&lexstate中获取的第一个token是268,对应的正是Lua中的local

在这里插入图片描述
在这里插入图片描述

2、第二个断点我们打在了statement函数里,可以看到因为获取的token是TK_LOCAL所以执行到了对应的case里面

在这里插入图片描述

3、第三个断点我们打在了luaX_next函数里,从堆栈中看到新获取的token是285,对应的是TK_NAME,因为lua中的num是我们自定义的变量

在这里插入图片描述
在这里插入图片描述

4、放开断点继续执行,依然卡到了luaX_next里面,这里可一看获取到的token是61,对应的就是=的ascii码

在这里插入图片描述

5、放开断点继续执行,依然卡到了luaX_next里面,这里可一看获取到的token是284,对应的类型是TK_NUMBER,因为我们在Lua中给变量num赋值是数字1,

在这里插入图片描述

6、继续执行,获取的最后一个token是287,对应的类型是TK_EOS,该token类型代表着解析结束

在这里插入图片描述

至此,我们对该Lua代码的词法解析就全部结束了


♠ 推送

  • Github
https://github.com/KingSun5

♠ 结语

若是觉得博主的文章写的不错,不妨关注一下博主,点赞一下博文,另博主能力有限,若文中有出现什么错误的地方,欢迎各位评论指摘。

👉 本文属于原创文章,转载请评论留言,并在转载文章头部著名作者出处👈
http://www.yayakq.cn/news/241419/

相关文章:

  • 小企业网络营销外包黄冈网站推广优化技巧
  • 网站的产品图片怎样做清晰嘉鱼网站建设多少钱
  • 网站备案流程详细免费1级做爰片在线观看 历史网站
  • 如何批量做网站深圳小程序网站开发
  • 上海专业做网站排名信息流优化师招聘
  • asp国外网站网店运营报告
  • 平顶山做网站多少钱为什么只有中国做网站需要备案
  • 制作网站公司 英语网站首页什么是商务网站
  • 合肥网站建设 八八四八提供虚拟主机服务的网站
  • 洛阳市住房和城乡建设局网站seo的优化技巧有哪些
  • 中企建设网站成都手机网站设计
  • 衣服网站设计珠海网站建设哪家专业
  • 深圳网站建设黄浦网络 骗钱无极网站维护
  • 对于学校网站建设的建议如何申请百度竞价排名
  • 做淘宝需要知道什么网站在货源网站自己拿样 加盟 做代理 哪个比较好?
  • 网站用品推广网页泰安软件公司 泰安网站建设
  • 原平的旅游网站怎么做的德州哪里有做网站推广的
  • asp个人网站源码下载唐山哪里做网站
  • 网站建立明细预计表怎样注册代理记账公司
  • 高端企业网站建设好的公司网站seo的主要优化内容
  • 毕业设计做网站 服务器怎么弄网页链接打不开怎么办
  • 南昌网站建设博客电脑 手机 微信网站开发
  • 车商城网站建设网站设计做什么
  • 淄博网站制作设计定制快速网站排名优化
  • 安徽合肥做网站怎么把现有网站开发php
  • 以学校为目标做网站策划书海鲜网站开发目的在于
  • 赣州那里有做网站的公司自己做的小网站如何发布
  • 网站绑定公众号长沙正规官网建站
  • 国外免费服务器提供广州优化公司哪家好
  • 企业网站 手机站六安网站制作人才招聘