手把手教你构建C语言编译器.参考.0 -- 前言

  • 写在前面
  • 简介

写在前面

在此,十分感谢 三点水 的学习分享手把手教你构建 C 语言编译器:
https://lotabout.me/2015/write-a-C-interpreter-0/

我的这个参考,绝大部分都是参照这个系列而来,只是对原版本的一个扩充和纠正而已。修改之处为:

(1) 对系列中比较重要的地方进行详细的讲解;

(2) 修改原工程代码中的一些bug,每个章节最后都会提供代码链接,直接拷贝即可运行与调试;

(3) 最重要的是,更改工程代码中的数据结构与逻辑。使用C++语言编写,使得调试方便很多,代码逻辑也通俗易懂;

(4) 更改每个章节讲解的内容的划分,循序渐进,更利于理解与学习。

简介

我是个技术小白。

之前有一段时间使用过Lua,当然也只是拿来主义,简单的看了看语法,不求甚解,只求完成工作。所以对其内部的原理一直是一知半解的。

然后觉得有必要看一下Lua源码,哪里知道区区两万行的源码,简直就是味同嚼蜡。。。我的导师建议我先看别人的学习分享与总结,然后再深入代码。

然后又得到大神推荐的这个“手把手教你构建C语言编译器”系列,如获珍宝。

整个系列内容不是很多,但是光一步一步敲代码,调试,更改数据结构,最后跑通整个工程,却足足花了我十来天时间。因为真的是干货满满,获益匪浅。

原技术分享美中不足的是:

代码过于精简,导致很多时候会越看越糊涂(enum和int 混用,每次处理一个int,根本就不能直接知道其代表的数字还是Enum变量);

再者该系列的作者为了项目能够自举,都是使用了简单的指针,导致调试起来非常困难,本来是一个int 类型数组,结果只给一个int * 指针,不能观察整个数组的变化,这让人很蛋疼。

所以,有了我这个参考系列。

这个参考系列,将会有10个章节,来一步一步详解原作者的技术分享,当然,顺便我也记录一下自己的学习经历。

手把手教你构建 C 语言编译器.参考.0 -- 前言相关推荐

  1. 手把手教你构建 C 语言编译器(8)- 表达式

    这是整个编译器的最后一部分,解析表达式.什么是表达式?表达式是将各种语言要素的一个组合,用来求值.例如:函数调用.变量赋值.运算符运算等等. 表达式的解析难点有二:一是运算符的优先级问题,二是如何将表 ...

  2. 手把手教你构建 C 语言编译器(4)- 递归下降

    本章我们将讲解递归下降的方法,并用它完成一个基本的四则运算的语法分析器. 手把手教你构建 C 语言编译器系列共有10个部分: 手把手教你构建 C 语言编译器(0)--前言 手把手教你构建 C 语言编译 ...

  3. 手把手教你构建 C 语言编译器(3)- 词法分析器

    本章我们要讲解如何构建词法分析器. 手把手教你构建 C 语言编译器系列共有10个部分: 手把手教你构建 C 语言编译器(0)--前言 手把手教你构建 C 语言编译器(1)--设计 手把手教你构建 C ...

  4. alpha因子常见问题_手把手教你构建量化因子分析体系

    原标题:手把手教你构建量化因子分析体系 挖掘Alpha因子.评价Alpha因子.改进Alpha因子是量化投资者职业生涯永恒的奋斗目标,而一套严密有效的因子分析体系是这一切的基石."不以规矩, ...

  5. 独家 | 手把手教你学习R语言(附资源链接)

    作者:NSS 翻译:杨金鸿 术语校对:韩海畴 全文校对:林亦霖 本文约3000字,建议阅读7分钟. 本文为带大家了解R语言以及分段式的步骤教程! 人们学习R语言时普遍存在缺乏系统学习方法的问题.学习者 ...

  6. 超级干货 :手把手教你学习R语言(附资源链接)

    作者:NSS:翻译:杨金鸿:校对:韩海畴,林亦霖: 本文约3000字,建议阅读7分钟. 本文为带大家了解R语言以及分段式的步骤教程! 人们学习R语言时普遍存在缺乏系统学习方法的问题.学习者不知道从哪开 ...

  7. 手把手教你学习R语言

    本文为带大家了解R语言以及分段式的步骤教程! 人们学习R语言时普遍存在缺乏系统学习方法的问题.学习者不知道从哪开始,如何进行,选择什么学习资源.虽然网络上有许多不错的免费学习资源,然而它们多过了头,反 ...

  8. 6个关键步骤,手把手教你构建图模型

    导读:图模型作为当前流行的信息处理加工技术,自提出以来,迅速在学术界和工业界得到了普及,在智能推荐.决策分析等方面有着广泛的应用. 作者:华为公司数据管理部 来源:大数据DT(ID:hzdashuju ...

  9. 实战案例,手把手教你构建电商用户画像 | 附代码

    导读:本文以真实案例,手把手教你搭建电商系统的用户画像. 先来看该电商用户画像用到的标签. 数据内容包括user_id(用户身份).item_id(商品).IDbehavior_type(用户行为类型 ...

最新文章

  1. HDU 2830 Matrix Swapping II
  2. oracle如何升序,oracle排序操作
  3. GNU C之__attribute__
  4. c语言鼠标下棋,c语言写的鼠标操作的五子棋游戏,欢迎观赏!
  5. 很好的大数据名词解释,收藏
  6. Django01-1: request 方法
  7. wsl2 Ubuntu 18.04 安装 ROS
  8. 选课_ctsc1997_ssl1606_树形dp
  9. Mongodb For Mac OSX 登录验证
  10. python读取sas数据集_利用Python获取SAS和R自带数据集
  11. 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用) ...ubuntu 18.04 安装vim遇到的错误...
  12. maskrcnn配置 模块‘keras.engine‘没有属性“Layer”
  13. 自适应Simpson法P4525 【模板】自适应辛普森法1
  14. 服务器安装linux后一直停留在光标,Ubuntu14更新后无法进入系统卡在光标界面解怎么办?...
  15. 企业微信号自定义菜单
  16. 浅谈大数据专业的就业前景
  17. 升级 glibc 到2.18版本
  18. java实现在pdf中添加文字和图片
  19. 加入美团2021届北斗计划,用科技定义未来生活
  20. m73p黑苹果_M93P一次性拔草小主机,黑苹果,软路由。

热门文章

  1. Angular14 Visual Studio Code作为Angular开发工具常用插件安装、json-server安装与使用、angular/cli安装失败问题、emmet安装...
  2. Yolov5将pt权重转为coreml
  3. ThinkPHP5.0+Queue消息队列
  4. 小米note2不上Android9吗,小米note2和华为g9哪个好?小米note2和华为G9青春版详细区别对比评测...
  5. windows防火墙是干什么的_windows的防火墙
  6. idea git commit之后,想撤销commit
  7. 原生_H5交互插件(适用于与V2.1)
  8. ant-design 引入样式及配置 babel-plugin-import 按需加载
  9. SSL_ERROR_BAD_CERT_DOMAIN 部署 ssl证书后仍显示潜在风险
  10. SAP中通过控制工序中的与成本核算相关来控制成本核算时工时取值