- 26
- 0
- 约1.47万字
- 约 34页
- 2021-01-30 发布于山东
- 举报
编译原理实验报告
实验一 词法分析程序实现
一、实验目的与要求
通过编写和调试一个词法分析程序,掌握在对程序设计语言的源程序进行扫描
的过程中,将字符形式的源程序流转化为一个由各类单词符号组成的流的词法分析
方法。
识别表
二、实验设计
语言中具有的单词包括五个关键字 begin、end、 if 、 then、else;标识符;整型常数;六种关系运算符;一个赋值符和四个算术运算符。参考实现方法简述如下。
单词的分类 :构造上述语言中的各类单词符号及其分类码表。
表 I 语言中的各类单词符号及其分类码表
单词符
类别编
类别码的助记
单词值
号
码
符
begin
1
BEGIN
end
2
END
if
3
IF
then
4
THEN
else
5
ELSE
标识符
6
ID
字母打头的字母数字串
整常数
7
INT
数字串
8
LT
=
9
LE
=
10
EQ
11
NE
12
GT
=
13
GE
:=
14
IS
+
15
PL
-
16
MI
*
17
MU
/
18
DI
I 所列语言中的部分单词的 DFA 及相关的语义过程
将表 I 单词集中的整常数改为无符号常数, 无符号常数的单词分类码助记符: UCON
描述无符号数的正规文法和状态转换图 :
无符号数的右线性文法 G1[无符号数 ]如下:
〈无符号数〉→ d〈余留无符号数〉
〈无符号数〉→ ·〈小数部分〉
〈无符号数〉→ d
〈余留无符号数〉→ d〈余留无符号数〉
〈余留无符号数〉→ ·〈十进小数〉
〈余留无符号数〉→
E〈指数部分〉
〈余留无符号数〉→
d
〈余留无符号数〉→
·
〈十进小数〉→
E〈指数部分〉
〈十进小数〉→
d〈十进小数〉
〈十进小数〉→ d
〈小数部分〉→
d〈十进小数〉
〈小数部分〉→ d
〈指数部分〉→
d〈余留整指数〉
〈指数部分〉→
+〈整指数〉
〈指数部分〉→
-〈整指数〉
〈指数部分〉→ d
〈整指数〉→ d〈余留整指数〉
〈整指数〉→ d
〈余留整指数〉→
d〈余留整指数〉
〈余留整指数〉→
d
图所示为上述文法的状态转换图,其中编号
0、1、2、, 、 6 分别代表非终结符
号 无符号数 、余留无符号数 、十进小数 、小数部分 、指数部分 、整指数 及 余留整指数 。
文法 G1[无符号数 ]的状态转换图
包含语义处理过程的识别无符号数的状态矩阵
三、源程序
#includestdio.h
#includectype.h
#includestdlib.h
#includestring.h
#includemath.h
#define BEGIN 1
#define END
2
#define IF
3
#define THEN
4
#define ELSE
5
#define ID
6
#define INT
7
#define LT
8
#define LE
9
#define EQ
10
#define NE
11
#define GT
12
#define GE
13
#define PL
14
#define MI
15
#define MU
16
#define DI
17
#define IS
18
#define TOKEN_SIZE 64
#define TAB_SIZE 5
char TOKEN[TOKEN_SIZE];
extern int lookup(char *);
extern void out(int ,char*);
extern void report_error();
int GetChar(void);
int EXCUTE(int,int);
int LEX(void);
#define LETTER 0
#define DIGIT 1
#define POINT 2
#define OTHER 3
#define POWER 4
#define PLUS 5
#define MINUS 6
#define ClassNo 100
#define ClassOther 200
#define EndState -1
int w,n,p,e,d;
int Class;
int ICON;
float FCON;
static int CurrentState;
char ch;
//信息表保存 5 个关键字
typedef struct
{
int ad;
char id[6];
}info_ele;
info_ele Tab[TAB_SIZE]={{1,begin},{2,end},{3,if},{4,then},{5,else}}; void scanner_example(FILE *fp) //扫描器函数 {
int i,c;
ch=fgetc(fp)
您可能关注的文档
- 汉字书写比赛总结.docx
- 江苏省兴化市高一英语上学期好题集完型填.docx
- 江苏省如皋市2018学年八年级物理第二学期期末考试卷苏科版.docx
- 江苏省常州市四星级重点高中2018届高考数学数列与向量冲刺复习单元卷含解析.docx
- 江苏省常州市花园中学八年级物理下册浮力巩固练习新.docx
- 江苏省扬州市二年级数学下学期期中试卷无答案.docx
- 江苏省无锡市梅里中学2018学年七年级数学上学期.docx
- 江苏省无锡市滨湖中学九年级物理上册12.2内能热传递学案苏科版.docx
- 江苏省江阴初级中学2018届九年级英语上学期期中.docx
- 江苏省沭阳银河学校2018高一生物第一学期第一次阶段检测试卷苏教版.docx
- 中国国家标准 GB/T 6675.9-2025玩具安全 第9部分:化学及类似活动的实验玩具.pdf
- 《GB/T 6675.9-2025玩具安全 第9部分:化学及类似活动的实验玩具》.pdf
- GB/T 46975-2025婴童用品 便携式婴儿睡篮技术要求.pdf
- 中国国家标准 GB/T 46975-2025婴童用品 便携式婴儿睡篮技术要求.pdf
- 《GB/T 46975-2025婴童用品 便携式婴儿睡篮技术要求》.pdf
- 《GB/T 6675.14-2025玩具安全 第14部分:指画颜料要求和测试方法》.pdf
- GB/T 6675.14-2025玩具安全 第14部分:指画颜料要求和测试方法.pdf
- 中国国家标准 GB/T 6675.14-2025玩具安全 第14部分:指画颜料要求和测试方法.pdf
- 中国国家标准 GB/T 33772.3-2025质量评定体系 第3部分:印制板及层压板最终产品检验及过程监督用抽样方案的选择和使用.pdf
- 《GB/T 33772.3-2025质量评定体系 第3部分:印制板及层压板最终产品检验及过程监督用抽样方案的选择和使用》.pdf
原创力文档

文档评论(0)