LHS查询与RHS查询

本文详细介绍了编程编译过程中的分词、词法分析、语法分析,以及LHS和RHS查询在赋值操作中的作用。通过两个实例演示了如何在函数定义和调用中识别LHS和RHS查询。
摘要由CSDN通过智能技术生成

1.编译(简单了解)

程序中一段源代码在执行前会经历三个步骤,统称为编译。

分词/词法分析

将由字符组成的字符串分解成有意义的代码块(词法单元)。
例如-var =2;该语句会被分解成以下词法单元。
var,a,=,2;.
注意:空格是否会被当作词法单元取决于空格在这门语言当中是否具有意义。

解析/语法分析

语法分析的过程就是将词法单元转换成一个由元素逐级嵌套所组成的代表了程序语法结构的树。(抽象语法树AST)

代码生成

将AST转化为可执行代码的过程被称为代码生成。

2.LHS查询

当变量出现在赋值操作的左侧时,进行LHS查询
找到容器本身,从而对其进行赋值

3.RHS查询

当变量出现在赋值操作的右侧时,进行RHS查询
简单的查找某个变量的值(得到某某的值)

4.练习

练习1

function foo(a){
console.log(a)
}
foo(2)

LHS有

  • function函数,LHS查询
  • a=2,声明形参,LHS查询

RHS有

  • console.log(…):对console对象进行RHS查询,并检查得到的值中是否有一个叫做log的方法。
  • a:RHS查找a的值并传给log()
  • foo(…):foo(…)函数的调用

练习2

function foo(a){
var b=a;
return a+b;
}
var c=foo(2);

1.找出其中所有的LHS查询(4处)

  • 声明foo函数
  • 声明b
  • 声明c
  • 隐式声明形参a

2.找出其中所有的RHS查询(4处)

  • 找到a的变量给b赋值
  • foo函数调用
  • 返回值中查找a
  • 返回值中查找b
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值