Skip to content

PoEdu/DarkArtsNexus

Repository files navigation

关于本书

编程语言与编译器作为程序员日常工作的基础工具,很多人都对其产生了浓厚的兴趣。本书将从零开始,带领大家一步一步实现两个简单的编程语言。所谓学以致用,本书会用具体的实例来为大家讲授编译原理中各个章节的实际用途,并串联起相关的数据结构,算法等理论知识。希望能够帮助大家理解编译器的工作原理。

  • 本书是永久免费,对新手友好的编译领域入门教材,各种需要的前置知识都有说明和相关教程,帮助您快速达到学习门槛。
  • 全书采用交互式学习方法,各种示例不但有解释说明,还有在线的运行环境,可以让你修改并实时运行,加深对边缘情况的理解。
  • 本书的所有实验代码都是开源的,你可以从任意阶段的代码开始,修改并运行,完成实验的对应部分。
  • 鼓励大家相互提问并讨论,优秀的问题和回答会定期更新在本书中,以便更多的人能够受益。
  • 本书是完全开源的,如有错漏,或者您有修改的建议,欢迎提交PR,Issue向我们反馈。
  • MiniLua项目是第一个推荐的实验,实现了一款类似Lua的脚本语言,可以作为你学习开发脚本语言的入门项目。
  • MiniC项目是编译器相关的实验,实现了一款类C语言的编译器,并使用LLVM作为后端,可以方便你了解如何开发现代编译器。
  • MiniFlexBison是一个代码生成工具的实验,实现了类似Flex/Bison的代码生成工具,可以帮你理解词法分析器和语法分析器的底层工作原理。

如果您觉得本项目有帮到您,请点个 Star ⭐ 支持一下,或者帮忙推广给正在学习编译原理的朋友,谢谢!

贡献

您有以下几种方法参与到本项目中来:

  1. 直接提交PR,修正本书中的语句错漏,或者描述不清楚的地方
  2. 提交Issue,对本书中逻辑错误或表述有误的地方进行指正,在我们确认后会进行修改,或者联系您提交PR进行修改
  3. 提交Issue,并标注new标签,表示您希望添加新的内容,如果您已经有初稿内容,可以同时提交PR
  4. 增加实验内容,您可以参考本书中的实验内容,或者自行设计实验内容,如果您希望将新的实验内容加入本书中,请提交Issue后,联系我们进行讨论
  5. 编写前端控件,用来阐述某个算法的工作原理,可视化工作流程,您可以提交Issue后跟我们讨论添加。

本书不设立任何门槛,欢迎任何人参与到本书的编写中来,我们会将所有的贡献者列在本书的贡献者名单中,感谢您的贡献!

构建本书的方法:

  1. Clone本项目到本地
  2. 安装yarn并执行 yarn install 来安装依赖
  3. 执行 yarn build 来构建本书
  4. 执行 yarn dev 可以启动一个本地开发服务器,支持热重载,可以方便实时修改

加入我们

本书的编辑团队是一个松散的组织,我们利用业余时间编写一些教学实验,方便其他人学习编程知识,工作没有时间地点限制也没有任何回报,完全是用爱发电。如果您完成了对本书的致少三次贡献,则可以申请成为一名本书的编辑,成为编辑后,您可以拥有直接编辑本书的权限,无需提交PR,并拥有审核其他人编写内容的权限。如果您希望成为本书的编辑,请联系我们,发送邮件到sunxfancy@gmail.com,标题注明“PoEdu编辑申请——XXX”,后接您的姓名。