戈登·普罗特金(Gordon Plotkin)在(Plotkin04a)中引入了结构操作语义的概念作为一个定义操作语义的逻辑方式。其基本主意是使用程序组成部分的行为来定义一个程序的行为,由此来提供一个对操作语义结构性的,即按照句法和归纳性的,分析。结构操作语义对一个程序的行为的说明是通过一(组)变化关系来表示的。其形式是一系列推理规则,这些推理规则通过一组句法的转换来定义该组的合理转换。
比如我们考虑一个简单计算机语言的部分语义,在Plotkin04a和Hennessy90以及其它教科书中有相应的图像。设为该语言的程序域,是状态域(即函数的存储地址及值)。假如我们有表述(的域)、值()和存储地址(),则一个存储更新指令的语义为:
使用普通语言,这个公式说假如在状态的的值为则程序会通过更新的状态。
系列的语义可以用下列规则来表达:
第一个规则说假如处于状态的程序可以被简化为处于状态的程序的话则处于状态的程序能被简化为处于状态的程序。第二个规则说假如处于状态的程序以状态结束的话,则处于状态的程序可以简化为处于状态的程序。这里的语义是结构化的,因为程序序列的意义是由的意义和的意义定义的。
假如我们还有状态的布尔函数表示的话我们可以定义while指令的语义:
这样的定义允许对程序行为进行公式化的分析和研究程序间的关系。
由于结构操作语义看上去非常易懂,结构简单,因此它获得了很大的欢迎,实际上成为定义操作语义的标准。结构操作语义最初的报告因此获得了约900次引用[1],成为计算机科学中被引用最多的技术报告之一。