计算机语言实现
编译技术
计算机语言的特性
类型系统 | 面向对象 | 函数式编程
运行时技术
虚拟机技术 | 内存管理
JS的实现
QuickJS: https://github.com/quickjs-zh/QuickJS
V8 - Chrome | node.js
TraceMonkey - FireFox
编译器前端
- 包括:词法分析|语法分析|语义分析
- 生成方式:手写|工具生成
- 最佳实践:LL算法 | 运算符优先级算法
编译器后端
- LLVM(Rust,Julia)- 问题:资源占用,即时编译速度
- JVM,Android的运行时,V8 ,自己实现的后端
- 优化算法-基于图的IR
- 生成汇编代码
运行时机制
AST解释器
AST编译成字节码
字节码在虚拟机上运行
高级特性的实现
协程 | JIT | 类型体系的实现 | 运行时的多态 | 高阶函数 | 闭包
- 字节码带来的跨平台特性
Parse
- 解析 - 读入程序,形成一个计算机可以理解的数据结构的过程
- parser - 解析器