编译原理基础——习题与上机题解答 教学课件 作者 刘坚 第6 10章 第7章.ppt

编译原理基础——习题与上机题解答 教学课件 作者 刘坚 第6 10章 第7章.ppt

  1. 1、本文档共42页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
  编译原理是一门理论与实践并重的课程,上机实践是学习编译原理的一个重要环节。通过自己动手编写一个小的编译器,可以帮助学习者将所学的理论知识与具体的应用结合起来,并加深对编译技术的理解和掌握。   在编译器的分析-综合模式中,编译器被划分为前端和后端。前端对源程序进行语法和语义分析,生成某种中间表示;后端根据中间表示和不同的硬件环境,生成目标代码。由于程序设计语言编译器的构造是一件十分庞杂的事情,而且除了少量的计算机语言需要生成目标代码之外,绝大多数的软件系统需要用到的仅是编译器的前端,即语言的分析(也称为语言的识别)。 由于上机时数的限制,我们设计的上机题目仅侧重于前端的构造技术,包括词法分析、语法分析和语义分析。题目是一个简单的函数绘图语言的解释器,它接受用户编写的绘图语句序列(不妨称为源程序),对语句进行分析和处理,最终将源程序所规定的图形显示在终端上。   希望读者通过上机实习至少达到下述目的:   (1) 会用正规式和产生式设计简单语言的语法;   (2) 会用递归下降子程序编写编译器或解释器;   (3) 会写上机报告(简单的技术文档)。   基于这一目的,我们给出了一个递归下降子程序的解决方案,并紧密结合教材内容给出了重要步骤的详细解释和完整的函数绘图语言解释器的源程序清单。为了照顾不同程度的读者,我们还简单介绍了利用词法和语法分析器编写工具LEX/YACC编写解释器的基本方法,并给出了源程序清单。   7.1 简单的函数绘图语言   本上机题中,要求设计一个最简单的函数绘图语言,该语言提供一条循环绘图语句,将用此语句规定的函数轨迹以直角坐标系的形式逐点显示在计算机显示屏上(或窗口中)。该语言还提供图形变换的语句,可以进行图形的平移、旋转和纵横比例的改变。如果源程序中不提供图形变换语句,则系统的默认值是:不平移(原点坐标为(0, 0))、不旋转(旋转角度为0°)、坐标的纵横比例为1∶1。语言中还提供注释语句,以使用户书写的源程序更清晰易懂。   显示屏的直角坐标系一般以显示屏(或显示窗口)左上角为原点,X轴的正方向是自左向右,Y的正方向是自顶向下,这与一般的直角坐标系的Y轴正方向正好相反。因此,如果希望所绘图形的Y方向是向上增长的,则要求绘图语句中的Y坐标取其负值。   【例7.1】 首先通过函数绘图语言的例子建立对该语言的感性认识。下述源程序将绘图原点的位置平移到坐标(100, 300)处,横坐标和纵坐标的比例设置为1∶1,然后在所建立的坐标系中用绘图语句绘制三条直线。   --------------- 函数f(t)=t的图形   origin is (100, 300); -- 设置原点的偏移量   rot is 0; -- 设置旋转角度(不旋转)   scale is (1, 1); -- 设置横坐标和纵坐标的比例   for T from 0 to 200 step 1 draw (t, 0); -- 横坐标的轨迹(纵坐标为0)   for T from 0 to 150 step 1 draw (0, –t); -- 纵坐标的轨迹(横坐标为0)   for T from 0 to 120 step 1 draw (t, –t); -- 函数f(t)=t的轨迹   源程序所绘制的图形如图7.1所示。 图7.1 7.1.1 语句的语法和语义    函数绘图语言的源程序由五种类型的语句构成:循环绘图(FOR-DRAW)、比例设置(SCALE)、角度旋转(ROT)、坐标平移(ORIGIN)和注释,它们在例7.1中均已出现过。   这些语句满足下述基本原则:   (1) 各类语句可以按任意次序书写,且语句以分号结尾。源程序中的语句以它们出现的先后顺序处理。   (2) ORIGIN、ROT和SCALE 语句只影响其后的绘图语句,且遵循最后出现的语句有效的原则。例如,若有下述ROT语句序列:   ROT IS 0.7 ;   ROT IS 1.57 ;   则随后的绘图语句将按1.57而不是0.7弧度旋转。   (3) 无论ORIGIN、ROT和SCALE语句的出现顺序如何,图形的变换顺序总是:比例变换→旋转变换→平移变换。   (4) 语言对大小写不敏感,例如for、For、FOR等,均被认为是同一个保留字。   (5) 语句中表达式的值均为双精度类型,旋转角度单位为弧度且为逆时针旋转,平移单位为点。   1.循环绘图(FOR-DRAW )语句   绘图语句是绘图语言的核心,主要完成函数图形的绘制工作。它的语法如下:   FOR T FROM 起点 TO 终点 STEP 步长 DRAW(横坐标,纵坐标);   语句的起点、终点、步长、横坐标、纵坐标均为

您可能关注的文档

文档评论(0)

118压缩包课件库 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档