计算机语言实现

编译技术

计算机语言的特性

类型系统 | 面向对象 | 函数式编程

运行时技术

虚拟机技术 | 内存管理

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 - 解析器