从语法图到语法分析程序的转换法则B3.PPT

从语法图到语法分析程序的转换法则B3.PPT

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
从语法图到语法分析程序的转换法则B3

3. PL/0语法图 block—分程序 statement—语句 condition---条件 expression---表达式 term---项 factor---因子 4.判别是否符合两条限制规则 方法: 1)找出图中每一个分支点,考察每一个分支点的各个分支的头符号是否相异 2)找出图中每一个透明结构,考察每个透明结构,考察每个透明结构的头符号集合与其跟随符号集合是否相异 结论:PL/0语言文法符合两条限制规则,可以应用简单辨认算法的LL(1)文法。 编译原理实践 --给定语法的语法分析程序构造 从语法图判断两条限制规则: 找出图中每一个分支点,考察每一个分支点的分支的头符号是否相异 找出图中每一个透明结构(无需读入一个符号就可以贯通),考察每一个透明结构的头符号集合和其跟随符号集合是否相异。 例:P36,题目3 给定语法的语法分析程序构造 语法分析程序的主程序 语法图到语法分析程序的转换法则 构造实例 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 第二步:判别符合两条限制规则 第三步:根据转换法则,采用自顶向下、逐步求精的方法系统地写出语法分析程序(Pascal实现,书P44) 写出主程序 写出过程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’ -*FT’|/FT’|ε F-(E) | i 第一步:画出语法图 第二步:判别符合两条限制规则 也可以通过计算相同左部产生式的SELECT集合,因交集为空,所以文法是LL(1)文法 SELECT(E-TE’)=FIRST(TE’)=FIRST(T)={ (,i } SELECT(E’-+TE’)={ + } SELECT(E’-?TE’)={ ? } SELECT(E’-ε)={ε,),?} SELECT(T-FT’)={(,i} SELECT(T’-*FT’)={ * } SELECT(T’- ∕FT’)={ ∕ } SELECT(T’-ε)={ε,+,?,),?} SELECT(F-(E) )={ ( } SELECT(F-i)={ i } 第三步:构造文法的递归下降分析程序(C语言实现) 编译执行示例 补充说明 该方法也称作“递归下降分析法”,适合分析比较简单的文法,易于手工实现,这是

文档评论(0)

2105194781 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档