編譯原理實驗報告-DBMS的設(shè)計與實現(xiàn)_第1頁
編譯原理實驗報告-DBMS的設(shè)計與實現(xiàn)_第2頁
編譯原理實驗報告-DBMS的設(shè)計與實現(xiàn)_第3頁
編譯原理實驗報告-DBMS的設(shè)計與實現(xiàn)_第4頁
編譯原理實驗報告-DBMS的設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、編譯原理上機報告DBMS勺設(shè)計與實現(xiàn)完成時間:20年 月日精品文檔知識共享1 .項目概況31.1 基本目標31.2 完成情況31.3 邏輯結(jié)構(gòu)與物理結(jié)構(gòu)(由于語義制導(dǎo)沒做,所以這部分沒寫) 61.4 語法結(jié)構(gòu)與數(shù)據(jù)結(jié)構(gòu)(由于語義制導(dǎo)沒做,這里只給出語法結(jié)構(gòu)).61.5 執(zhí)行流程71.6 功能測試72 .總結(jié)與未來工作92.1 未完成功能92.2 未來實現(xiàn)方案 91 .項目概況1.1 基本目標本次項目主要的目標是 DBMS的設(shè)計與實現(xiàn),即完成 SQL語句的語法制導(dǎo)解釋,通過這次項目,加深對編譯原理課程的理解,掌握詞法與語法的制導(dǎo)過程,熟悉Lex和Yacc的使用。1.2 完成情況目前完成的功能是S

2、QL詞法分析器和語法分析器,下面介紹一下具體的實現(xiàn)情況。1 .完成的語句:CREATE DATABASES xCREATE TABLE xSHOW TABLESDROP TABLESINSERT INTO x VALUES xSELECT x FROM xSELECT x FROM x WHERE xSELECT x FROM x GROUP BY xDELETE FROM x WHERE xUPDATE x SET x WHERE x2 .識別出的關(guān)鍵字如下:ID NUMBER CREATE TABLE CHAR INT SELECT GROUP FROM WHERE AND OR DROP

3、 SHOWINSERT INTO BY V ALUES DATABASE TABLES UPDATE DELETE SET OR AND3 .識別出的符號如下:<>=()!,;*.4 .識別標示符的說明:0-9的 NUMBER0-9a-zA-Z的字符型。5.lex進行的詞法分析如下:%#include "myparser.h"%char a-zA-Z_digit 0-9digits digit+optional_fraction ("."digits)?optional_exponent (E+-?digits)?%+ ;digitsopti

4、onal_fractionoptional_exponent return NUMBER;/SQL關(guān)健字的識別/"CREATE" return CREATE;"DATABASE" return DATABASE;"TABLE"return TABLE;"GROUP"return GROUP;"BY"return BY;"CHAR"return CHAR;"INT"return INT;"SELECT"return SELECT;&quo

5、t;FROM"return FROM;"WHERE" return WHERE;"AND"return AND;"OR"return OR;"DROP"return DROP;"SHOW"return SHOW;"INSERT"return INSERT;"UPDATE"return UPDATE;"DELETE"return DELETE;"TABLES"return TABLES;"INTO&

6、quot;return INTO;"VALUES"return V ALUES;"SET"return SET;char(char|digit)* return ID;/對特殊符號的識別"<"return '<'">"return '>'"="return '='"!"return'!'"("return'('")"return

7、9;)'","return','""return''"*"return '*'"."return'.'%6 .yacc進行的語法分析如下:statements : statements statement|statement;statement : createdatabase |createtable |selectsql|droptable | showtables | insertsql | deletesql | updatesql;對

8、于所給語句分別寫出它們的文法如下:CREATE DATABASE 的文法:createdatabase:CREATE DATABASE database ''printf("create database!");database:。CREATE TABLE 的文法:createtable : CREATE TABLE table '(' fieldsdefinition ')''' printf("create table!n");table : ID;fieldsdefinition :

9、field_type | fieldsdefinition ',' field_type;field_type : field type;field : ID;type : CHAR '('NUMBER ')' | INT;SELECT的文法:selectsql : SELECT fields_star FROM tables ''printf("you use SELECT!n");| SELECT fields_star FROM tables WHERE conditions '' pri

10、ntf("you use SELECT!n"); | SELECT fields_star FROM tables GROUP BY fields_star ''printf("you use SELECT!n");fields_star : table_fields | '*'table_fields : table_field | table_fields ',' table_field;table_field : field | table '.' field;tables : tab

11、les ',' table | table;conditions : condition | '(' conditions ')'| conditions AND conditions | conditions OR conditions;condition : comp_left comp_op comp_right;comp_left : table_field;comp_right: table_field | NUMBER;comp_op : '<' | '>' | '=' |

12、'!''='DROP 語句的文法:droptable : DROP table '' printf("you drop table!n");SHOW TABLES 語句的文法:showtables : SHOW TABLES '' printf("show all tables!n");INSERT語句的文法:insertsql :INSERT INTO table '(' fieldname ')' V ALUES '(' fieldvalu

13、es ')''' printf("insert data successfully!n"); |INSERT INTO table V ALUES '(' fieldvalues ')''' printf("insert data successfully!n");fieldname : field | fieldname ',' field;fieldvalues : fieldvalue | fieldvalues ',' fieldval

14、ue;fieldvalue : ID | NUMBER;DELETE 語句的文法:deletesql : DELETE FROM table WHERE conditions '' printf("delete table!n");UPDATE 語句的文法:updatesql : UPDATE table SET condition WHERE conditions '' printf("update table!n");7 .語義制導(dǎo):這部分目前還沒有完成。1.3 邏輯結(jié)構(gòu)與物理結(jié)構(gòu)(由于語義制導(dǎo)沒做,所以這部分沒寫)1

15、.4 語法結(jié)構(gòu)與數(shù)據(jù)結(jié)構(gòu)(由于語義制導(dǎo)沒做,這里只給由語法結(jié)構(gòu))逐條一一說明增加SQL語句的語法結(jié)構(gòu)與數(shù)據(jù)結(jié)構(gòu)。語法結(jié)構(gòu)用產(chǎn)生式說明,其中非終結(jié)符的屬性用結(jié)構(gòu)體表示,所用數(shù)據(jù)結(jié)構(gòu)需要說明,并且最后用 圖形說明整個SQL語句的數(shù)據(jù)結(jié)構(gòu)。CREATE語句的產(chǎn)生式語法結(jié)構(gòu):createsql: CREATE TABLE table '(' fieldsdefinition ')'''SELECT語句的產(chǎn)生式語法結(jié)構(gòu):selectsql : SELECT fields_star FROM tables ''| SELECT fields_

16、star FROM tables WHERE conditions ''| SELECT fields_star FROM tables GROUP BY fields_star ''DROP語句的產(chǎn)生式語法結(jié)構(gòu):droptable : DROP table ''SHOW TABLES語句的產(chǎn)生式語法結(jié)構(gòu):showtables : SHOW TABLES ''INSERT語句的產(chǎn)生式語法結(jié)構(gòu):insertsql :INSERT INTO table '(' fieldname ')' VALUES

17、'(' fieldvalues ')'''|INSERT INTO table VALUES '(' fieldvalues ')'''DELETE語句的產(chǎn)生式語法結(jié)構(gòu):deletesql : DELETE FROM table WHERE conditions ''UPDATE語句的產(chǎn)生式語法結(jié)構(gòu):updatesql : UPDATE table SET condition WHERE conditions ''1.5 執(zhí)行流程逐條一一說明增加SQL語句的執(zhí)行流程,

18、并且配以流程圖。流程中涉及到的函數(shù)需要對其名稱、說明、輸入?yún)?shù)、輸出參數(shù)、執(zhí)行流程進行一一說明。函數(shù)名稱:CreateValueIndex(int datasetID, int docID)函數(shù)說明:結(jié)合XML文檔的Schema信息對一個給定文檔上所有節(jié)點及屬 性值建立值索引輸入?yún)?shù):datasetID dataset編號,docID doc 編號輸出參數(shù):0表示正確,其他表示錯誤執(zhí)行流程:? ? ?1.6 功能測試測試所實現(xiàn)的SQL語句的基本功能,框架如下:測試1輸入:CREATE DATABASE mydb;輸出:create database!測試2輸入:CREATE TABLE Student(Sno CHAR(9), Sname CHAR(20), Ssex CHAR(2), Sage INT );輸出:create ta

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論