- 💭 写在前面:本章我们将继续更新我们的 "C-" 语言,更新表达式求值的推理规则、执行语句的推理规则以及语句执行的推理规则。
目录
0x00 C- 语言更新:表达式求值的推理规则
0x01 C- 语言更新:执行语句的推理规则
0x02 C- 语言更新:语句执行的推理规则
0x01 接下来我们该做什么?
0x00 C- 语言更新:表达式求值的推理规则
表达式求值的推理规则,定义为关系:
含义:给定环境 和内存 ,表达式 求值为 。
请注意变量 的语义如何改变,其余表达式情况的语义被省略。
0x01 C- 语言更新:执行语句的推理规则
执行语句的推理规则,定义为关系:
变量声明的语义如下,边界条件 意味着必须分配一个新的内存位置。
💭 举个例子:填写赋值语句的语义
执行语句的推理规则,定义为关系:
如果一个变量被立即重新声明如下,会发生什么?这是一个 bug 吗?
var x = 1;
var x = 2;
...
0x02 C- 语言更新:语句执行的推理规则
语句执行的推理规则,定义为关系:
与 C 语言不同,这在我们当前的 C- 语义中是允许的:
它可以正常运行,尽管在内存中创建了一个无法访问的位置。
定义为关系:
举个例子:填写 if 语句的 true 分支的语义,完成 C- 语句的其他情况的语义是直截了当的。
特别地,while 语句可以类似地处理:
0x01 预告:接下来我们要讨论的内容
在当前的 C- 语言中,你可能已经注意到内存位置只会生成,而不会被释放。
因此,长时间运行的程序可能会耗尽内存。
在现实世界的语言中,我们还必须考虑指针、结构、动态分配等问题。
在下一章中,我们将讨论 内存管理机制 (memory management),比如 自动垃圾回收器 (garbage collector) 。
📌 [ 笔者 ] 王亦优
📃 [ 更新 ] 2024.6.10
❌ [ 勘误 ] /* 暂无 */
📜 [ 声明 ] 由于作者水平有限,本文有错误和不准确之处在所难免,本人也很想知道这些错误,恳望读者批评指正!
📜 参考资料 Microsoft. MSDN(Microsoft Developer Network)[EB/OL]. []. . |