- 12
- 0
- 约6.03千字
- 约 7页
- 2022-04-15 发布于广西
- 举报
河南工业大学实验报告
课程名称 编译原理 实验项目 实验一 词法分析
院 系 信息科学与工程学院 专业班级 计科F1505班
姓 名 李 杰 学 号 201516010118
指导老师 阎 娟 日 期 2018.4.16
批改日期 成 绩
实验目的
深入理解有限自动机及其应用
掌握根据语言的词法规则构造识别其单词的有限自动机的方法
3.基本掌握词法分析程序的开发。
实验内容及要求
编制一个能够分析三种整数、标识符和主要关键字的词法分析器。
实验要求
1根据以下的正规式,编制正规文法,画出状态图
标识符 字母(字母|数字字符)*
十进制整数 0 | (1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)*
八进制整数 0(1|2|3|4|5|6|7)(0|1|2|3|4|5|6|7)*
十六进制整数 0x(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)*
关键字 if then else while do
2根据状态图,设计词法分析函数int scan( ),完成以下功能:
1) 从键盘读入数据,分析出一个单词。
2) 返回单词种别(用整数表示),
3) 返回单词属性(不同的属性可以放在不同的全局变量中)。
3编写测试程序,反复调用函数scan( ),输出单词种别和属性。
实验过程
eq \o\ac(○,1)词法的正规式描述
标识符 字母(字母|数字字符)*(ε|_|.)(字母|数字字符)*
十进制整数 (0|1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)*(ε|.)(0|1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)*
八进制整数 0(1|2|3|4|5|6|7)(0|1|2|3|4|5|6|7)* (ε|.)(0|1|2|3|4|5|6|7)(0|1|2|3|4|5|6|7)*
十六进制整数 0x(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)* (ε|.) (0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)*
运算符和分隔符 + - * / = ( ) ;
关键字 if then else while d
eq \o\ac(○,2)变换后的正规文法
(1)标识符
设字母的表示符为A(alpha),数字字符的表示符为N(num),则标识符的正规文法可以表示为:
id→AI
I→ε| AI | NI
J→ε|.I
(2)十进制数
S→0 | 1A | 2A | 3A | 4A | 5A | 6A | 7A| 8A | 9A
A→ε| 1AB | 2AB | 3AB | 4AB | 5AB | 6AB | 7AB | 8AB | 9AB
B→ε|.S
(3)八进制数
S→0A A→ 0B |1B | 2B | 3B | 4B | 5B | 6B | 7B
B→ε| 0BC |1BC | 2BC | 3BC | 4BC | 5BC | 6BC | 7BC
C→ε|.A
(4)十六进制数
S→0xM | 0XN
N→0M|1M |2M |3M |4M |5M |6M |7M |8M |9M |aM |bM |cM |dM |eM |fM |AM|BM|CM|DM|EM|FM|
M→ε|0M|R1MR |2MR |3MR |4MR |5MR |6MR |7MR |8MR |9MR |aMR |bMR |cMR |dMR |eMR |fMR |AMR|BMR|CMR|DMR|EMR|FMR|
R→ε|.N
(5)运算符和分隔符
S→+ | - | * | / | | | = | ( | ) | := | # | ;
(6)关键字
S→ if | then | else | while | do | switch | case | for
eq \o\ac(○,3)状态图
eq \o\ac(○,4)函数设计
int Iskey(string c){
原创力文档

文档评论(0)