[源码和文档分享]基于有限自动机的词法分析器构造
一、目标
本次实验的主要目的是对自定义的程序语言的词法分析器程序构造,我从 C 语言当中选择了部分具有代表性的子集,实现词法分析器,主要是对编译原理课程中学习的从正则达式转化为 NFA,再从 NFA 转化为 DFA 以及后续的代码生成的过程有更深刻的认识。同时,也希望对于在编译原理课程中所体现出的计算机科学当中的一些朴素而优美的思想有更多的体会。
二、内容概述
本报告主要描述了一个简单的词法分析器构造过程,包括最终成品的功能概要,实现过程中的理论推导,具体的核心算法和数据结构的描述,以及个人的收获和体会。
三、实验环境
- 操作系统 Win8.1
- 实验的编译器 eclipse
- 编码格式 Utf-8
3.1 语言定义
3.1.1 记号定义
3.1.1.1 保留字
我选择了 C 语言当中一部分具有代表性的保留字,同时为了保持整个编译原理课程实验的延续性和后续语义分析的实验内容,选择的保留字能够涵盖程序设计中的顺序、分支、和循环结构,这样也可以很好的对正则表达式当中的三种基本运算连接、或、闭包运算形成很好的对应,除此之外,选择了能够形成对函数调用,变量声明进行支持的部分保留字。具体选择的保留字有如下几个:
else, if,int,double,char,do,continue,break,float, return, void, while,for
3.1.1.2 特殊符号
-
算术运算符:+、-、*、/
-
比较运算符:<、<=、>、>=、==、!=
-
分割符号:;、,
-
括号:()、[]、{}
-
数字:支持整数int,浮点数doule、float、char
参考文档和完整的文档和源码下载地址:
https://www.write-bug.com/article/1359.html