编译原理:文法和语言

📅 2026/7/6 14:35:55 👁️ 阅读次数 📝 编程学习
编译原理:文法和语言

📌目录

  • ⚖️ 文法和语言:形式语言理论的基石
    • 🎯 一、基本概念
      • (一)字母表与字符串
      • (二)语言
    • 📦 二、文法的形式化定义
      • (一)文法的定义
      • (二)产生式
      • (三)文法示例
    • 🌐 三、推导与归约
      • (一)推导
      • (二)归约
      • (三)句型与句子
    • 📊 四、语法树与二义性
      • (一)语法树
      • (二)二义性
      • (三)消除二义性
    • 🔍 五、乔姆斯基文法体系
      • (一)文法分类
      • (二)各类型文法详解
      • (三)文法体系对比
    • 📝 六、文法的化简与变换
      • (一)无用符号消除
      • (二)空产生式消除
      • (三)单产生式消除
      • (四)乔姆斯基范式(CNF)
      • (五)格雷巴赫范式(GNF)
    • 📝 总结


⚖️ 文法和语言:形式语言理论的基石

文法和语言是编译原理的形式化基础。从乔姆斯基文法体系的建立,到上下文无关文法在编程语言中的广泛应用,文法理论为编译程序的设计提供了坚实的数学基础。什么是文法?如何精确定义一门语言?不同等级的文法有何区别?推导、归约、语法树之间是什么关系?本文将系统介绍文法和语言的核心概念,帮助您深入理解形式语言理论的精髓。

🎯 一、基本概念

(一)字母表与字符串

字母表(Alphabet)是符号的非空有穷集合,通常用Σ表示。

字母表示例: Σ₁ = {a, b} 二元字母表 Σ₂ = {0, 1} 二进制字母表 Σ₃ = {a, b, c, ..., z} 小写字母表 Σ₄ = {a, b, ..., z, A, B, ..., Z, 0, 1, ..., 9} 字母数字表 编程语言的字母表: Σ = {a-z, A-Z,