自己动手发明编程语言
❯
教程介绍📘
❯
在线体验编译器🚀
❯
为什么要发明一个新的编程语言?☕
❯
开始🔛
❯
开发编译器的流程 🚀
❯
基础理论和原理 ⚛️
❯
计算机指令基础 (CPU)🖥️
❯
自定义虚拟机指令(VM) 🕹️
❯
C语言崩溃栈信息🐞
❯
设计强化虚拟机指令(VM) 🕹️
❯
手搓编写词法分析(Lexer)📜
❯
手搓表达式编译 🔥
❯
手搓 if-else 语法编译 ⚙️🔗
❯
手搓 for 语法编译 ⚙️🔗
❯
手搓 while 语法编译 ⚙️🔗
❯
手搓 函数调用 语法编译 ⚙️🔗
❯
虚拟机高性能优化 🚀
❯
try catch异常捕获简单实现🐞
❯
手搓即时编译(JIT)入门 ⚡️
❯
包管理器开发入门 📦📦
❯
开发故事
# 开发编译器的流程 🚀 通常分为下面几个步骤: ### 1. 需求分析与设计,设计语法,运行平台和方式 ### 2. 词法分析 ,把源代码(Text)转成一系列的词(Token) ### 3. 语法分析,把一系列 Token 转化为 抽象语法树(AST) ### 4. 语义分析,检查变量、函数、逻辑、表达式等语法规则 ### 5. 生成中间代码 IR 也就是 Intermediate Representation ,为方便后续的优化提供基础 ### 6. 代码优化,常量折叠(5*5 可以直接优化为 25 )等优化方法 ### 7. 生成目标代码,汇编、虚拟机指令、机器指令等 ### 8. 链接运行,通过汇编器或虚拟机,或其他基础工具链接运行可执行文件 以上步骤在很多编译器开发中经常会被简化,现实中有很多一遍扫描(one pass)的编译器。一些古典的编译器甚至通过一遍扫描源代码就直接输出机器指令完成编译。 在本教程里,也是用简化的开发流程。基本可以认为是一遍扫码完成的编译。以下几个流程: ### 1. 需求分析,设计语法 ### 2. 词法分析,把源代码转成了 Token 字符串组。 ### 3. 语义分析,把 Token 字符串组按语法进行不同的处理。 ### 4. 生成目标代码,直接生成自定义的虚拟机指令。 ### 5. 执行,通过自定义的虚拟机执行编译后的虚拟机指令程序。 可以看到,省去了生成语法树(AST)和中间代码IR 还有 代码优化等步骤。这么做的主要原因:这是我开发的第一个编译器,希望尽可能用少量的代码实现一个简单的编译器,并且能够编译简单的程序,比如冒泡排序等,最终可以通过简单实现的虚拟机执行。一切可能简单有效。 除了以上这些,我认为还有三点对于一个新编程语言 或 编译器 也很重要 ### **包管理器** 提供一个包管理器,不仅方便管理项目,还可以提供各种库,极大提高开发效率和解决问题的能力。 ### **文档编写** 编写用户手册和技术文档,提供给开发者使用。 ### **发布与维护** 发布编译器,并收集用户反馈。 根据用户反馈持续改进编译器
Hello!请先完成登录验证
微信公众号
哈希空间
扫码进入公众号回复 9 即可完成验证,实现自动登录网站。
关注就是支持,更好的服务提供给粉丝