编译原理 第六章 上机辅导.ppt

编译原理 第六章 上机辅导.ppt

ID:51593432

大小:717.50 KB

页数:52页

时间:2020-03-25

编译原理 第六章 上机辅导.ppt_第1页
编译原理 第六章 上机辅导.ppt_第2页
编译原理 第六章 上机辅导.ppt_第3页
编译原理 第六章 上机辅导.ppt_第4页
编译原理 第六章 上机辅导.ppt_第5页
资源描述:

《编译原理 第六章 上机辅导.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、1编译原理上机内容上机目的题目与要求参考解决方案数据库存储结构CREATETABLE词法语法分析SELECT词法语法分析21上机目的通过做上机题加深对编译原理和数据库管理系统的理解,巩固所学知识。学会使用LEX&&YACC进行词法语法分析;学会如何编写一个简单的SQL解释器;数据库管理系统与编译原理的联系:我们在vc++下编写程序,可是数据库的语言是SQL语句,vc++的编译器是无法识别SQL语句的,所以我们要动手实现一个简单的SQL解释器。这就要结合编译原理所学的知识。32题目与要求题目:简易数据库管理系统的实现编写一个简单的数据库管理系统,该系统

2、可以接受一些基本SQL语句,经过词法和语法分析后,解释该SQL语句,并进行相应操作。目的:1)通过自己动手实现数据库管理系统,掌握如何通过LEX&&YACC等工具来实现词法语法分析;2)深入理解数据库管理系统。解释器的实现方法:利用编译器编写工具LEX&&YACC提供的方式规定SQL语句的词法和语法,用C/C++语言编写解释器的语义;或者完全手动编写词法语法分析器。42题目与要求两种方法的语义部分基本相同,主要区别在于词法和语法分析器的构造是手工完成还是借助于工具完成。词法分析器语法分析器语义子程序C/C++编译器SQL解释器(c)工具生成词法分析器

3、(*.l文件)语法分析器(*.y文件)LEX编译器YACC编译器C/C++编译器语义子程序(b)手工编写SQL语句SQL解释器SQL语句执行结果(a)解释器工作原理SQL解释器52题目与要求SQL解释器支持如下语句及功能:1.CREATEDATABASE创建数据库2.USEDATABASE选择数据库3.CREATETABLE创建表4.SELECTFROMWHERE查询5.INSERTINTOVALUES插入元组6.DELETE删除元组7.DROPTABLE删除表8.SHOWTABLES显示所有表的名称9.QUIT退出数据库10.支持的数据类型:INT

4、CHAR(N)11.选作项目:主码、外码、索引、安全性、事务、日志等等63参考解决方案SnoSnameSsexSage03061384张三男2303061386李四男23上边这个数据库包括哪些信息?表名,列数,列长度,每一列的列名,每一列的列类型,每行的数据长度,每行的数据,以及每列在表中的顺序。CnoCname00001数据库00002编译原理学籍管理数据库学生表课程表73.1数据库存储结构设计数据库表字典表数据库列字典表数据库各个表的数据表名(20B)表ID(4B)列数(4B)行长度(4B)起始块位置(4B)保留字段(4B)Student1435

5、1NULLCourse22252NULL表ID(4B)列ID(4B)列名(20B)列类型(4B)列长度(4B)列偏移量(4B)保留字段(4B)11Sno180NULL21Cno150NULL83.1数据库存储结构设计综上所述,数据库的信息分为三部分:1.数据库表字典表2.数据库的列字典表3.数据库各个表的数据我们可以发现表字典表,列字典表和学生表,课程表一样都是表,所以表字典表和列字典表都可以按照表的方式来存储。这会不会造成无限递归?答:不会,因为表字典表、列字典表两者与学生表有一个重要的区别。表字典表,列字典表的结构是固定的。93.1数据库存储结构

6、设计数据库存储结构设计参考方案:每个数据库均包含一个.db文件和一个.dat文件。1.以.db为后缀的文件负责存储:Max_tab_id(4B)表字典表的起始块firsttable列字典表的起始块firstcolumnMax_tab_id(4B)表字典表的起始块(4B)列字典表的起始块(4B)103.1数据库存储结构设计2.以.dat为后缀的文件负责存储所有表的具体数据。数据文件由多个数据块组成,每个数据块大小为1024B,即1KB。数据块分为数据块头部和数据区。数据块头部用来存储数据块的说明信息,数据区用来存储表中的数据。每个数据块的结构如下:Fl

7、agnext_block(4B)next_free_addr(4B)last_block(4B)保留(12B)数据区注:Flag标志该数据块是否已被占用。数据区格式:Flag数据Flag数据Flag数据注:Flag标志该数据是否有效。数据块头部占24B,数据区为1000B。现对数据块头部的结构体变量说明如下:flag:标志该数据库是否被用,flag=1表示数据块已被用,flag=0表示未被用。next_block:表示与该数据块连接的下一数据块的位置。next_free_addr:表示该数据块的空闲起始位置。last_block:值为1表示是最后一个

8、数据块,为0表示后面还有数据块。如此,各表的数据分别存储在不同的数据块,同一个表的数据块用指针串接。形成的数

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。