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

【编译原理】看书笔记

参考书籍:《编译系统透视_图解编译原理》

1. 词法及语法分析

1.1 如何理解上下文无关法?

编译器用生成式来对代码进行词法解析,只需要使用生成式约定的规则,就可以从一串文本中,确定一个符合语法的语句,不需要这条语句前面的内容(即上文),和下面的内容来确定(即下文)。这样公式化的解析方式,实现起来很简单,有利于编译器的设计和实现。

《编译系统透视_图解编译原理》书中的状态转移图相对于生成式更好理解,建议采用书中的状态转移图去画生成式。

生成式在我们前面的文章中有讲解过。简单来说,一条语句的生成式就是:

语句 = 起始符 + 中间内容 + 结束符。其中,中间内容又可以包含其他语句,形成嵌套结构。

根据以上思路去编写代码,只需要:

  1. 先根据起始符号,判断语句可能是哪种类型,这一步缩小了判断的范围,便于后续的解析;
  2. 再持续向下解析,进一步判断语句的类型以及获取语句的成分,内容;
  3. 最后判断解析结束符,明确语句的边界,完成语句解析。

有些教材大篇幅讲BNF,看得头疼。亲自写一写能更好地理解。


http://www.kler.cn/news/308642.html

相关文章:

  • keep-alive缓存不了iframe
  • 快速开发与维护:探索 AndroidAnnotations
  • Edegex Foundry docker和源码安装
  • uniapp与webview进行数据通信
  • 每个电脑都有ip地址吗?不同电脑ip地址一样吗
  • 爬虫代理失效怎么处理?全面解决方案
  • 【智路】智路OS 设备接入开发
  • 力扣122.-买卖股票的最佳时机 II(Java详细题解)
  • Python数据分析 Pandas基本操作
  • .NET 6.0 + WPF 使用 Prism 框架实现导航
  • Linux下编译Kratos
  • 如何动态获取路由上的参数
  • 最短路径算法
  • 详解QT元对象系统用法
  • webpack原理简述
  • java实现真值表代码(不完善)恳求大佬指导
  • 利用AI驱动智能BI数据可视化-深度评测Amazon Quicksight(三)
  • 使用 Visual Studio Code 配置 C++ 开发环境的详细指南
  • sqlx1.3.4版本的问题
  • 【MySQL】Windows下重启MySQL服务时,报错:服务名无效
  • 语言模型与人类反馈的深度融合:Chain of Hindsight技术
  • 主流日志框架Logback与Log4j2
  • 【TS】TypeScript配置详解【三】
  • HarmonyOS axios 拦截器处理token 及异常
  • js的书写位置和css的书写位置的区别?为什么要这样写?
  • dedecms(四种webshell姿势)
  • 微服务之间远程调用实现思路
  • pdf文件转图片,base64或保存到本地
  • django 通过地址访问本地文件
  • Java原生HttpURLConnection实现Get、Post、Put和Delete请求完整工具类分享