JavaScript解释器

2016-09-16  本文已影响0人  自然与大象吧

JavaScript解释器是用来干嘛的呢?

      目的就是执行JS源代码

JS解释器包含了词法解析器,句法解析器,字节码生成器,字节码解释器.

词法解析器

它可以让一行行代码源码拆分成一个个最小的词义单位。所谓的词义单位就是在语法上不能再分,最小的单个字符或者字符组合。

  var number = 2;
  //解析成下面的json格式
  [
      {
        'type':'keyword',
        'value':'var'
      },
      {
        'type':'identifier',
        'value':'number',
      },
      {
        'type':'Punctuator',
        'value':'=',
      },
      {
       'type':'Numeric',
       'value':'2',
      }
      {
       'type':'Punctuator',
       'value':';'
      }
  ]

句法分析器

     将上面的分析出来的数组,根据语法规则,转换为抽象语法树,用Esprimas解析工具可以知道也转换成了json格式。

这个抽象语法树有什么用呢?
人家说压缩优化代码,这我又不懂了,然后又说编译器、IDE等都有很多用处(现在没有办法去深入技能不够)
美团点评技术中看到了语法树可以用来重构javaScript代码

字节码生成器

  它的作用呢就是把语法树转换为javaScript引擎能读懂和执行的的二进制代码。
  每种javascript引擎都有自己的字节码格式,最简单的做法就是把语义单位翻译成二进制

字节码解释器

  当然这个一环跟一环的,有了二进制代码了,那么接下来就是执行二进制代码咯,产生了你可以用眼睛看到的结果咯。

不小心谷歌了一下语法树,果然又找到了资料,我也在思考一个问题,比如我要写一个技术博客,我想一定了解它然后找到足够权威的资料去看,然后融合贯通。然后组织逻辑。咯。
我很想知道他们是怎么思考的,我想全部在标题上了。我多看几遍应该可以找到一些意外的东西、


加上Parser API英文文档,其实应该可以理解了,就是变成每一个节点了。多去敲几下json格式的语法树会比较理解应该。

其实很多资料可以查英文的维基百科呀,还有官方文档,英文有太多资料了,你可以找到。

上一篇 下一篇

猜你喜欢

热点阅读