实验三语义分析.ppt

实验三语义分析.ppt

ID:48734864

大小:204.00 KB

页数:20页

时间:2020-01-20

实验三语义分析.ppt_第1页
实验三语义分析.ppt_第2页
实验三语义分析.ppt_第3页
实验三语义分析.ppt_第4页
实验三语义分析.ppt_第5页
资源描述:

《实验三语义分析.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、语法制导翻译绘制函数图形《编译原理》上机作业(3)1简单复习---------------函数f(t)=t的图形originis(200,300);--设置原点的偏移量rotispi/6;--设置旋转角度scaleis(2,1);--设置横坐标和纵坐标的比例forTfrom0to200step1draw(t,0);--横坐标的轨迹forTfrom0to180step1draw(0,-t);--纵坐标的轨迹forTfrom0to150step1draw(t,-t);--f(t)=t的轨迹词法分析器

2、:识别输入序列,并为语法分析器提供记号。语法分析器:根据记号流识别句子,并为表达式构造语法树。语义分析器:根据语言结构,处理函数绘图语言程序的语义。21.表达式值的计算:深度优先后序遍历语法树2.图形的绘制:画出每个坐标点绘图所需的语义处理:2.3.3语法制导翻译绘制图形<1>从origin、rot和scale中得到坐标变换所需的信息;<2>for_draw语句根据t的每一个值进行如下处理:a)计算被绘制点的横、纵坐标值;b)根据坐标变换信息进行坐标变换,得到实际坐标;c)根据点的实际坐标画出该

3、点。2.3.3.1绘图语言的语义3语法制导翻译的基本步骤<1>为文法符号设计属性();<2>设计语义规则中所需的辅助函数;<3>为产生式设计语义规则(不考虑实现时是语法制导定义)。比例设置语句的文法如下:ScaleStatment→SCALEISL_BRACKETExpressionCOMMAExpressionR_BRACKET可简写为:S→SCALEIS(E,E)此语句的作用是提供横、纵坐标的比例因子。因此:<1>设计属性:.x和.y,分别保存比例因子;<2>设计计算表达式值的辅助函数:ge

4、t_value(nptr),它返回表达式的值;<3>设计语义规则:S→SCALEIS(E1,E2)S.x:=get_value(E1.nptr);S.y:=get_value(E2.nptr);42.3.3.2语义函数的设计<1>全程变量:(类似于设计属性)doubleParameter=0;//为参数T分配的变量doubleOrigin_x=0.0,Origin_y=0.0;//用于记录平移距离doubleRot_ang=0.0;//用于记录旋转角度doubleScale_x=1,Scale_

5、y=1;//用于记录比例因子例:以点(350,220)为圆心绘制两个同心园originis(350,220);//Origin_x=350,Origin_y=220scaleis(50,50);//Scale_x=50,Scale_y=50fortfrom0to2*pisteppi/100draw(cos(t),sin(t));scaleis(100,100);//Scale_x=100,Scale_y=100fortfrom0to2*pisteppi/200draw(cos(t),sin(t)

6、);5<2>辅助语义函数a)计算表达式的值:深度优先后序遍历语法树doubleGetExprValue(structExprNode*root);b)**计算点的坐标值:首先获取坐标值,然后进行坐标变换staticvoidCalcCoord(structExprNode*Hor_Exp,structExprNode*Ver_Exp,double&Hor_x,double&Ver_y);c)绘制一个点(与环境有关):voidDrawPixel(unsignedlongx,unsignedlongy

7、);d)循环绘制所有的点:voidDrawLoop(doubleStart,doubleEnd,doubleStep,structExprNode*HorPtr,structExprNode*VerPtr);6<3>辅助语义函数设计举例a)表达式值的计算b)点轨迹的循环绘制voidDrawLoop(doubleStart,doubleEnd,doubleStep,structExprNode*HorPtr,structExprNode*VerPtr){externdoubleParameter;

8、//参数T的存储空间doublex,y;for(Parameter=Start;Parameter<=End;Parameter+=Step){CalcCoord(HorPtr,VerPtr,x,y);//计算实际坐标DrawPixel((unsignedlong)x,(unsignedlong)y);//根据坐标绘制点}}72.3.3.3递归子程序中语义规则的嵌入a)OriginStatementb)ForStatement语义规则可以嵌入在递归子程序的任何位置。根据语法制导翻译的基本思想,如

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。