不要上来就妄想通读龙书或者其它大部头著作。先从简单开始。

理论基础的学习建议看视频学习。本人是在哔哩哔哩上,看哈工大美女老师的课程学的。

非要看龙书,从第二版第2章,"一个简单的语法制导翻译器"开始。不要看后面其它章节。反复读,反复思考。最好自己写点代码实践一下,把基础夯实。这一章学完,对编译器就有谱了。其它章节可以视为某个细分领域或阶段的深入。第2章学懂了,看其它章节就没有"虚浮"的感觉。

如果自己对写代码没有思路,或者想参考一下别人的成果,不要上来就干LLVM、GCC。几百万行代码,伤不起。建议参考一个相对简单的C编译器——ucc编译器。这个编译器,一万多行代码就搞定了,能完成自举,还有一次为基础的教材。简直是学习利器,值得强力安利。

自制编译器正式命名为qcc。

最近花时间学习了龙书的词法分析,用自制编译器支持的类python语言实现了一个DFA,用于匹配正则表达式。这是自动词法分析的基础。搞完之后词法分析算是通透了。

目前正在学习语法分析。已经看到自顶向下的语法分析。计划依此理论实现一个自动语法分析器。后面还有自底向上的语法分析没看。

ucc链接:GitHub - sheisc/ucc162.3: A lightweight open-source C compiler for research and education.

内含pdf教材。

我本人正在学习和编(抄)写的一个编译器:p4c-pc: P4语言编译器

目前还处于初级阶段。编写过程记录在我的另一个帖子里:https://mp.csdn.net/mp_blog/creation/editor/130257671

编译器学习方法与路线相关推荐

  1. Java入门的学习方法及路线

    两个方面来讲 关于学习方法方面 关于学习的教程方面 学习方法 1 "温故知新,三省吾身" 虽然古人云,书读百遍其义自见,但不断重复的阅读书籍,敲出一样的「Hello World」, ...

  2. C++以及java学习方法和路线

    之前因为写了一篇博客如何学习C++,讲解的不够全面,今天这篇主要是对上一篇的补充,学习C++的路线和方法,当然,也包括java; 在正式内容开始之前,我想谈谈我对学习的看法和建议,学习编程语言是从0到 ...

  3. 结合大学四年经验,带你揭秘高效自学Java的方法和路线(从认识、方法、反馈3个角度出发)

    首发公众号:bigsai 收藏不是真支持,点赞.关注三连才是真支持! 前言 大家好,我是bigsai 好久不见,甚是想念,文章同时收录在回车课堂.本文就自学Java的n个问题和n个方法做出一些建议,并 ...

  4. 陈天奇:深度学习编译技术的现状和未来

    https://www.toutiao.com/a6690418726631637512/ 2019-05-13 16:03:04 传统的深度学习框架采用人工优化算子,然后建立运行时图解释器来解决内存 ...

  5. 零基础可以学python吗-零基础可以学会python吗?python好学吗?

    一.编程零基础可以学会python吗? 首先我要说Python是一种解释型语言:这意味着开发过程中没有了编译这个环节.类似于PHP和Perl语言. Python是交互式语言:这意味着,您可以在一个Py ...

  6. python3爬虫入门教程-Python3爬虫学习入门教程

    本文实例讲述了Python3爬虫相关入门知识.分享给大家供大家参考,具体如下: 在网上看到大多数爬虫教程都是Python2的,但Python3才是未来的趋势,许多初学者看了Python2的教程学Pyt ...

  7. 【杂谈】有三AI-CV春季划有用吗,听听他们的分享

    有三AI-CV春季划是言有三亲自带领的供0基础初学者学习深度学习和计算机视觉的学习计划,目前已经接近尾声,在端午节后就正式结束,假后第二天我们将推出删减版,由新的老师带领,有三本人不再负责. 关于春季 ...

  8. 5个让前端代码变得简洁的最佳实践

    「每天一点小知识,天天学习好孩子」 欢迎来到学习章节:5个让前端代码变得简洁的最佳实践 "即使错误的代码也可以起作用.但是,如果代码不干净,则会使开发组织屈服." -罗伯特·马丁( ...

  9. python自学行吗-零基础可以学会python吗?python好学吗?

    一.编程零基础可以学会python吗? 首先我要说Python是一种解释型语言:这意味着开发过程中没有了编译这个环节.类似于PHP和Perl语言. Python是交互式语言:这意味着,您可以在一个Py ...

最新文章

  1. 20180829-Java多线程编程
  2. matlab norm 范式
  3. 两个多选框(select)之间值的左右上下移动
  4. Android内存泄露总结
  5. Yii 1.1.4发布,高性能的PHP框架
  6. mysql log位置_MySql: log 位置
  7. 深入React事件系统(React点击空白部分隐藏弹出层;React阻止事件冒泡失效)
  8. 字符串矩阵转换成长字符串_字符串矩阵
  9. 百度、阿里等大厂面试技巧总结,Java工程师必看!
  10. java判断 图片_java判断是否为图片的步骤和方法
  11. h.264并行解码算法分析
  12. 搞科研身体才是革命的本钱。
  13. 计算机专业文献阅读报告,文献阅读报告范本.doc
  14. 串口通信简介——发展历史与基本概念
  15. java实现word转pdf(功能转载)(亲测验证)
  16. 微服务的优缺点_支付宝上的好医保长期医疗险这款保险到底怎么样?保障全面吗?有哪些优缺点?值得买吗?...
  17. node判断文件是否为加密文件
  18. 软件系统产品信息安全功能点要求
  19. 攻防世界 misc 高手区 Miscellaneous-300
  20. 404服务器错误的讲解

热门文章

  1. 如何用Matlab求线性方程组的通解
  2. 搭建minecraft服务器,用于python学习
  3. 什么是国际期货主账户?如何操作?
  4. 苹果系统又更新了,iOS13.1.3修复了哪些Bug?为啥对系统频繁修复
  5. vb资源下载 长期有效
  6. 机器人植入情感芯片利与弊_专家警告:机器人应该植入芯片以防谋杀人类
  7. html如何实现过渡效果,前端如何实现动画过渡效果
  8. 1-2Python创始人
  9. 国瀚实业|理财规划中如何认清自我风险承受能力
  10. 福布斯:区块链可能改善房地产市场的五种方式