编译原理(一)

编译器结构:

 

 

 

  •  编译器实例:(stack:栈式计算机)

 

 编译器的前端:

 

 词法分析:

  1. 手工实现(需要书写词法分析器):

 

 

 

 词法分析识别关键字和标识符

  • 方法一:

 

  •  方法二:

2, 自动生成(需要书写声明式的规范):正则表达式

  • 正则表达式的定义:

 

  • 例子:

如果是C语言,∑=ASCII;如果是Java语言,∑=UNodd

 

  •  简化的正则表达式:

 

 有限状态自动机:

  • DFA与NFA的区别:

例一(确定的有限状态自动机DFA):输入的字符串一定被自动机接受

 

 

 

 

 

 例二(非确定的有限状态自动机NFA):输入的字符串可能被自动机接受,也可能被自动机接受

 

 

 从接受正则表达式到生成词法分析器代码流程:

 

 

 

 

  1.  从RE到NFA:

转换规范:

 

 

 

例子:

将a ( b | c )*转换为NFA:

2, NFA转换为DFA:

 

 

 将a ( b | c )*转换为DFA:

 

 DFA的最小化:

 

 

 

 

 

 

 

 

 

posted on   不愧下学  阅读(475)  评论(0编辑  收藏  举报

编辑推荐:
· SQL Server 内存占用高分析
· .NET Core GC计划阶段(plan_phase)底层原理浅谈
· .NET开发智能桌面机器人:用.NET IoT库编写驱动控制两个屏幕
· 用纯.NET开发并制作一个智能桌面机器人:从.NET IoT入门开始
· 一个超经典 WinForm,WPF 卡死问题的终极反思
阅读排行:
· 支付宝事故这事儿,凭什么又是程序员背锅?有没有可能是这样的...
· 在线客服系统 QPS 突破 240/秒,连接数突破 4000,日请求数接近1000万次,.NET 多
· C# 开发工具Visual Studio 介绍
· 在 Windows 10 上实现免密码 SSH 登录
· C#中如何使用异步编程

导航

< 2025年1月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示