- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第04章 文法与语法分析 主要内容: 语法分析概述 文法 进行语法分析的几种方法 语法错误处理 4.1 语法分析 语法分析的任务 语法错误类别 语法错误的处理 语法分析方法分类 语法分析的任务:语法错误的发现及处理。 语法错误类别: 1)开始符和后继符错,语句(表达式)的开始符或后继符错; ?? 2)标识符(常量)错:如,该出现时未出现; ???? 3)括号类错误:如begin-end,case-end,if-then-else 不匹配; 4)运算符错:如,赋值语句左部变量后面不是赋值号; ?? 5)分隔符错 关键性错误是:括号类的配对错。 语法错误处理: 要求:1)报告错误出现的位置;2)修复错误并继续检查后续部分;3)执行开销不应太大。 修改策略:插入/删除/修改 如:A:=:=B+C; //删除:= A:=BC; //要插入+ 应急方式恢复:定义同步符号集合(分隔符,end,某些语句头符,else等),发现错误时,跳过一些Token,直到找到某个同步符号,再继续进行分析。 同步符号保证接下来的分析是从正确的头位置开始。 语法分析方法分类 分为两大类: [1] 自顶向下方法---LL方法、递归下降法; [2] 自底向上方法---LR方法(LR(0),SLR(1), LR(1), LALR(1)等)、优先关系法。 4.2 文法和文法分析 语言研究的三个方面: 语法 -- 表示构成语言句子的各个记号之间的组合规律 语义 -- 表示按照各种表示方法所表示的各个记号的特定含义。(各个记号和记号所表示的对象之间的关系) 语用 --表示在各个记号所出现的行为中,它们的来源、使用和影响。 ?文法的分类: O型文法: 也称为短语文法,其产生式具有形式: ?→?,其中?,??(VT?VN)*,并且?至少含一个非终极符 。 1型文法: 也称为上下文有关文法。它是0型文法的特例,要求|?| ? |?| (S→?例外,但S不得出现于产生式右部),其产生式形式: ?A?→??? 。 2型文法: 也称为上下文无关文法。它是1型文法的特例,即要求产生式左部是一个非终极符: A→? 。 3型文法: 也称为正则文法。它是2型文法的特例,即产生式的右部至多有两个符号,而且具有下面形式之一: A →a ,A →aB 其中A,B?VN ,a?VT 。 ?上下文无关文法的定义: G=(VT,VN,S,P) VT是有限的终极符集合; VN是有限的非终极符集合; S是开始符,S? VN P是产生式的集合,且具有下面的形式: A?X1X2…Xn 其中A?VN,Xi? (VT?VN) ,右部可空。 例1:标识符与正整数的文法。 Ident_Num ? Ident | Num Ident ? Letter | IdentLetter | IdentDigit Num ? Digit | NumDigit Digit ? 0 | 1 | ? | 9 Letter? A | B | ? | Z | a | b | ? | z 如:x , xy , x3 , 6 ,38 例2:Pascal语言中“变量”的定义。 Variable ? Ident Variable ? Variable [Expression] Variable ? Variable.Ident Variable ? Variable? 如:x , student.No , x[3] ,x? 例3:小语言ToyL的定义 P ? begin SL end. SL ? S | S ; SL S ? id:= E | write(E) | read(id) E ? id | num | E + E | E * E | (E) 4.2.2 推导及其相关概念 推导:如果A??是一个产生式,则有?A????? ,其中?表示一步推导(用A→?)。这时称???是由?A?直接推导的。 ?的含义是,使用一条规则,代替?左边的某个符号,产生?右端的符号串。 ? ?+ ? : 表示?通过一步或多步可推导出? ? ?* ? : 表示?通过0步或多步可推导出? 最左(右)推导:如果进行推导时选择的是句型中的最左(右)非终极符,则称这种推导为最左(右)推导,并用符号?lm(?rm)表示最左(右)推导。 句型:如果有S?* ?
原创力文档


文档评论(0)