用c语言编译where子句2008年11月8日数据库表格SnumberSnameSsexSageSdept06311男21计算机06423女21微电子06671男19航空06712女20法律汇编语言基础文法G[S]:它可表示成形如(Vt,Vn,P,S)的四元式。其中是非终结符号集,是终结符号集,产生式和开始符号。递归文法:许多无限的语言仍可用有限个产生式既用有限的文法来描述。状态转换图:是一组矢线连接的有限个结点所组成的有向图。每个结点均代表在识别过程中扫描器所处的状态。左(右)推导:是指对一个推导序列中的每一直接推导,被替换的总是当前符号中的最左(右)非终结符号集。自顶向下的语法分析:就是对已给的输入符号串w,试图自上向下为它构造一棵语法树。递归向下法:是指对文法的每一个非终结符号,都根据相应产生式各候选式的结构,为其编写一个子程序,用来识别该非终结符号所表示的语法范畴。中间代码:是指把单词符号串形式的源程序转换为另一种等价的表示,而这种表示更便于以后的代码优化处理和目标代码生成工作。逆波兰表达式:我们通常把波兰表达式。后缀表达式称为逆波兰表达式。属性:一个文法符号X∈Vn∪Vt的语义性质称为该文法符号的语义属性(SemanticAttributes).常用的查询条件查询条件谓词比较,=,,=,==,!=确定范围BETWEENAND,NOTBETWEENAND确定集合IN,NOTIN字符匹配LIKE,NOTLIKE空值ISNULL,NOTISNULL多重条件AND,OR非终结符号集合和终结符号集合表序号符号值1NULL2=NULL3NULL4=NULL5==NULL6!=NULL7ANDVALUE8ORVALUE序号符号值9INVALUE10NOTINVALUE11LIKEVALUE12NOTLIKEVALUE13ISNLLVALUE14ISNOTNULLVALUE序号符号值15BETWEENANDNULL16NOTBETWEENANDNULL17SnumberVALUE18SnameVALUE19SsexVALUE20SageVALUE21SdeptVALUE非终结符号集合和终结符号集合表举例说明:我们用以下的例子简要地说明计算机如何检测和识别where子句。例1:Sage=22词法分析(LexicalAnalysis)词法分析:就是把依次输入的字符流转换成具有独立意义的单词流。确定的有限自动机(FA):我们把这五个元素组成的五元式M=(K,∑,f,So,Z)称为确定的有限自动机DFA(DeterministicFiniteAutomatic)。状态图:是由一组连接的有限个结点组成的有向图。每个结点均代表在识别过程或分析过程中扫描器所处的状态。正规文法:我们把左线性文法和右线性文法统称为3型文法。例1的状态图1234例1:Sage=22对于上面所列的文法G[where],若把where,Sage,=,22分别表示为编号1,2,3,4。whereSage=22语法分析(SyntaxAnalysis)语法分析:它是以单词流作为输入,并根据语言的与法规则,分析源程序的语法结构,而且对源程序进行语法检查。注意:在语法分析过程中,要消除大量的回溯和文法中的左递归。通常用递归下降法和LL(1)消除回溯。预测分析法LL(1):是一种比递归子程序发更为有效的自顶向下语法分析方法,采用此种方法的分析器由一张预测分析表、一个控制程序和一个分析站组成。自顶向下分析法:是对已给的输入符号串w,试图自上向下地为它构造一棵语法树。或者说,从文法的开始符号,为w构造一个最左推导。语法树whereSnumberSnameSsexSageSdept比较多重条件确定范围空值字符匹配确定集合====!=属性列的值查找的结果因绘制语法树比较复杂,我只绘制举例中的部分语法树,其余的语法树大部分雷同。语义分析(SemanticAnalysis)语义分析:是对文法中的每个产生式都附加一个语义动作或语义子程序,且在语法分析过程中,每当需要使用一个产生式进行推导或归约时,语法分析程序除了执行语法动作外,还要执行语义动作或语义子程序。属性文法AG:是一个形如AG=(G,A,R,B)的四元组,其中:G=(Vt,Vn,S,P)是已简化的前后无关文法;A=∈A(X)是属性的有限集合;R=∈R(P)是属性定义规则的有限集;而B=∈B(P)是条件的有限集。属性翻译文法ATG(AttributeTranslationGrammar):是具有以下性质的翻译文法,1.每个文法符号和语义动作符号X都有一个相关的有限集合A(X),且每个属性都有一个允许值的集合。2.每个非终结符号和动作符号的属性可分为继承性与综合性两类。3.继承性和综合性的定义规则各不相同。中间代码生成:是指把单词符号串形式的源程序转换成为另一种等价的表示,而且这种表示更便于以后的代码优化出来和目标代码的生成。目前常见的中介代码是逆波兰表示、三元式和四元式。语义树whereSnumberSnameSsexSageSdept比较多重条件确定范围空值字符匹配确定集合====!=属性列的值查找的结果语义子程序语义动作语义子程序语义动作语义子程序语义子程序语义动作语义子程序语义动作语义动作语义子程序语义动作语义动作语义子程序语义树:既为语法树的每个结点添加语义子程序和语义动作两个属性。目标代码(ObjectCodeGeneration)目标代码:将语义分析的中间代码作为输入,翻译成计算机能够直接识别的程序,通常翻译成汇编语言的形式。代码优化:首先主要考虑生成的目标代码占用尽量少的内存空间,其次考虑生成的目标代码的执行时间尽量短,尽量访问寄存器少访问内存。存储组织:是指目标代码在运行时对内存的使用和再使用的安排。尽量可能满足对内存使用的合理性和经济性,以及对程序中各个数据和实体访问的方便性。符号表:符号表一般由两栏组成,第一栏为名字栏,用来存放标识符或其内部码;另一栏为信息栏,一般由若干个子栏来记录与该项名字相对应的隔着那个属性和特征。目标代码的存储既例1:Sage=22最终的目标代码如何在堆栈中存储:SP栈底Sage图(a)POP()SP是栈顶指针,POP()是出栈函数,PUSH()是入栈函栈数,以上是目标代码如何入出栈。栈底图(c)图(b)=栈底SPSagePOP()PUSH()PUSH()执行后的结果栈底Sage结果栈底SPSagePUSH()PUSH()POP()小结通过学习数据库管理系统这门课程和做这次大作业,不仅使我加深了对数据库中的基本知识点的理解;而且也对汇编语言有肤浅的了解,它让我知道where子句如何被计算机检测和识别最终将运行的结果反馈给用户。在此,我对袁老是和我班的同学给予的帮助和支持深表谢意。课程设计运行结果谢谢2008年11月8日人有了知识,就会具备各种分析能力,明辨是非的能力。所以我们要勤恳读书,广泛阅读,古人说“书中自有黄金屋。”通过阅读科技书籍,我们能丰富知识,培养逻辑思维能力;通过阅读文学作品,我们能提高文学鉴赏水平,培养文学情趣;通过阅读报刊,我们能增长见识,扩大自己的知识面。有许多书籍还能培养我们的道德情操,给我们巨大的精神力量,鼓舞我们前进。