Skip to content

6.10 Backus-Naur Form(巴科斯-诺尔范式) ​

本手册使用一种称为 Backus-Naur Form(巴科斯-诺尔范式,简称 BNF)的形式化方法来描述 PSPP 语言部分内容的语法。下表对 BNF 进行说明:

  • 全部大写的单词是 PSPP 关键字记号。在 BNF 中,这些通常称为 terminals(终结符)。有一些特殊的终结符为清晰起见用小写书写:

number

一个实数。

integer

一个整数。

string

一个字符串。

var-name

单个变量名。

=, /, +, -, etc.

运算符与标点。

.

命令的结束。它不一定对应语法文件中的一个实际句点(参见 Commands)。

  • 全部小写的单词指代 BNF 定义,称为 productions(产生式)。这些产生式也称为 nonterminals(非终结符)。有些非终结符非常常见,为清晰起见在此用英文定义:

var-list

一个或多个变量名,或关键字 ALL 组成的列表。

expression

一个表达式。详见 Expressions。

  • ‘::=’ 表示“定义为”。‘::=’ 左侧给出被定义的非终结符名称。‘::=’ 右侧给出该非终结符的定义。如果右侧为空,则该非终结符的一种可能展开为空。一条 BNF 定义称为一个 production(产生式)。
  • 因此,终结符与非终结符的关键区别在于:终结符不能再拆分为更小的部分——实际上,每个终结符都是单个记号(参见 Tokens)。另一方面,非终结符由一系列(可能为空)的终结符和非终结符组成。因此,终结符表示语法描述的最深层级别。(在解析理论中,终结符是解析树的叶子,非终结符构成分支。)
  • 在一组产生式中定义的第一个非终结符称为 start symbol(开始符号)。开始符号定义了该命令的完整语法。

基于 GNU PSPP 2.0.1 手册与入门教程整理