如何改写JavaScript元循环求值器为长尾?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2810个文字,预计阅读时间需要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 来处理。
本文共计2810个文字,预计阅读时间需要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 来处理。

