编译原理 第三章上 :词法分析 状态图的画法与检验

文章目录

  • [第三章 词法分析](#第三章 词法分析)
    • [3.1 词法分析的功能](#3.1 词法分析的功能)
    • [3.2 正则文法及状态图](#3.2 正则文法及状态图)
      • [3.2.1 状态图](#3.2.1 状态图)
      • [3.2.2 状态图的用法](#3.2.2 状态图的用法)
    • [3.3 正则表达式](#3.3 正则表达式)
      • [3.3.1 正则文法到正则表达式的转换](#3.3.1 正则文法到正则表达式的转换)

第三章 词法分析

写在最前,本节把握重点是状态图的画法及检验句子的合法性

3.1 词法分析的功能

扫描源程序字符流,按照源语言的词法规则识别出各类单词符号,并产生用于语法分析的符号序列。

即字符串源程序➡️通过词法分析➡️符号串源程序

词法分析的功能是识别出具有独立意义的单词,输出的就是这些单词的符号。

功能:

1️⃣识别单词和值

2️⃣删去空格,换行,制表符及注释。

错误检查:

1️⃣非法字符检查

2️⃣关键字拼写错误检查

3️⃣不封闭错误检查


3.2 正则文法及状态图

该小节非常重要

3.2.1 状态图

什么样的图是状态图?

⭐️状态图的画法 :

  1. 添加开始符号S S是我们手动额外添加的,作为状态图的开始,注意在它的左边画上箭头
  2. 所有非终结符号对应一个状态,文法的识别符号作为终结符号,要画两个圈。
  3. 形如U→a的规则,从S出发画线指向U,线上标记a
  4. 形如U→Wa的歌则,从W出发画线指向U,标记为a 在前述章节中,学习了正则文法的结构,就是U→a和U→Wa这两种规则,故而状态图的画法也围绕着这两种方式。

手把手题目代练:

1.有正则文法G[Z]:

Z::=Ua|Vb

U::Zb|B

V::Za|a

画出文法的状态图

2.已知状态图写出正则文法

3.2.2 状态图的用法

状态图是用来识别句子的,检验句子的合法性。

图片说明:

1.状态是当前要出发的状态,即上一步的结果状态

2.从左往右扫描


3.3 正则表达式

正则表达式可简要描述的内容不多,建议翻书

正则表达式表示相同的语言,则称这两个表达式等价。

正则表示式的部分运算满足结合律,交换律和分配律。

3.3.1 正则文法到正则表达式的转换

补充一个无关的小考点:

test语言的词法分析器

相关推荐
用户75389755281751 天前
《手写解释器》第7章 表达式求值
编译原理·编译器
无厘头三四十20 天前
现代编译器直接生成机器码的原理
编译原理
猪哥帅过吴彦祖23 天前
从源码到可执行文件:揭秘程序编译与执行的底层魔法
操作系统·编译原理·编译器
poemyang1 个月前
性能优化之母:为什么说“方法内联”是编译器优化中最关键的一步棋?
java虚拟机·编译原理·即时编译器·方法内联
poemyang1 个月前
new出来的对象,不一定在堆上?聊聊Java虚拟机的优化技术:逃逸分析
java虚拟机·编译原理·逃逸分析·即时编译器
前端缘梦1 个月前
解锁webpack核心技能(三):从源代码到打包产物编译过程的原理指南
webpack·编译原理·前端工程化
poemyang1 个月前
解锁硬件潜能:Java向量化计算,性能飙升W倍!
java虚拟机·编译原理·jit·向量化计算·smid
poemyang1 个月前
Java编译器优化秘籍:字节码背后的IR魔法与常见技巧
java虚拟机·编译原理·ir·即时编译器
poemyang1 个月前
“代码跑着跑着,就变快了?”——揭秘Java性能幕后引擎:即时编译器
java·java虚拟机·编译原理·jit·即时编译器
poemyang1 个月前
“同声传译”还是“全文翻译”?为何HotSpot虚拟机仍要保留解释器?
java·java虚拟机·aot·编译原理·解释执行