Context-Free Grammer

  • 前端 :以语法分析器为核心,重心在分析;综合不是重点?》
概念总结
上下文无关文法 (CFG)一个理论模型。它可以通过多种方式实例化,如BNF文本、语法树、语法图或数学元组。
BNF一种符号工具。它主要用于描述CFG,但也可以借用来描述其他具有递归和层次化结构的事物。
  • 分析阶段:围绕语法展开。
  • 语法语义 即
内容描述方法
语法描述该语言程序的正确形式CFG
语义定义了程序的含义每个程序在运行时做什么事情非形式化描述和启发性的示例(现有的语义表示方法难度大)

形式语言

CFG的形式化定义。文法 grammer?一个CFG G 被定义为一个四元组 (V, Σ, R, S)

  1. V非终结符的有限集合。这些是表示语法类别的变量(如 <表达式><语句>),用尖括号 < > 表示。它们是“工厂”,最终会生产出由终结符组成的字符串。vector

  2. Σ终结符的有限集合(即你的图片中的字母表)。这是构成语言最终句子的基本符号(如 if+,id)。V ∩ Σ = φ(非终结符和终结符不能重名)。

  3. R产生式规则的有限集合。这是文法的核心,规定了如何从非终结符生成符号串。

    • 每条规则的形式是:A β,其中:

      • A ∈ V(一个非终结符)

      • β ∈ (V ∪ Σ)*(一个由非终结符和终结符组成的字符串

    • 这就是连接积 UV 的应用! 规则 A -> B C 可以理解为:A 生成的语言,是 B 生成的语言和 C 生成的语言的连接积

  4. S开始符号。这是一个特殊的非终结符 (S ∈ V),它是整个句子推导的起点(如 <程序>)。最大

ppt 9

  • 类比与 数字的0次方=1,0次连接被定义为空串miu组成的集合.代表连接的单位元
概念公式含义类比(以字母表 ∑ = {a, b} 为例)
V^nV 连接 n 次V^2:所有长度为2的字符串 {"aa", "ab", "ba", "bb"}
V*V^0 ∪ V^1 ∪ V^2 ∪ ...0次或多次连接所有字符串(包括空字符串)的集合
**V+**正则positiveVV*1次或多次连接所有非空字符串的集合
  • 文法定义的语言: 从开始符号推倒得到的所有终结符号串的集合。;又:任何能够由某棵语法分析树生成的符号串的集合。
  • 相应语法分析的概念: 接受一个终结符号串作为输入,找出从文法的开始符号推导出这个串的方法。;又 : 为一个给定的终结符号串构建一颗语法分析树的过程
factor不能被任何运算符分开的表达式
项数(term)不是因子可能被高优先级的运算符* / 分开,但不能被低优先级运算符分开
表达式() 即不是因子也不是项可能被任何一个运算符分开