简单过了一下龙书第一章,其中提到了一些一定程度上值得注意的东西,整体与编译原理课程关系不大,在这里简单记录
静态与动态的区别
静态:编译时确定
动态:运行时确定
作用域
静态作用域:常规的对作用域的理解
动态作用域:很少见,比如宏定义中出现的符号的作用域
参数传递的三种机制
值调用:最常见的传递方式,即将一份拷贝传递
引用调用:顾名思义,Python或Java对复杂变量采取这种形式
名调用:现在已经很少见,将括号内的东西以宏替换的方式传入,会产生意想不到的结果
别名
别名顾名思义,例如在Python中考虑如下代码:
1 | a = [0, 1, 2] |
此时b
就是a
的一个别名,这对于一些试图将名字直接用值表示的优化操作可能产生限制
词法分析基本概念
- 词法单元:一个词法单元名和一个属性值
- 模式:用来匹配词法单元的模式
- 词素:源程序中的一个字符序列
例如int a = 0;
中,a
是一个词素,其对应的词法单元为:<Identifier, symbol(a)>
,其中的属性是符号表中的一项