javascript解析机制

1.javascript解析机制

javascript解析过程分为编译执行两个阶段
        (1) 编译期 :   即js预处理(预编译),在预编译期,js解释器将完成对js代码的预处理,也就是把js脚本代码转换                                  为字节代码
(2) 执行期 :在执行期,js解释器借助执行期环境(执行期环境)把字节码生成机械码,并按顺序执行,完成程序设       计的任务

2.预编译期

(1)js是一种解释型语言,而不是编译型语言

(2)解释型语言: 代码在执行时才被解释器一行行动态编译和执行,而不是在执行之前就完成了编译

                             简单的说,解释型语言就是边编译边执行,而编译型语言是先编译后执行,两者的操作过程不同

 

   (3)编译器的组成


4)编译器编译流程




     (4-1)词法分析:js解释器先将脚本代码的字符流转换为记号流

例如:把字符流

a=(b-c);

转换为记号流:

NAME    "a"

EQUALS

OPEN_PARENTHESIS

NAME    "b"

MINUS

NAME    "c"

CLOSE_PARENTHESIS

SEMICOLON

词法分析器是编译器中与源程序直接接触的部分,因此词法分析器可以实现

         微笑去掉注释,自动生成文档

 微笑 提供错误的位置(可以通过记录行号来提供),当字符流变成记号流以后,就没有了行的概念

 微笑完成预处理

词法分析是对js脚本代码进行逐一分析的过程,它相当于语言翻译

(4-2)语法分析:将词法分析所产生的记号生成语法树。通俗的说就是把程序中收集的信息存储到数据结构中,请注意:编译中的数据结构包括两种:符号表和语法树

大笑符号表:在程序中用来存储所有符号的一个表,包括所有的字符串变量,直接量字符串,还有函数和类。

大笑语法树:就是程序结构中的一个树形表示,并将使用这个树形结构来生成中间代码。



例如:下面是一个简单的条件结构和输出信息代码段,被语法分析器转换为语法树之后,如图:

  if(typeof a == "undefined"){

a=0;

   }else{

a=a;

   }

   alert(a);

                   

3.执行期

         

       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值