- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
语法描述 定义:称?A?直接推出???,即 ?A????? 仅当A ? ?是一个产生式, 且?, ?? (VT ? VN)* 。 如果?1 ? ?2 ? ? ??n,则我们称这个序列是从?1到?n的一个推导。若存在一个从?1到?n的推导,则称?1可以推导出?n 。 对文法G(E): E ? i | E+E | E*E | (E) E ? (E) ? (E+E)? (i+E)? (i+i) 2.3.2 语言的形式定义 2.3.2 语言的形式定义 2.3.2 语言的形式定义 2.3.2 语言的形式定义 2.3.2 语言的形式定义 2.3.2 语言的形式定义 2.3.2 语言的形式定义 2.3.2 语言的形式定义 2.3.2 语言的形式定义 2.3.2 语言的形式定义 2.3.2 语言的形式定义 语法树与二义性 用一张图表示一个句型的推导,称为语法树。 (i*i+i)的语法树 如果使用最左(右)推导,则一个最左(右)推导与语法树一一对应。 一个句型是否只对应唯一一棵语法树? 定义:如果一个文法存在某个句子对应两颗不同的语法树,则说这个文法是二义的。即:如果一个文法存在某个句子,它有两个不同的最左(最右)推导, 则说这个文法是二义的 G(E): E ? i|E+E|E*E|(E) 是二义文法。 语言的二义性:一个语言是二义性的,如果对它不存在无二义性的文法。 可能存在G和G’,一个为二义的,一个为无二义的。但L(G)=L(G’) 二义性问题是不可判定问题,即不存在一个算法,它能在有限步骤内,确切地判定一个文法是否是二义的。 可以找到一组无二义文法的充分条件。 二义文法: G(E): E ? i|E+E|E*E|(E) 描述程序设计语言时,对于上下文无关文法的限制 : 1 不含P?P形式的产生式 2 每个非终结符P必须有用处 即: * * 即表示从?0 出发,经 一步或若干步 或者说 使用若干次规则可推导出 ?n。 如果存在一个直接推导序列: 则我们称这个序列是一个从?0至?n的长度为n的推导,记为 2.推导 α0? α1? α2? … ? αn + α0? αn 设有文法G[E]=({E,T,F},{i,+,*,(,)},P,E) 对 i+i*i 有如下直接推导序列: 我们可记为 其中P为:E→E+T | T T→T*F | F F→(E) | i E ?E+T ?T+T ?F+T ?i+T ?i+T*F ?i+F*F ?i+i*F ?i+i*i E?i+i*i + 3.广义推导 我们有: ?0??n表示从?0出发,经0步或若干步, 可推导出?n。 * 也就是说?0??n意味着?0??n或者?0=?n。 * + E?E * E?i+i*i * 对上例 E→E+T | T T→T*F | F F→(E) | i 区别:直接推导的长度大于等于1,而广义推导的长度大于等于0。 4. 句型和句子 设有文法G[S](S是文法G的开始符号) 如果S? x, x ∈(VN∪VT)* 则称符号串x为文法G[S]的句型。 * 如果S? x, x ∈VT* 则称符号串x为文法G[S]的句子。 即:仅含终结符号的句型是一个句子。 * 例1 设有文法G[S]: 我们有: 显然,符号串01、0S1、00S11和000111 都是文法G[S]的句型,而01和000111又是文法G[S]的句子。 S→01 | 0S1 S? 01 * S? 0S1 * S? 00S11 * S? 000111 * 例2 设有文法G[E]: 试证明符号串 (i*i+i) 是文法G[E]的一个句子。 分析 只要证明符号串 (i*i+i) 对文法 G存在一个推导,就可证明符号串 (i*i+i) 是文法G[E]的一个句子。 E→E+E | E*E | (E) | i E→E+E | E*E | (E) | i E ?(E) ?(E+E) ?(E*E+E) ?(i*E+E) ?(i*i+E) ?(i*i+i) 即有 E?(i*i+i), 所以符号串(i+i*i)是文法 G[E]的一个句子。 * (2)L(G)是VT* 的子集。即属于VT* 的符 号串 x 不一定属于L(G)。 5.语言 文法G[S]产生的所有句子的集合称为文 法G所定义的语言,记为L(G[S]): 由语言定义可知: (1)当文法给定,语言也就确定。 L(G[S])={x|S?x且x∈VT*} * 例3 设有文法G[S] :S→01 | 0S1 求该文法所描述
文档评论(0)