29|面向对象编程第1步:先把基础搭好
宫文学
你好,我是宫文学。
到目前为止,我们的语言已经简单支持了 number 类型、string 类型和数组。现在,我们终于要来实现期待已久的面向对象功能了。
在我们的课程中,为了实现编译器的功能,我们使用了大量自定义的类。最典型的就是各种 AST 节点,它们都有共同的基类,然后各自又有自己属性或方法。这就是 TypeScript 面向对象特性最直观的体现。
面向对象特性是一个比较大的体系,涉及了很多知识点。我们会花两节课的时间,实现其中最关键的那些技术点,比如声明自定义类、创建对象、访问对象的属性和方法,以及对象的继承和多态,等等,让你理解面向对象的基础原理。
首先,我们仍然从编译器的前端部分改起,让它支持面向对象特性的语法和语义处理工作。
修改编译器前端
首先是对语法的增强。我们还是先来看一个例子,通过这个例子看看,我们到底需要增加哪些语法特性:
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文介绍了如何在编译器中实现面向对象功能,包括对语法的增强、类的声明、构造方法的调用、this关键字的使用以及对象属性和方法的访问。文章还讨论了语义分析的工作,包括类型消解和类型检查。此外,文章还介绍了如何升级AST解释器以支持面向对象特性,包括创建对象、保存对象数据、访问对象属性和执行对象方法。在内存布局方面,文章提到了对象的设计和内置函数的实现。此外,还讨论了修改编译器后端的重点,包括访问对象的属性和调用对象的方法。总结来说,本文深入浅出地介绍了编译器中实现面向对象功能的关键步骤,适合对面向对象编程感兴趣的读者阅读。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《手把手带你写一门编程语言》,新⼈⾸单¥59
《手把手带你写一门编程语言》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(3)
- 最新
- 精选
- ifelse学习打卡2022-09-27归属地:浙江
- jack123TypeScript一切皆对象,所以它内置有这些方法的实现2021-11-13
- 奋斗的蜗牛太赞了,面向对象的实现真是不简单2021-10-24
收起评论