- 12
- 0
- 约5.97千字
- 约 10页
- 2018-01-02 发布于河南
- 举报
编译原理-词法分析器-仅供参考-不可滥用!
青岛理工大学
课程实验报告
课程名称 编译原理 班级 实验日期 姓名 未名 学号
实验成绩 实验名称 实验一 词法分析 实验目的 设计、编制并调试一个词法分析程序,加深对词法分析原理的理解。 实验要求 1. 待分析的简单的词法
(1)关键字:
begin if then while do end
所有的关键字都是小写。
(2)运算符和界符
: = + - * / = = = ; ( ) #
(3)其他单词是标识符(ID)和整型常数(SUM),通过以下正规式定义:
ID = letter (letter | digit)*
NUM = digit digit*
(4)空格有空白、制表符和换行符组成。空格一般用来分隔ID、SUM、运算符、界符和关键字,词法分析阶段通常被忽略。
2. 各种单词符号对应的种别码:
表2.1 各种单词符号对应的种别码
单词符号
种别码
单词符号
种别码
bgin
1
:
17
If
2
:=
18
Then
3
20
wile
4
21
do
5
=
22
end
6
23
lettet(letter|digit)*
10
=
24
dight dight*
11
=
25
+
13
;
26
—
14
(
27
*
15
)
28
/
16
#
0
++
1313
!
31
--
1414
!=
3125
==
2525
可继续扩充…
3. 词法分析程序的功能:
输入:所给文法的源程序字符串。
输出:二元组(syn,token或sum)构成的序列。
其中:syn为单词种别码;
token为存放的单词自身字符串;
sum为整型常数。
例如:对源程序begin x:=9: if x9 then x:=2*x+1/3; end #的源文件,经过词法分析后输出如下序列:
(1,begin)(10,‘x’)(18,:=)(11,9)(26,;)(2,if)…… 实验环境 Visual C++6.0
Win7/Windows XP
实
验
内
容 根据实验要求,设计一个词法分析器,能根据不同的程序,进行分析,获得各标识符的分类表示。对设计的词法分析程序进行验证,实验几组程序编码,判断是否满足要求
(1).主程序示意图
char *rwtab[]={begin,if,then,while,do,end,KEY_WORD_END};
//关键字表
否
是
(2).扫描子程序示意图
首先设置3个变量:①token用来存放构成单词符号的字符串;②sum用来整型单词;③syn用来存放单词符号的种别码
调试过程及实验结果
测试一
输入begin x:=9: if x9 then x:=2*x+1/3; end ;# 后经词法分析输出如图所示:
测试二
输入begin int m=3;n=2;if(m=n) ^s=m;n=m%n;end ;# 后经词法分析输出如图所示:
附
录
(源代码)
#include stdio.h //头文件声明
#include string.h //头文件声明
#define KEY_WORD_END key word end//定义关键字结束标志
#define KEY_WORD_SIZE 6 //定义关键字表中的关键字数目
char input[255] ; /*字符输入缓冲区*/
char token[255]; /*单词缓冲区---用来存放构成单词符号的字符串*/
char *rwtab[]={begin,if,then,while,do,end,KEY_WORD_END};//关键字表
char ch; /*字符*/
int syn; /*单词符号种别码*/
int sum; /*存放整数型单词*/
int w_length; /*所读取的单个单词长度*/
int s_length; /*当前所读取的字符串长度*/
int n; //定义简单变量
int IsLetter(char c) //判断是否为字母
{
if(((c=z)(c=a))||((c=Z)(c=A)))
return 1;
else
return 0;
}
int IsDigit(char c) //判断是否为数字
{
if(c=0c=9)
return 1;
else
return 0;
}
int IsBlankSpaceOrNextL
您可能关注的文档
最近下载
- 上海大学2022-2023学年第1学期《高等数学(上)》期末考试试卷(A卷)附参考答案.pdf
- 中国教育行业人才流动与薪酬水平_2025年12月.docx
- 2024全国初中数学联赛初二卷 .pdf VIP
- 全国初中数学联合竞赛真题及答案(初二组)2015-年.pdf VIP
- AIAG-VDA-SPC手册-Yellow-Volume2026年2月第一版 中文.pdf VIP
- 美甲美睫投资回报2026年培训课件.pptx VIP
- 中国王氏家谱字辈大全.doc VIP
- 《Michael_Porter_Creating_Shared_Value》.pdf VIP
- 直播带货虚假宣传法律规制研究.pdf
- 新大洲本田MS01说明书用户手册.pdf
原创力文档

文档评论(0)