《编译原理课件chapter5.ppt

  1. 1、本文档共91页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
5.8.1 类型表达式 ?5.8.1.1 类型表达式定义 ??? ?语言结构的类型由类型表达式指称,类型表达式依赖于程序语言的类型体制。类型表达式或者是简单类型表达式,或者是构造符作用在类型表达式上得到的类型表达式。类型表达式的定义如下: (1)类型名和基本类型是类型表达式。 integer、char、real、boolean是基本类型, 所以它们是类型表达式。另外,void表示 “无类型”,type_error表示“出错类型”,它 们也是类型表达式。 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. ??(2)类型构造符作用于类型表达式的结果仍然是 类型表达式。类型构造符包括: ?? (a)数组构造符ARRAY:若T是类型表达式, 则ARRAY(I,T)是类型表达式; (b)笛卡儿乘积?:若T1、T2是类型表达式,则 T1? T2是类型表达式,且?是左结合。 ? (c)记录类型构造符RECORD:若有标识符N1、 N2、…、Nn与类型表达式T1、T2、…、Tn, 则RECORD((N1 ? T1) ? (N2 ? T2)? …? (Nn ? Tn))是一个类型表达式,它 指称一个记录类型。 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. ???(d)指针类型构造符POINTER:若T是类型 表达式,则POINTER(T)是类型表达式, 它指称一个指针类型。 ???(e)函数类型构造符→:若D1、D2、…、Dn和 R是类型表达式,则D1?D2 ? ……? Dn→R 是类型表达式,其中?优先于→,它指称从 定义域类型D1 ? D2 ? … ? Dn到值域类型R 的映射。 (3) 类型表达式中可出现类型变量,变量值是类 型表达式。 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 例5.23 ?设有Pascal 程序片段: ? TYPE stype=RECORD ??? ????????? name:ARRAY [1..8] OF char; ??? ??????? score:integer ??? ???????? END; ? VAR ??table:ARRAY [1..50] OF stype; ??? ?? ?p: ↑stype; 则stype绑定的类型表达式 ?????RECORD((name?ARRAY(1..8,char)) ? (score ? integer)) 和table绑定的类型表达式 ARRAY(1..50,stype) 和P绑定的类型表达式 ?POINTER(stype) Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 表5.5 翻译输入3*5+4n所做的移动 输入 state val 使用的产生式 3*5+4n - - *5+4n 3 3 *5+4n F 3

文档评论(0)

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

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

1亿VIP精品文档

相关文档