一、实验目的
基本掌握计算机语言的词法分析程序的开发方法。
二、实验内容
编制一个能够分析三种整数、标识符、主要运算符和主要关键字的词法分析程序。
三、实验要求
1.根据以下的正规式,编制正规文法,画出状态图;
基本要求:
单词类别 |
词法格式 |
标识符 |
<字母>(<字母>|<数字符号>)* |
十进制整数 |
(1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9) *|0 |
八进制整数 |
0o(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 |
附加要求:
单词类别 |
词法格式 |
标识符 |
<字母>(<字母>|<数字符号>)*(ε|_|.)(<字母>|<数字字符>)* |
十进制数 |
(1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9) *|0(ε|.(0|1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)*) |
八进制数 |
0o(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)*) |
2. 根据状态图,设计词法分析函数int scan( ),完成以下功能:
1)从键盘读入数据,分析出一个单词。
2)返回单词种别(用整数表示),
3)返回单词属性(不同的属性可以放在不同的全局变量中)。
3.编写测试程序,反复调用函数scan( ),输出单词种别和属性。
四. 实验环境
1、Windows操作系统
2、GCC(C99)编译器
五.实验步骤
1、根据状态图,设计词法分析算法。
(1)正规表达式
直接选择实现附加要求,对应的正规表达式即为实验要求所给出的内容:
单词类别 |
词法格式 |