词法分析器总结
2015-07-19 21:22
148 查看
总结一些编译原理词法分析的内容。
1 简单介绍
对于编译语言而言,程序都需要通过编译器编译成二进制的代码,这样才可以在计算机上运行。对于现在的程序而言,并不能直接将其翻译成二进制可执行文件。中间需要若干中间环节,其中通常包含词法分析器,语法分析器,语意分析器。这里主要总结一下词法分析器。
词法分析器的主要功能是将程序切分为一个个单词,并将单词进行相关的分类。
比如说以上最简单的一个赋值语句。经过词法分析后,就会被切分成,其中的一些空格等等都会被处理过滤掉
这里对于词法分析器的实现通常有两种方法,一种手工编码实现,一种通过自动实现。
其中自动实现,即需要通过某种语言实现对程序相关单词的准确定义。这里通常使用的是正则表达式的方法。
2 相关算法
这里我简单画了下词法分析器的一些算法与涉及的概念。需要指出的是自动实现的三种算法实际是一种递进的关系。即
RE描述->Thompson算法->子集构造算法->Hopcroft算法->代码
其中每一个算法输出结果是下个算法的输入。为了解决NFA到DFA最小化的问题。其中Thompson算法解决的是RE->NFA的问题,子集构造算法解决的是NFA到DFA的问题,Hopcroft解决的是DFA最小化的问题。
1 简单介绍
对于编译语言而言,程序都需要通过编译器编译成二进制的代码,这样才可以在计算机上运行。对于现在的程序而言,并不能直接将其翻译成二进制可执行文件。中间需要若干中间环节,其中通常包含词法分析器,语法分析器,语意分析器。这里主要总结一下词法分析器。
词法分析器的主要功能是将程序切分为一个个单词,并将单词进行相关的分类。
int x; x = 10;
比如说以上最简单的一个赋值语句。经过词法分析后,就会被切分成,其中的一些空格等等都会被处理过滤掉
INT ID(X) SEMICOLON ID(X) EQ INT(10)
这里对于词法分析器的实现通常有两种方法,一种手工编码实现,一种通过自动实现。
其中自动实现,即需要通过某种语言实现对程序相关单词的准确定义。这里通常使用的是正则表达式的方法。
2 相关算法
这里我简单画了下词法分析器的一些算法与涉及的概念。需要指出的是自动实现的三种算法实际是一种递进的关系。即
RE描述->Thompson算法->子集构造算法->Hopcroft算法->代码
其中每一个算法输出结果是下个算法的输入。为了解决NFA到DFA最小化的问题。其中Thompson算法解决的是RE->NFA的问题,子集构造算法解决的是NFA到DFA的问题,Hopcroft解决的是DFA最小化的问题。
相关文章推荐
- codeforces 555 C Case of Chocolate
- NSRunLoop扩展阅读
- hessian入门
- linux无线网卡驱动安装
- ZOJ 3230 Solving the Problems(数学 优先队列啊)
- C#泛型总结
- 欢迎使用CSDN-markdown编辑器
- 音乐touch ur soul
- 数组矩阵的顺时针输出
- 2015 HUAS Provincial Select Contest #1
- 欢迎使用CSDN-markdown编辑器
- .NET获取当前程序所在电脑的CPU和内存使用率
- git学习笔记
- git学习笔记
- Objective-C设计模式——原型Prototype(对象创建)
- HttpHandler简介
- 12100 Printer Queue(优先队列)
- linux的单用户模式与救援模式
- android基础:handler与messag案例(计时器)
- WebForm 验证控件