如何描述语言的语义?

时间:2016-01-30 17:58:52

标签: semantics execution formal-semantics

对于语法,有EBNF ISO 14977标准。

对于运行时,我们有CLI ISO 23271标准
另见Simple definition of "semantics" as it is commonly used in relation to programming languages/APIs?

但是如何用声明的方式描述从EBNF到CLI规范的转换? 即是否足以使用S-attributed grammar?哪个标准定义了这种语法的语法?

1 个答案:

答案 0 :(得分:2)

有许多方法可以定义语言的语义。所有这些都必须以某种方式表达程序文本与"它计算的内容之间的关系"。

简短但不完整的基本技术清单:

  • 定义解释器("操作语义")
  • 定义从源代码到丰富的lambda演算的映射("指称语义")
  • 将源代码中的地图定义为另一种明确定义的语言("转换语义")

基本上,这些是在程序实例的源文本上定义的计算。

您可以通过多种方式实现这些计算。 实现它们的一种方式可能是" S-referenced"语法,虽然为什么你想限制自己只使用S-属性而不是带有继承属性的标准属性语法超出我的范围。

鉴于有很多方法可以做到这一点,我怀疑你会找到一个标准。当然,编程语言委员会并没有使用它。哎呀,他们甚至不会使用BNF的标准。