编译原理手记04-通过状态图设计词法分析器
2014-07-22 17:04
381 查看
状态图的元素:
圆圈 -> 状态
箭头 -> 状态的转换,通常附近会标明转换条件
星号 -> 再peek一个字符
例如一个标识符的词法解析状态图:
根据状态图,我们就可以写出相应的程序出来,上面这个状态图转化成程序后大概如下:
根据设计好的状态图来实现词法分析器会非常简单,而且可以在写代码之前就发现一些该提早发现的设计问题。
圆圈 -> 状态
箭头 -> 状态的转换,通常附近会标明转换条件
星号 -> 再peek一个字符
例如一个标识符的词法解析状态图:
根据状态图,我们就可以写出相应的程序出来,上面这个状态图转化成程序后大概如下:
var token string for { // ch代表每次读取的字符 switch state { // 第一次读取到一个下划线或字母则进入状态1 case 0: if ch == '_' || ('A' <= ch && ch <= 'Z') || ('a' <= ch && ch <= 'z') { token += string(ch) state = 1 } // 如果读取到的字符不是下划线、字母,也不是数字,则进入状态2(结束状态) case 1: if ch == '_' || ('A' <= ch && ch <= 'Z') || ('a' <= ch && ch <= 'z') || ('0' <= ch && ch <= '9') { token += string(ch) } else { state = 2 } // 这是结束状态,返回的token就是这次解析出的标识符 case 2: return token } }
根据设计好的状态图来实现词法分析器会非常简单,而且可以在写代码之前就发现一些该提早发现的设计问题。
相关文章推荐
- 吉首大学_编译原理实验题_基于预測方法的语法分析程序的设计【通过代码】
- [编译原理课程设计] 程序示例一、词法分析器
- 编译原理 - 课程设计(简易词法分析器)
- 吉首大学_编译原理实验题_基于预测方法的语法分析程序的设计【通过代码】
- 编译原理课程设计之词法分析器
- 通过hello world介绍2.6内核模块编译的最基本原理 .
- 编译原理-&gt;词法分析器的分析
- 0311编译原理上机作业通过情况
- 深入浅出编译原理-4-一个简单词法分析器的C语言实现
- 求助!编译原理课程设计! 希望能得到方法!
- C++实现编译原理的词法分析器
- 通过冒泡排序(C语言实现)学习回调函数设计原理
- java设计模式--状态模式--04
- 编译原理课程设计_C--编译器_语法分析&代码生成
- 【编译原理】一个词法分析器源码的剖析
- 【编译原理】编译原理课程设计中遇到的问题及解决
- 设计有穷自动机DFA实现C++简单程序的词法分析、扫描(编译原理实验) 推荐
- [编译原理]词法分析器JLEX使用指南 (Jdk1.5.0 + JLex 1.2.6)
- C#写的一个词法分析器(编译原理)
- 编译原理---词法分析器