955-编译原理实践--给定语法的语法分析程序构造.pptVIP

955-编译原理实践--给定语法的语法分析程序构造.ppt

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
program Parser(input,output); var ch:char; procedure error; begin writeln(error!);halt; end; procedure A; begin if ch=( then begin read(ch);A; while ch=+ do begin read(ch);A;end; if ch=) then read(ch) else error; end else if ch=x then read(ch) else error; end; begin read(ch);A;if ord(ch)13 then error else writeln(good!); end. “递归下降分析法”的缺点:对文法要求高,必须满足LL(1)文法,当然在某些语言中个别产生式的推导不满足LL(1)而满足LL(2)时,也可以采用多向前扫描一个符号的办法;它的另一个缺点是由于递归调用多,所以速度慢占用空间多,尽管这样,它还是许多高级语言,如Pascal,C等编译系统常常采用的语法分析方法。 说明2 上述语法分析程序中读入的最小单元是ch(字符),在实际的语法分析程序中,读入的最小单元是sym(token)。 要注意子程序之间的接口,在程序编制时进入某个非终结符的分析程序时其所要分析的语法成分的第一个符号已经读入ch/sym中。在分析子程序的出口前,一定要读取下一个符号到ch/sym中。 编译原理实践 --给定语法的语法分析程序构造 从语法图判断两条限制规则: 找出图中每一个分支点,考察每一个分支点的分支的头符号是否相异 找出图中每一个透明结构(无需读入一个符号就可以贯通),考察每一个透明结构的头符号集合和其跟随符号集合是否相异。 给定语法的语法分析程序构造 语法分析程序的主程序 语法图到语法分析程序的转换法则 构造实例 1.语法分析程序的主程序 假如一个文法满足两条语法限制规则,则其语法分析程序可以非常系统化地从这个图系统推演、构造出来 每一个语法图对应的一个个程序过程要置于一个主程序环境里 主程序结构: program Parser(input,output); var ch:char; begin read(ch); S end. 2.从语法图到语法分析程序的转换法则B1 if ch in L1 then P(S1) else if ch in L2 then P(S2) else … if ch in Ln then P(Sn) else error 其中Li表示集合first(Si) 从语法图到语法分析程序的转换法则B1a if ch=“x1” then begin read(ch);P(S1) end else if ch=“x2” then begin read(ch);P(S2) end else … if ch=“xn” then begin read(ch);P(Sn) end else error; x1 S1 x2 S2 xn Sn … 从语法图到语法分析程序的转换法则B2 begin P(S1);P(S2);…;P(Sn);end S1 S2 Sn 从语法图到语法分析程序的转换法则B3 while ch in L do P(S) 从语法图到语法分析程序的转换法则B3a while ch=“x” do begin read(ch); P(S); end; 从语法图到语法分析程序的转换法则B4 if ch in L then P(S) S 从语法图到语法分析程序的转换法则B5: 矩形图表示的非终结符号可以翻译成调用相应的过程 用圆表示的终结符号x可以翻译成一条读入语句: If ch=“x” then read(ch) else error 3. 构造实例 画出语法图 证明符合两条限制规则,是确定的图系统 采用自顶向下、逐步求精方法系统地写出语法分析程序 例1:简单的例子 文法: A=“x”|”(”B”)” B=AC C={“+”A} 第一步:画出语法图: ( A ) A + x A 第二步:判别符合两条限制规则 第三步:根据转换法则,采用自顶向下、逐步求精的方法系统地写出语法分析程序 写出主程序 写出过程A 逐步求精 归纳、优化 例2:稍复杂一点的例子 编程识别由下列文法所定义的表达式的递归下降语法分析器。 E-E+T | E-T | T T-T*F | T/F |F F-(E) | i 输入:含一个表达式的文本文件。 输出:分析成功或不成功信息。 存在左递归,用直接改写法消除左递归,得到如下: E-TE’ E’ -+TE’|?TE’|ε T-FT’ T’

文档评论(0)

小玉儿 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档