【发布时间】:2017-03-18 18:05:56
【问题描述】:
“静态语义”在编程中是什么意思?
静态语义、语义和动态语义是什么关系?
我知道语义代表检查编写的代码(没有语法错误)是否有任何意义。
【问题讨论】:
标签: syntax static compiler-construction semantics
“静态语义”在编程中是什么意思?
静态语义、语义和动态语义是什么关系?
我知道语义代表检查编写的代码(没有语法错误)是否有任何意义。
【问题讨论】:
标签: syntax static compiler-construction semantics
语义是关于意义的。它包括:
静态语义,这是在编译时可以确定的部分,包括数据类型,是否声明了所有变量,在作用域的情况下哪个声明适用于哪个变量,它们的类型是什么,是否是函数和方法以正确的调用顺序调用,赋值是否类型兼容等,以及
动态语义,即程序执行时实际发生的情况。
资料来源:Frank de Remer,编译器构造课程,加州大学桑茨克鲁兹分校,1979 年。
【讨论】:
程序的静态属性是编译器在编译时可以检测到的。
编译器在编译时只能检测到静态语义错误。
动态语义错误只能在执行时检测到,而不是在执行前由编译器检测到。
【讨论】:
静态语义:这意味着你的编程语句不应该有可能根据语法规则生成多个结果。
【讨论】: