如何实现一个JavaScript中的元循环求值器编写方法?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2815个文字,预计阅读时间需要12分钟。
在上一篇文章中,我们通过AST实现了微信小程序组件的多端编译。本文将深入探讨,通过AST完成一个JavaScript元循环求值器+结构+一个元循环求值器,完整的方案应包含以下内容:
在上一篇文章中,我们通过AST完成了微信小程序组件的多端编译,在这篇文章中,让我们更深入一点,通过AST完成一个javascript元循环求值器
结构
一个元循环求值器,完整的应该包含以下内容:
- tokenizer:对代码文本进行词法和语法分析,将代码分割成若干个token
- parser:根据token,生成AST树
- evaluate:根据AST树节点的type,执行对应的apply方法
- apply:根据环境,执行实际的求值计算
- scope:当前代码执行的环境
代码目录
根据结构看,我将代码目录大致拆分为以下几个文件
- parser
- eval
- scope
tokenizer和parser这两个过程不是本文的重点,我统一放在了parser中,交由 @babel/parser 来处理。
evaluate和apply这两个过程我统一放在了eval文件中处理,一会我们重点看下这部分。
scope则放入scope文件。
evaluate-apply
这其实是一个递归计算的过程。
本文共计2815个文字,预计阅读时间需要12分钟。
在上一篇文章中,我们通过AST实现了微信小程序组件的多端编译。本文将深入探讨,通过AST完成一个JavaScript元循环求值器+结构+一个元循环求值器,完整的方案应包含以下内容:
在上一篇文章中,我们通过AST完成了微信小程序组件的多端编译,在这篇文章中,让我们更深入一点,通过AST完成一个javascript元循环求值器
结构
一个元循环求值器,完整的应该包含以下内容:
- tokenizer:对代码文本进行词法和语法分析,将代码分割成若干个token
- parser:根据token,生成AST树
- evaluate:根据AST树节点的type,执行对应的apply方法
- apply:根据环境,执行实际的求值计算
- scope:当前代码执行的环境
代码目录
根据结构看,我将代码目录大致拆分为以下几个文件
- parser
- eval
- scope
tokenizer和parser这两个过程不是本文的重点,我统一放在了parser中,交由 @babel/parser 来处理。
evaluate和apply这两个过程我统一放在了eval文件中处理,一会我们重点看下这部分。
scope则放入scope文件。
evaluate-apply
这其实是一个递归计算的过程。

