💡
原文中文,约5200字,阅读约需13分钟。
📝
内容提要
本文讲述了作者编写编译器的经历和思考,通过四个步骤实现了将lisp编译成js代码的编译器。作者强调了抽象的重要性。
🎯
关键要点
-
作者回顾了两年的编程经历,发现代码中有许多改进的地方。
-
作者通过项目实践和学习教程,开始关注编译原理,并决定编写一个将Lisp编译成JS的编译器。
-
编译器的目标是将Lisp代码转换为JavaScript代码。
-
编写编译器的过程分为四个步骤:词法分析、语法分析、AST转换和代码生成。
-
词法分析的目的是解析输入代码字符串中的有效单词并分类。
-
语法分析将词法分析得到的词组重新组合成树状结构,即AST。
-
AST转换将Lisp语言的AST树转换为JavaScript的AST树。
-
代码生成将JS AST生成相应的代码,过程相对简单。
-
作者总结编写编译器并不复杂,强调了递归的重要性和代码的简洁性。
-
抽象能力是程序员的重要技能,可以用少量代码实现强大功能,具备良好的扩展性和鲁棒性。
-
作者推荐了“计算机程序的构造与解释”这门课程,认为其对编程思维有帮助。
➡️