Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
IEC 14977-02(等同采用 ISO/IEC 14977:2002)是国际电工委员会(IEC)与国际化标准组织(ISO)联合制定的信息技术标准,其核心内容是定义一种用于描述语法的元语言——扩展巴科斯-诺尔范式(Extended Backus-Naur Form,EBNF)。该标准最初于 1996 年发布,2002 年进行技术修订,目前已成为描述计算机语言、通信协议、文档格式及接口规范的标准元语法之一。
本标准的适用范围包括但不限于:
截至 2026 年,ISO/IEC 14977:2002 依然被广泛引用,并作为许多现代 EBNF 方言(如 W3C EBNF)的基础参考。
IEC 14977-02 规定了 EBNF 的语法元素、符号表示及语义解释。核心语法构件包括:
::=(左侧由右侧定义);| 分隔多个候选;{ } 表示零次或多次;[ ] 表示零次或一次;( ) 改变优先级;- 表示排除指定序列;(* 开头、*) 结尾。下表总结了标准中定义的 EBNF 顶层构造及其语法表示:
| 构造 | EBNF 表示 | 说明 |
|---|---|---|
| 定义 | 非终结符 ::= 表达式 | 为非终结符赋予语法定义 |
| 终结符 | 'string' 或 "string" | 表示字符序列 |
| 选择 | 候选1 | 候选2 | 任选其一 |
| 重复 | { 元素 } | 零次或多次重复 |
| 可选 | [ 元素 ] | 出现零次或一次 |
| 分组 | ( 元素 ) | 改变优先级或组合元素 |
| 异常 | 序列 - 例外 | 排除特定序列 |
| 注释 | (* 注释文本 *) | 不被解析器处理 |
标准对每个结构的语义做了严格规定:例如,重复操作符 { } 默认允许重复零次到无穷次,而 [ ] 则允许出现一次或不出现。异常操作符 - 用于定义“扣除”规则,常见于排除保留字等场景。
以下是一个符合 ISO/IEC 14977 的简单 EBNF 片段,用于描述数字列表:
(* 一个数字列表,由逗号分隔的数字组成 *) Digit ::= '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' Number ::= Digit { Digit }['.'{Digit}] List ::= Number { ',' Number } 该片段展示了终结符、选择、重复和可选的组合用法。
要实现 IEC 14977-02 标准,开发人员通常使用以下方式:
',' 作为连接符(虽然标准允许隐式连接)。{ } 和 [ ] 语义不同,前者允许多次,后者仅一次或零次。A - B 要求 B 是 A 的子序列,否则结果为空集。在项目中使用 EBNF 时,应确保:
IEC 14977-02 属于 ISO/IEC 联合技术委员会 JTC 1 制定的标准之一。它与其他元语言标准有如下关系:
? 替代 [ ],*、+ 表示重复),广泛用于 XML 及 SGML 规范。::= 和 | 的核心元素。在选择元语法时,应根据目标应用的规范环境决定:若要求国际标准化,推荐直接引用 IEC 14977-02;若面向互联网协议,ABNF 更为流行;若用于 XML 技术栈,W3C EBNF 更合适。
{ } 表示重复,[ ] 表示可选,- 表示异常)及语义。而许多教程和编程语言手册中使用的 EBNF 常是简化版本,符号含义可能不同(例如用 { } 表示重复但未定义异常)。使用时应以标准为准。