资源描述:
《函数绘图语言解释器》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、上机作业一、上机作业的目的通过做上机题加深对编译器构造原理和方法的理解,巩固所学知识。<1>会用正规式和产生式设计简单语言的语法;<2>会用递归下降子程序编写编译器或解释器;<3>会写上机报告。二、上机题目-简单的函数绘图语言2.1题目简述<1>实现简单函数绘图的语句循环绘图(FOR-DRAW)比例设置(SCALE)角度旋转(ROT)坐标平移(ORIGIN)注释(--或//)<2>屏幕(窗口)的坐标系左上角为原点x方向从左向右增长y方向从上到下增长(与一般的坐标系方向相反)1<3>函数绘图源程序举例---------------函数f(t)=t的图形originis(100,300);-
2、-设置原点的偏移量rotis0;--设置旋转角度(不旋转)scaleis(1,1);--设置横坐标和纵坐标的比例forTfrom0to200step1draw(t,0);--横坐标的轨迹(纵坐标为0)forTfrom0to150step1draw(0,-t);--纵坐标的轨迹(横坐标为0)forTfrom0to120step1draw(t,-t);--函数f(t)=t的轨迹默认值:originis(0,0)rotis0;scaleis(1,1)22.2语句的语法和语义语句满足下述规定(原则):<1>各类语句可以按任意次序书写,且语句以分号结尾。源程序中的语句以它们出现的先后顺序处理。<2
3、>ORIGIN、ROT和SCALE语句只影响其后的绘图语句,且遵循最后出现的语句有效的原则。例如,若有下述ROT语句序列:ROTIS0.7;ROTIS1.57;则随后的绘图语句将按1.57而不是0.7弧度旋转。<3>无论ORIGIN、ROT和SCALE语句的出现顺序如何,图形的变换顺序总是:比例变换→旋转变换→平移变换<4>语言对大小写不敏感,例如for、For、FOR等,均被认为是同一个保留字。<5>语句中表达式的值均为双精度类型,旋转角度单位为弧度且为逆时针旋转,平移单位为点。32.2.1循环绘图(FOR-DRAW)语句语法:语义:举例:说明:注意:FORTFROM起点TO终点STE
4、P步长DRAW(横坐标,纵坐标);令T从起点到终点、每次改变一个步长,绘制出由(横坐标,纵坐标)所规定的点的轨迹。FORTFROM0TO2*PISTEPPI/50DRAW(cos(T),sin(T));该语句的作用是令T从0到2*PI、步长PI/50,绘制出各个点的坐标(cos(T),sin(T)),即一个单位园。由于绘图系统的默认值是ORIGINIS(0,0);ROTIS0;SCALEIS(1,1);所以实际绘制出的图形是在屏幕左上角的一个点。42.2.2比例设置(SCALE)语句语法:语义:举例:说明:SCALEIS(横坐标比例因子,纵坐标比例因子);设置横坐标和纵坐标的比例,并分别
5、按照比例因子进行缩放。SCALEIS(100,100);将横坐标和纵坐标的比例设置为1:1,且放大100倍。语法:语义:举例:说明:2.2.3坐标平移(ORIGIN)语句ORIGINIS(横坐标,纵坐标);将坐标系的原点平移到横坐标和纵坐标规定的点处。ORIGINIS(360,240);将原点从(0,0)平移到(360,240)处。若:SCALEIS(100,100/3);则:横坐标和纵坐标的比例为3:1。52.2.4角度旋转(ROT)语句语法:语义:举例:说明:ROTIS角度;逆时针旋转角度所规定的弧度值。具体计算公式:旋转后X=旋转前X*COS(角度)+旋转前Y*SIN(角度)旋转后
6、Y=旋转前Y*COS(角度)-旋转前X*SIN(角度)公式的推导可参阅辅助教材58页。ROTISPI/2;逆时针旋转PI/2,即逆时针旋转90度。2.2.5注释语句注释的作用:语法:语义:便于理解;屏蔽暂时不需要的语句。//Thisisacommentline或--此行是注释//或--之后,直到行尾,均是注释6语句功能的测试ORIGINIS(360,240);//(1)原点移至(360,240)SCALEIS(100,100);//(2)图形放大100SCALEIS(100,100/3);//(3)纵坐标缩小为三分之一ROTISPI/2;//(4)逆时针旋转90度--绘制园的轨迹FORT
7、FROM0TO2*PISTEPPI/50DRAW(cos(T),sin(T));仅(1)和(2)加入(3)加入(4)7其他函数图形:82.3记号的语法和语义记号的种类:<1>常数<2>参数<3>函数(调用)常数、参数、函数、保留字、运算符、分隔符常数字面量和标识符形式的常量名均称为常数。字面量的形式为普通的数值,如果没有小数部分,可以省略小数点。例如2、2.、2.0都是合法的常数。标识符PI、E也是常数,它们分别代表圆周率和自然对数