简单过了一下龙书第一章,其中提到了一些一定程度上值得注意的东西,整体与编译原理课程关系不大,在这里简单记录

静态与动态的区别

静态:编译时确定

动态:运行时确定

作用域

静态作用域:常规的对作用域的理解

动态作用域:很少见,比如宏定义中出现的符号的作用域

参数传递的三种机制

值调用:最常见的传递方式,即将一份拷贝传递

引用调用:顾名思义,Python或Java对复杂变量采取这种形式

名调用:现在已经很少见,将括号内的东西以宏替换的方式传入,会产生意想不到的结果

别名

别名顾名思义,例如在Python中考虑如下代码:

1
2
a = [0, 1, 2]
b = a

此时b就是a的一个别名,这对于一些试图将名字直接用值表示的优化操作可能产生限制

词法分析基本概念

  • 词法单元:一个词法单元名和一个属性值
  • 模式:用来匹配词法单元的模式
  • 词素:源程序中的一个字符序列

例如int a = 0;中,a是一个词素,其对应的词法单元为:<Identifier, symbol(a)>,其中的属性是符号表中的一项