1 / 24
文档名称:

编译原理课程设计(语法分析程序).doc

格式:doc   大小:196KB   页数:24页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

编译原理课程设计(语法分析程序).doc

上传人:511709291 2016/11/17 文件大小:196 KB

下载得到文件列表

编译原理课程设计(语法分析程序).doc

相关文档

文档介绍

文档介绍:编译原理实验报告题目:对下面的文法对象,使用c语言构造它的预测分析程序;:算术表达式?项|算术表达式+项|算术表达式-项项?因式|项*因式|项/因式因式?变量|(算术表达式)变量?字母字母?A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z一、分析语法分析部分我们我们采用ll(1)方法实现,采用ll(1)方法实现语法发分析要求文法满足以下要求:一个文法能否用确定的自顶向下分析与文法中相同左部的每个产生式右部的开始符号集合有关,当有右部能=*=>ε时则与其左部非终结符的后跟符号集合也有关,此外在产生式中不存在左递归即经过压缩,无左递归,无回溯。它的基本思想是从左到右扫描源程序,同时从识别符号开始生成句子的最左推导,并只向前查看一个输入符号,便能唯一确定应选择的规则。下面将确切地定义满足确定的自顶向下分析条件的文法即LL(1)文法及LL(1)文法的判别并介绍如何对非LL(1)文法进行等价变换问题,也就是消除一个文法中的左递归和左公共因子。注意:一个文法中含有左递归和左公共因子绝对不是LL(1)文法,所以也就不可能用确定的自顶向下分析法,对此结论可以证明。然而,某些含有左递归和左公共因子的文法在通过等价变换把它们消除以后可能变为LL(1)文法,但需要用LL(1)文法的定义判别,也就是说文法中不含左递归和左公共因子,只是LL(1)文法的必要条件。LL(1)文法的定义(5种定义):一个文法符号串的开始符号集合定义如下:=(VT,VN,S,P)是上下文无关文法,α是任意的文法符号串,FIRST(α)是从α推导出的串的开始符号的终结符集合。。。。FIRST(α)={a|α=*=>aβ,a∈VT,α,β∈V*}若α=*=>ε,则规定ε∈FIRST(α).当一个文法中相同左部非终结符的右部存在能=*=>ε的情况则必须知道该非终结符的后跟符号的集合中是否含有其它右部开始符号集合的元素。为此,我们定义一个文法非终结符的后跟符号的集合如下:=(VT,VN,S,P)是上下文无关文法,A∈VN,S是开始符号FOLLOW(A)={a|S=*=>μAβ,且a∈VT,a∈FIRST(β),μ∈VT*,β∈V+}若S=*=>μAβ,且βε,则#∈FOLLOW(A)。也可定义为:FOLLOW(A)={a|S=*=>…Aa…,a∈VT}若有S=*=>…A,则规定#∈FOLLOW(A)这里我们用'#'作为输入串的结束符,或称为句子括号,如:#输入串#。→α,A∈VN,α∈V*,若α==>ε,则SELECT(A→α)=FIRST(α)如果α=*=>ε,则SELECT(A→α)=FIRST(αε)∪FOLLOW(A)。FIRST(αε)表示FIRST(α)的非{ε}元素。更进一步可以看出能够使用自顶向下分析技术必须使文法满足如下条件,我们称满足条件的文法为LL(1)文法,其定义为:(1)文法的充分必要条件是:对每个非终结符A的两个不同产生式,A→α,A→β,满足SELECT(A→α)∩SELECT(A→β)=空,其中α,(1)文法也可定义为:一个文法G是LL(1)的,当且仅当对于G的每一个非终结符A的任何两个不同产生式A→α|β,下面的条件成立:①FIRST(α)∩FIRST(β)=空,也就是α和β推导不出以某个相同的终结符a为首的符号串;它们不应该都能推出空字ε.②假若βε那么,FIRST(α)∩FOLLOW(A)=空也就是,若βε则α所能推出的串的首符号不应在FOLLOW(A)中。二、算法该程序可分为如下几步:(1)读入文法(2)判断正误(3)若无误,判断是否为LL(1)文法(4)若是,构造分析表;(5)由总控算法判断输入符号串是否为该文法的句型。根据下面LL(1)文法,对输入串w:(i+i)*(i+i)+i*i进行LL(1)分析,要求如下:1、先手工建立LL(1)分析表;2、分析输入串,判断是否是语法上正确的句子,并输出整个分析过程。LL(1)文法G为:E→TE’E’→+TE’|εT→FT’T’→*FT’|εF→(E)|id分析算法:输入:串w和文法G的分析表M。输出:如果W属于L(G),则输出W的最左推导,否则报告错误。方法:开始时,#S在分析栈中,其中S是文法的开始符号,在栈顶;令指针ip指向W#的是LL(1)文法?判断句型报错结束第一个符号;repeat让X等于栈顶符号,a为ip所指向的符号;ifX是终结符号或#thenIfX=athen把X从栈顶弹出并使ip指向下一个输入符号elseerror()else/*X是非终结符号*/ifM[x,

最近更新

2024促销活动策划方案模板 6页

山东省烟草专卖局财务管理系统设计与实现的开.. 2页

山东海润投资集团发展战略研究的开题报告 2页

小学语文 部编版二年级上册第八单元《狐假虎威.. 7页

家族理事会成员职责 5页

财务工作2024年工作计划8篇 18页

幼儿园校本培训心得体会6篇 24页

天棚工程施工方案 6页

端午节社团活动策划书 7页

国家电网公司信息系统建转运实施细则 8页

早期认知主义学习理论与实验 27页

植物学第三版金银根的知识点汇总 4页

云南经贸外事职业学院是不是公办-河南经贸职业.. 2页

牙疼朋友圈说说心情 牙疼的幽默心情说说 2页

新的一天开始了早安语录 又是元气满满的一天的.. 2页

唯美句子迷(句子迷经典语录唯美简短) 2页

一建管理第三章进度(2)讲解 46页

二年级生字抄写本1电子版 5页

中国异基因造血干细胞移植治疗血液系统疾病专.. 10页

8种会要人命的隔夜菜,为了健康可别再吃了! 9页

2023年山东省临沂市中考生物试卷【附答案】 15页

通用质量分析报告模板范文 4页

肱骨骨折护理查房精简版 27页

呼吸内科一科一品优质护理汇报 30页

公园调研实习 8页

社区服刑人员思想汇报4篇 社区服刑人员思想汇.. 5页

《战略财务管理》 64页

混凝土拌合水PPT课件 45页

地盘真经 弥勒龙华正册真经 6页

检1-土建与精装交接检查表 3页