编译原理课程设计
C语言词法分析器
语法分析器
?????????
???
姓名: 某某某
学号:
班级: 软件一班与技术学院
目录
1C语言词法分析器的设计3
1.1实验目的3
1.2实验要求3
1.3实验环境3
1.4实现分析3
1.4.1词法分析的理论构架3
1.4.2程序入口设计4
1.4.3程序执行中的流程4
1.4.4程序的出口设计5
1.5源代码5
1.6结果分析8
1.7收获与体会11
2语法分析器12
2.1实验目的12
2.2实验要求12
2.3实验环境12
2.4实现分析12
2.4.1LL(1)分析方法的思想12
2.4.2程序的入口分析12
2.4.3程序运行的流程13
2.4.4程序的出口设计14
2.5源代码14
2.6结果分析27
2.7收获与体会30
参考文献:31
C语言词法分析器的设计
华硕笔记本,内存处理器i5
Microsoft Visual Studio 2010,并安装framework4.0分析的理论构架词法分析器的功能输入源程序,按照构词规则分解成一系列单词符号。单词是语言中具有独立意义的最小单位,包括关键字、标识符、运算符、界符和常量等
C的关键字搜索共有, 是由程序语言定义的具有固定意义的标识符。编写的词法分析器只将其中的常用的定义在程序中,他们有
"break","case","char","const","continue","default","do","double","else","enun", "extern","float","for","goto","if","int","long","return","static","struct","switch","sizeof","typedef","union","unsigned","void","volatile","while"
对于的一些保留字“main”、“return”等我没有将其关键字的范围内。(2) 标识符 用来表示各种名字,如变量名,数组名,过程名等等。
(3) 常数? 常数的类型一般有整型、实型、布尔型、文字型等。
(4) 运算符 本词法分析器里面定义了、“-”“*”、“/”
四种运算符。(5) 界符则定义了如下?',' ';' '.' '(' ')' '[' ']' '=' ':' '{' '}'
程序入口设计
法分析入口的设计方法很多为了我们每次运行时方便起见,我们将我们的程序放入一个txt中,每次我们运行程序,程序将自行读取文件中的代码,并将对其进行词法分析将分析结果输出到控制台,这样的输入方法避免了我们重复输入程序的问题,我们需要对某程序进行词法分析我们只需要将我们的程序拷贝到的txt文件中运行程序即可进行词法分析了。
执行中的流程
、
N
NNN N N
Y
YY Y YY
程序的出口设计我们讲解了我们词法分析器的入口,但是我们的输出是怎样设计的呢
首先为了的程序有参考对照,我将我们的程序首先输出到控制台上,以便与后面的是做一个参考,无需再去们的txt文件做对照了。
,我将我的字和相应的界的符编上一个序号,并且将其一个二元式的方式输出到控制台上以便灾后面的词法分析结果中形成对比。
我们将词法分析的结果到控制台上,输出格式为,我们将每一句代码作为一个单位,每句代码后面我们将给出本局代码分析得到后的字符。
例如Typedef struct{ |22|19| 其意义就是Typedef struct对应的标号为两种
源代码
// cifa.cpp : 定义控制台应用程序的入口点。
#include "stdafx.h"
#include
#include
#include
#include
#include
#include
#include
using namespace std;
bool isLetter(char ch){
if ((ch>='A' && ch<='Z') || (ch>='a' && ch<='z')) return true;
else return false;
}
bool isDigit(char ch){
if (ch>='0' && ch<='9'