28|增加更丰富的类型第3步:支持数组
宫文学
你好,我是宫文学。
前面我们已经给我们的语言,增加了两种数据类型:浮点数和字符串。那么,今天这一节课,我们再继续增加一种典型的数据类型:数组。
数组也是计算机语言中最重要的基础类型之一。像 C、Java 和 JavaScript 等各种语言,都提供了对数组的原生支持。
数组跟我们之前已经实现过的 number、string 类型的数据类型相比,有明显的差异。所以在这里,你也能学到一些新的知识点,包括,如何对数组做类型处理、如何设计数组的内存布局,如何正确访问数组元素,等等。
在完成这节课的任务后,我们的语言将支持在数组中保存 number 和 string 类型的数据,甚至还可以支持多维数组。是不是感觉很强大呢?那就赶紧动手试一试吧!
那么这实现的第一步,我们需要修改编译器前端的代码,来支持与数组处理有关的语法。
修改编译器前端
在编译器前端,我们首先要增加与数组有关的语法规则。要增加哪些语法规则呢?我们来看看一个最常见的使用数组的例子中,都会涉及哪些语法特性。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文详细介绍了如何在编程语言中增加对数组类型的支持。作者首先讨论了在编译器前端进行的修改,包括对数组类型、数组字面量和下标表达式的语法规则的扩展,以及相应的AST节点对象的创建和语法解析程序的修改。此外,文章还提到了语义分析方面的增强,包括类型处理和左值分析等工作。在运行时的功能部分,文章详细介绍了PlayArray对象的设计和内置函数的实现,以支持基本的数组操作。最后,文章提到了修改编译器后端,以生成正确的汇编代码,从而编译成可执行文件。整体而言,本文深入浅出地介绍了如何在编程语言中增加对数组类型的支持,对于想要了解编程语言设计和实现的读者来说,具有很高的参考价值。文章内容涵盖了语法处理、内存布局设计和访问数组元素等关键知识点,为读者提供了全面的技术指导。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《手把手带你写一门编程语言》,新⼈⾸单¥59
《手把手带你写一门编程语言》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(3)
- 最新
- 精选
- 奋斗的蜗牛老师,改造后的数组语法好像还是左递归的
作者回复: 没错。不过,并不是所有的左递归文法都是难以处理的。有机会我会结合PEG给大家单独开一节。你有时间可以先了解一下PEG。
2021-10-191 - ifelse学习打卡2022-09-26归属地:浙江
- 奋斗的蜗牛这块的知识太赞了2021-10-21
收起评论