手把手带你写一门编程语言
宫文学
北京原点代码 CEO
7235 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 49 讲
起步篇:让一门超简单的语言跑起来 (21讲)
结束语 (1讲)
手把手带你写一门编程语言
15
15
1.0x
00:00/00:00
登录|注册

28|增加更丰富的类型第3步:支持数组

你好,我是宫文学。
前面我们已经给我们的语言,增加了两种数据类型:浮点数和字符串。那么,今天这一节课,我们再继续增加一种典型的数据类型:数组。
数组也是计算机语言中最重要的基础类型之一。像 C、Java 和 JavaScript 等各种语言,都提供了对数组的原生支持。
数组跟我们之前已经实现过的 number、string 类型的数据类型相比,有明显的差异。所以在这里,你也能学到一些新的知识点,包括,如何对数组做类型处理、如何设计数组的内存布局,如何正确访问数组元素,等等。
在完成这节课的任务后,我们的语言将支持在数组中保存 number 和 string 类型的数据,甚至还可以支持多维数组。是不是感觉很强大呢?那就赶紧动手试一试吧!
那么这实现的第一步,我们需要修改编译器前端的代码,来支持与数组处理有关的语法。

修改编译器前端

在编译器前端,我们首先要增加与数组有关的语法规则。要增加哪些语法规则呢?我们来看看一个最常见的使用数组的例子中,都会涉及哪些语法特性。
let names:string[] = ["richard", "sam", "john"];
let ages:number[] = [8, 18, 28];
let a2:number[][] = [[1,2,3],[4,5]];
for (let i = 0; i< names.length; i++){
println(names[i]);
}
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《手把手带你写一门编程语言》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(3)

  • 最新
  • 精选
  • 奋斗的蜗牛
    老师,改造后的数组语法好像还是左递归的

    作者回复: 没错。不过,并不是所有的左递归文法都是难以处理的。有机会我会结合PEG给大家单独开一节。你有时间可以先了解一下PEG。

    1
  • ifelse
    学习打卡
    归属地:浙江
  • 奋斗的蜗牛
    这块的知识太赞了
收起评论
显示
设置
留言
3
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部