这节课的目的是解释K定义如何被分解成一个个的模块和文件,以及又如何将这些不同的组件组合成一个完整的K定义。
K的外部语法
回想一下第1.3课, 那里提到过K的语法规范里有两个组件:K的外部语法和K的内部语法。外部语法,如前所述,包括requires(需要)、模块(Modules)、导入(imports)和句子(sentences)。K的语义由定义中包含的一组句子来表达的。该定义中被认为包含的范围由K定义的**主语义模块(main semantics module)**以及包含该模块的文件中存在的require和imports决定。
基本模块语法
K中的模块就是一组句子,它是K定义的一个基本单位。一个模块包含了以下内容:
- 模块名;
- 属性列表(可选的);
- imports列表;
- 句子列表。
模块名称由一个或多个字母、数字或“_”组成,中间用“-”隔开。以下是一些有效的模块名称:’ FOO ', ’ FOO- bar ', ’ foo0 ', ’ foo0_bar-Baz9 ‘。这里有一些无效的模块名:’ - ‘,’ -FOO ', ’ BAR- ', ’ FOO——BAR '。从风格上讲,模块名通常都是大写