ISO/IEC14977:1996(E) - 扩展BNF语法详解
需积分: 0 72 浏览量
更新于2024-06-20
收藏 79KB PDF 举报
"ISO-14977-EBNF.pdf 是一份关于Extended Backus-Naur Form (EBNF) 的标准文档,它被用于描述形式化的语法,特别是编程语言和其他结构化文本的语法规则。EBNF是扩展自原始的Backus-Naur Form (BNF),增加了更多的语法构造,使得表达更复杂、更灵活的语法规则成为可能。这份文档出自ISO/IEC14977:1996(E),涵盖了一系列定义和规则,用于规范EBNF中的每一个语法元素的格式和含义。"
在ISO/IEC14977:1996(E)中,文档首先介绍了EBNF的范围,它旨在定义一种形式化的语法表示法,允许清晰地表示各种语言的语法规则。接着,文档列举了规范性参考文献,这些文献可能是理解EBNF所必需的其他标准或技术报告。
文档的核心部分详细阐述了EBNF中每个语法元素的形式,这包括:
1. **一般规则**:这部分提供了一种通用的框架,说明EBNF如何构造和解释。
2. **语法**:EBNF的语法规则定义了如何构建和组合不同的语法元素。
3. **语法规则**:每个规则都是一组定义,用于描述一个特定的语法结构。
4. **定义列表**:包含一系列单独的定义,每个定义对应一个单独的语法项。
5. **单一定义**:定义一个单独的语法项。
6. **语法项**:是EBNF的基本构建块,可以是终端字符串、元标识符或其他更复杂的结构。
7. **语法例外**:表示非正常情况或特殊语法结构。
8. **语法因子**:包含可选的、重复的或分组的语法项。
9. **整数**:在某些情况下,EBNF可能需要表示数值。
10. **语法原语**:最基础的语法元素,不能被分解为更小的部分。
11. **可选序列**:表示零个或一个实例的语法结构。
12. **重复序列**:表示零个或多个实例的语法结构。
13. **分组序列**:将多个元素作为一个单元处理。
14. **元标识符**:用作语法构造的占位符。
15. **元标识符字符**:构成元标识符的单个字符。
16. **终端字符串**:表示实际的字符序列,通常用于表示语言的词汇元素。
17. **首终端字符** 和 **第二终端字符**:描述终端字符串的开头和可能的后续字符。
18. **特殊序列**:具有特殊含义的字符序列。
19. **特殊序列字符**:构成特殊序列的单个字符。
20. **空序列**:表示没有字符的序列。
21. **进一步的例子**:提供了实际的EBNF语法示例以加深理解。
此外,文档还解释了每个语法元素所代表的符号和它们在解析过程中如何映射到实际的语法结构:
1. **终端字符串**:表示具体的语言标记或关键字。
2. **元标识符**:通常代表抽象的语法概念或类别。
3. **分组序列**:表示一组应一起出现的元素。
4. **可选序列**:允许某个元素的出现是可选的。
5. **重复序列**:表示一个元素可以重复出现的次数。
6. **语法因子**:可以是其他语法元素的组合,如带有修饰符的语法项。
7. **语法项**:基本的构造单元,可以由终端字符串、元标识符或其他语法项组成。
8. **单一定义**:定义一个独立的语法概念。
9. **定义列表**:收集多个相关的定义,形成完整的语法规则集。
EBNF的这些特性使其成为一个强大的工具,可以用于创建和解析复杂的语法规则,尤其在软件工程、编译器设计和语言规范中。由于其灵活性和表达力,EBNF也被广泛应用于C语言等编程语言的文法描述。
2020-06-05 上传
2024-06-25 上传
2024-06-25 上传
点击了解资源详情
2022-06-23 上传
2014-12-23 上传
2019-10-12 上传
2019-07-17 上传
2019-07-17 上传
御风@户外
- 粉丝: 281
- 资源: 7
最新资源
- Angular实现MarcHayek简历展示应用教程
- Crossbow Spot最新更新 - 获取Chrome扩展新闻
- 量子管道网络优化与Python实现
- Debian系统中APT缓存维护工具的使用方法与实践
- Python模块AccessControl的Windows64位安装文件介绍
- 掌握最新*** Fisher资讯,使用Google Chrome扩展
- Ember应用程序开发流程与环境配置指南
- EZPCOpenSDK_v5.1.2_build***版本更新详情
- Postcode-Finder:利用JavaScript和Google Geocode API实现
- AWS商业交易监控器:航线行为分析与营销策略制定
- AccessControl-4.0b6压缩包详细使用教程
- Python编程实践与技巧汇总
- 使用Sikuli和Python打造颜色求解器项目
- .Net基础视频教程:掌握GDI绘图技术
- 深入理解数据结构与JavaScript实践项目
- 双子座在线裁判系统:提高编程竞赛效率