前言

参考东南大学廖力老师的编译原理教程和课上PPT内容。 该学习笔记目前仅打算个人使用。
由于本菜鸡第一次发csdn,许多格式不会用。后续会进一步整理,包括添加笔记内容,标明参考资料。暂时只将学习时的markdown直接导入。

更新中。。。

跳过目录

一、文法的概念

1、文法

文法是描述语言的语法结构的形式规则。

例:英语语法

  • Young men like pop music.

英语语法规则如下:

  • <句子> → <主语><谓语>
  • <主语> → <形容词><名词>
  • <谓语> → <动词><宾语>
  • <宾语> → <形容词><名词>
  • <形容词> → Young I pop
  • <名词> → men | music
  • <动词> → like

视频中使用的是 → ,而在课上的上PPT中使用的是 ::= 。两种符号都表示“由…组成”,两种符号都可以用。

2、相关概念

(1)非终结符

  • 出现在规则的左部、用<>括起来、表示一定语法概念的词。
  • 非终结符集合用VN表示。

(2)终结符

  • 语言中不可再分割的字符串(包括单个字符组成的串)。
  • 终结符是组成句子的基本单位。
  • 终结符集合用VT表示。

(3)开始符号

  • 表示所定义的语法范畴的非终结符。
  • 注:开始符号又称为识别符号

(4)产生式

  • 是用来定义符号串之间关系的一组(语法)规则。
  • 形式:A → α (A 产生 α,或 A 由 α 构成)

(5)推导

推导是从开始符号开始,通过使用产生式的右部取代左部,最终能产生语言的一个句子的过程。

  • 最左(右)推导:每次使用一个规则,以其右部取代符号串最左(右)非终结符。

注:最左推导和最右推导称为规范推导。

例:根据英语语法规则推导英语句子。

  • Young men like pop music.

英语语法规则如下:

  • <句子> → <主语><谓语>
  • <主语> → <形容词><名词>
  • <谓语> → <动词><宾语>
  • <宾语> → <形容词><名词>
  • <形容词> → Young I pop
  • <名词> → men | music
  • <动词> → like

最左推导(由上至下)/ 最右归约(由下至上)过程:

  • <句子> ⇒ <主语><谓语>
  • ⇒ <形容词> <名词><谓语>
  • ⇒ Young <名词><谓语>
  • ⇒ Young men <谓语>
  • ⇒ Young men <动词><宾语>
  • ⇒ Young men like <宾语>
  • ⇒ Young men like <形容词><名词>
  • ⇒ Young men like pop <名词>
  • ⇒ Young men like pop music(语法正确)

视频中使用的是 → ,而在课上的上PPT中使用的是 ⇒ 。⇒ 是为了与产生式中的符号 → 区分,用 ⇒ 表示推导。这里用 ⇒ 来表示。

为了表示和书写的方便,使用符号编译原理学习笔记 2.2 文法与语言的关系来表示上述推导序列,并把推导过程缩写为:

  • <句子> 编译原理学习笔记 2.2 文法与语言的关系Young men like pop music

(6)归约

归约是推导的逆过程,即从给定的源语言的句子开始,通过规则的左部取代右部,最终达到开始符号的过程。

  • 最左(右)归约是最右(左)推导的逆过程。

注:最左归约和最右归约称为规范归约。

(7)句型、句子和语言

句型

句型是从文法的开始符号 S 开始,每步推导(包括0步推导)所得到的字符串 α 。

记作:s 编译原理学习笔记 2.2 文法与语言的关系 α,其中 α ∈ (VN ∪ VT)*

句子

是仅含终结符的句型。

例:根据英语语法规则,能否推导得出下列英语句子是语法正确的句子?推导过程中会出现哪些句子?

  • Young men like pop music.

英语语法规则如下:

  • <句子> → <主语> <谓语>
  • <主语> → <形容词><名词>
  • <谓语> → <动词><宾语>
  • <宾语> → <形容词><名词>
  • <形容词> → Young I pop
  • <名词> → men | music
  • <动词> → like

最左推导(由上至下)/ 最右归约(由下至上)过程:

  • <句子> ⇒ <主语><谓语>
  • ⇒ <形容词> <名词><谓语>
  • ⇒ Young <名词><谓语>
  • ⇒ Young men <谓语>
  • ⇒ Young men <动词><宾语>
  • ⇒ Young men like <宾语>
  • ⇒ Young men like <形容词><名词>
  • ⇒ Young men like pop <名词>
  • ⇒ Young men like pop music(语法正确)

注:过程中少了很多步骤,如将<形容词> <名词>归约为<主语>或<宾语>时的判断(走到头不成功则换另一种)

用图示化方式表示(语法树)

推导:
编译原理学习笔记 2.2 文法与语言的关系

最左归约:
编译原理学习笔记 2.2 文法与语言的关系

可能出现的句子:

编译原理学习笔记 2.2 文法与语言的关系

  • 推导过程中的每一步中间结果(包括0度推导,即<句子>)都是一个句型。如<主语> <动词> <宾语>。

语言

语言是由S开始通过 1 步或 1 步以上推导所得的句子的集合。

记为:L(G),L(G) = { α | S 编译原理学习笔记 2.2 文法与语言的关系 α,且 α ∈ VT* }

视频中使用的符号是编译原理学习笔记 2.2 文法与语言的关系,这里还是按照课上PPT走。

(8)文法规则的递归定义

  • 非终结符的定义中包含了非终结符自身。
  • 使用文法的递归定义要谨慎

例如:字母表 A = { 0,1 },语法规则为:

  • <整数> → <数字> <整数> | <数字>
  • <数字> → 0 | 1

再如:字母表A = { 0,1 },语法规则为:

  • <整数> → <数字><整数>
  • <数字> → 0 | 1

待续

相关文章:

  • 2021-09-09
  • 2021-04-09
  • 2022-01-07
  • 2019-09-25
  • 2021-07-07
猜你喜欢
  • 2021-08-20
  • 2019-09-11
  • 2021-10-19
  • 2021-08-29
  • 2021-08-11
  • 2021-05-17
相关资源
相似解决方案