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

从0开始自制解释器——综述

作为一个程序员,自制自己的编译器一直是一个梦想。之前也曾为了这个梦想学习过类似龙书、虎书这种大部头的书,但是光看理论总有一些云里雾里的感觉。看完只觉得脑袋昏昏沉沉并没有觉得有多少长进。当初看过《疯狂的程序员》这本书,书里说,真正能学会编译原理并不是靠看各种书然后通过相关考试,而是有一天你的领导找到你对你说:“小X啊,你是我们公司技术能力最强的人,咱们现在用的编译器性能有点跟不上,要不你看看能不能改进一下”。所以想要学习编译原理相关的知识首先要做的还是实践——实现一个自己的编译器。

之前也看过类似的教你如何自制编译器,但是他们有一个共同的问题就是在很大程度上都借助第三方工具,隐藏了一些底层的细节。我希望的是每一行代码都是自己的完成的。所以一直怀揣着这个梦想直到最近我找到了一篇教程。一起写一个简单的编译器——魔力Python。这篇教程是实用Python完成的,但是这里我不打算使用Python,我打算实用最纯粹的C 语言来完成这个任务,我考虑使用C主要基于以下几个原因:

  1. Python 有一些封装的细节,不方便全方位的展示相关算法。
  2. 原教程使用的就是Python,还用一样的话思路会受到教程的影响,要真正的理解需要自己一行行的敲代码,最好的方式就是用另一种语言来实现同样的算法
  3. 现在市面上大多数都是用c来实现编译器,如果后续想要更近一步学习编译原理可以考虑在我完成的这版中很方便的加入一些新学的知识点
  4. 自己有使用C的能力,而且用C写编译器自带装B属性

基于以上理由,我准备开始跟着教程使用C来实现自己的解释器。

这并不是一篇教程什么的,更多的是作为一篇实践笔记。而且根据我之前写的Vim专栏的经验来说,将它已专栏的形式发布出来之后鸽的可能性更小,更有动力来完成它。当然如果各位能从专栏中学到什么那就更好了。

总之后面让我们一起进入学习编译原理的路程吧

http://www.lryc.cn/news/27911.html

相关文章:

  • 【spring】spring5特性
  • 曹云金回归、于谦电影杀青,德云社想不火都难
  • 从入门到精通:数据库设计规范指南
  • js 求解《初级算法》8.字符串转换整数(atoi)
  • Vue学习笔记(5)
  • LeetCode 面试题 05.02. Binary Number to String LCCI【字符串,数学】中等
  • 数据结构 “串“ 的补充提升与KMP算法及其优化的具体实现
  • 如何使用Spring Cloud搭建MQ(Message Queue)消息队列
  • iphone备忘录删除怎么恢复?分享苹果数据找回办法
  • 【PPT】《我去!还有这种网站?》-知识点目录
  • SQL 将查询结果插入到另一张表中
  • 代码随想录算法训练营day48 | 动态规划 121 买卖股票的最佳时机 122 买卖股票的最佳时机II
  • MediaTek 天玑 8000 5G移动平台详细参数
  • Kafka
  • 数据结构——第三章 栈与队列(2)
  • 【Linux学习】基础IO——理解缓冲区 | 理解文件系统
  • RHCSA-重置root密码(3.3)
  • 无公网IP快解析实现U+随时随地访问
  • UVa 307 Sticks 木棍拼接 ID 迭代加深搜
  • 阿里云(CentOS)中MySQL8忘记密码的解决方法
  • 三、Spring的入门程序
  • 摘录一下Python列表和元组的学习笔记
  • 【量化金融】收益率、对数收益率、年华收益、波动率、夏普比率、索提诺比率、阿尔法和贝塔、最大回撤
  • 1_机器学习概述—全流程
  • VUE中给对象添加新属性时,界面不刷新怎么办
  • 视频号频出10w+,近期爆红的账号有哪些?
  • 企业寄件现代化管理教程
  • django 在网页显示后台进度
  • 机器学习库(Numpy, Scikit-learn)
  • Linux操作系统学习(进程替换)