实验
1-3 S
语言词法分析器设?/p>
一、实验名称:
S
语言词法分析器设?/p>
二?/p>
实验目的?/p>
通过手工编写简?/p>
C
语言词法分析器,
熟悉并深入理解编译程序词法分析器
的工作原理?/p>
三、实验内容:
1
.根据保留字和特殊符号表能区分出源文件中的保留字、普通标识符和特殊符号,并能?/p>
行简单的错误处理?/p>
2
.设计词法分析器模块调用结构图和各模块流程图?/p>
3
.程序源代码?/p>
4
.程序的执行结果:输入文件,输出结果文件及屏幕信息?/p>
四、实验中出现的问题及解决方法?/p>
遇到问题及解决:
1
、关于注?/p>
//
和除?/p>
/
。需要区分,?/p>
isanotation
函数中?/p>
2
、关于遇到空格时回退,一开始没有懂,后来经过同学讲解,明白了如何回退的?/p>
3
、关于词法分析器的思想过程,经过老师再三讲解,已经大致明白,具体步骤,在最后体
会部分中?/p>
五、程序结构和代码
源程?/p>
词法分析程序
记号文件
程序结构?/p>
Scanner
close
Isalpha
Isnumber
Isanotation
Output
Isother
Error
主函?/p>
Initscanner
Lexscan
代码?/p>
#include<stdio.h>
#include<stdlib.h>
#include<string>
#include<iostream>
using namespace std;
//
关键字表
string
keywords[20]={"include","void","main","
int","char","float","double","if","else
","then","break","continue","for","do",
"while","printf","scanf","begin","end",
"return"};
char aa[99999]=" ";
//
关键字表初始为空
string id[10000];
int pp=0;