下载此文档

软件系统课程设计---操作系统:用银行家算法实现资源分配.doc


文档分类:IT计算机 | 页数:约18页 举报非法文档有奖
1/18
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/18 下载此文档
文档列表 文档介绍
青岛农业大学
理学与信息科学学院
软件系统课程设计报告
设计题目操作系统:用银行家算法实现资源分配
编译原理:词法分析器
学生专业班级
学生姓名(学号)
设计小组其他同学姓名(学号)
指导教师
完成时间 2012年6月4日
设计地点信息楼139机房
2012年 6 月 7 日
(二)编译原理部分
一、实****题目
将词法分析器设计成单独的程序或供语法分析器调用的子程序,功能包括:要求能够识别数字、标识符、关键字、运算符等。
二、设计思路及算法描述
词法分析程序的功能:
输入源程序,输出单词符号,如图所示:
词法分析器
源程序 单词符号
处理过程:在扫描源程序字符串时,一旦识别出关键字、分隔符、标识符、无符号常数中之一,即以单词形式(各类单词均采用相同的结构,即二元式编码形式)输出。每次调用词法分析程序,它均能自动继续扫描下去,形成下一个单词,直至整个源程序全部扫描完毕,并形成相应的单词串形式的源程序。
本程序规定:
(1)关键字"begin","end","if","then","else","while","write","read",
"do", "call","const","char","until","procedure","repeat"
(2)运算符:"+","-","*","/","="
(3)界符:"{","}","[","]",";",",",".","(",")",":"
(4)其他标记如字符串,表示以字母开头的标识符。
(5)空格、回车、换行符跳过。
对于一段可能的输入代码,其结果在屏幕上显示如下:
( 1 , 无符号整数)
( begin , 关键字)
( if , 关键字)
( +, 运算符)
( ; , 界符)
( a , 普通标识符)
关键字或标识符的判断:读入一串字符,将ASCII码在字母范围的字符存入数组中,将该数组与设置好的关键字比较,如果相等则输出是关键字,否则继续读入直至下一字符既非数字也非字母,输出为标识符;
数字的判断:若跟在字母后面则一起输出为标识符,否则输出为数字;
界符、运算符的判断:直接判断其ASCII码
运行过程为:
:把源文件一个字符一个字符的读入词法分析程序设置的输入字符结构体数组中(输入缓冲区),读入过程要删除多余的空格;
, 编码为二元式.:二元式采用结构体数组存储, 把单词类型和词元记录下来。
为了方便和适用起见,首先建立一个文本,进而在文本中进行pascal语言输入。输入完毕之后,就可以进行从文本中取字符,进而把它放在一个数组中。之后再数组中进行取字符,之前要定义一个数组,定义一个指针指向数组,为first。之后就用一个循环依次从数组中取字符,假如是字符就放在buf中,first++;一次进行下去,期间要时刻与关键字指针数组进行比较如果相等就立马输出,并显示是关键字此时将buf置为初值,first重新指向首地址。
流程图
读取字符
输出”关键字”
是关键字
是不可显示符
输出”标识符”
Y
N
Y
N Y
是字母或数字
是字母
读取字符
Y


N Y
是数字
输出”常数”
是数字
N
读取字符
N
N
是界符
Y
输出”界符”

ERROR
是‘=’
是‘:’
读取字符
N N
Y
输出”运算符”
是运算

Y


N
ERROR

三、程序代码:
#include <iostream>
#include<string>
using namespace std;
#define  MAX 22          
char ch =' ';
string key[15]={"begin","end","if","then","else","while","write","read",
"do", "call","const","char","until","procedure","repeat"};
int Iskey(string c){         //关键字判断
   int i;
   for(i=0;i<MAX;i++) {
      if(key[i].compare(c)==0) return 1;
       } 
    return 0;
}
int IsLetter(char c) {        //判断是否为字母
    if(((c<='z')&&(c>='a'))||((c<='Z')&&(c>='A'))) return 1;
 

软件系统课程设计---操作系统:用银行家算法实现资源分配 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数18
  • 收藏数0 收藏
  • 顶次数0
  • 上传人rdwiirh
  • 文件大小254 KB
  • 时间2018-06-15