2.什么是JavaScript解释器

【来自《JavaScript 标准参考教程(alpha)》,by 阮一峰】   

【参考http://javascript.ruanyifeng.com/advanced/interpreter.html】                                  

JavaScript解释器的作用,是执行JavaScript源码。它通常可以包含四个组成部分。

  • 词法分析器(Lexical Analyser)
  • 句法解析器(Syntax Parser)
  • 字节码生成器(Bytecode generator)
  • 字节码解释器(Bytecode interpreter)

1. 词法分析器

词法分析器的作用,是将一行行的源码拆解成一个个词义单位(token)。所谓“词义单位”,指的是语法上不可能再分的、最小的单个字符或字符组合。

首先,词法分析器会扫描(scanning)代码,提取词义单位;然后,会进行评估(evaluating),判断词义单位属于哪一类的值。

var sum = 30;

// 词法分析后的结果
[
  "var" : "keyword",
  "sum" : "identifier",
  "="   : "assignment",
  "30"  : "integer",
  ";"   : "eos" (end of statement)
]

2.句法解析器

 句法解析器的作用,是将上一步生成的数组,根据语法规则,转为抽象语法树(Abstract Syntax Tree,简称AST)。如果源码符合语法规则,这一步就会顺利完成,生成一个抽象语法树;如果源码存在语法错误,这一步就会终止,抛出一个“语法错误”。

{
  operation: "=",
  left: {
    keyword: "var",
    right: "sum"
  }
  right: "30"
}

上面代码中,抽象语法树的一个节点是赋值操作符(=),它两侧的词义单位,分别成左侧子节点和右侧子节>点。

通常,这一步是整个JavaScript代码执行过程中最慢的。

3.字节码生成器

字节码生成器的作用,是将抽象语法树转为JavaScript引擎可以执行的二进制代码。目前,还没有统一的JavaScript字节码的格式标准,每种JavaScript引擎都有自己的字节码格式。最简单的做法,就是将语义单位翻成对应的二进制命令。

4.字节码解释器

字节码解释器的作用是读取并执行字节码。

                          

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值