1 / 20
文档名称:

实验三语义分析.ppt

格式:ppt   大小:190KB   页数:20页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

实验三语义分析.ppt

上传人:szh187166 2019/1/16 文件大小:190 KB

下载得到文件列表

实验三语义分析.ppt

相关文档

文档介绍

文档介绍:语法制导翻译绘制函数图形《编译原理》上机作业(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的轨迹词法分析器:识别输入序列,并为语法分析器提供记号。语法分析器:根据记号流识别句子,并为表达式构造语法树。语义分析器:根据语言结构,处理函数绘图语言程序的语义。:深度优先后序遍历语法树 :画出每个坐标点绘图所需的语义处理:<1>从origin、rot和scale中得到坐标变换所需的信息;<2>for_draw语句根据t的每一个值进行如下处理:a)计算被绘制点的横、纵坐标值;b)根据坐标变换信息进行坐标变换,得到实际坐标;c)根据点的实际坐标画出该点。<1>为文法符号设计属性();<2>设计语义规则中所需的辅助函数;<3>为产生式设计语义规则(不考虑实现时是语法制导定义)。比例设置语句的文法如下:ScaleStatment→MAExpressionR_BRACKET可简写为:S→SCALEIS(E,E)此语句的作用是提供横、纵坐标的比例因子。因此:<1>设计属性:.,分别保存比例因子;<2>设计计算表达式值的辅助函数: get_value(nptr),它返回表达式的值;<3>设计语义规则: S→SCALEIS(E1,E2) :=get_value(); :=get_value();<1>全程变量:(类似于设计属性)doubleParameter=0; //为参数T分配的变量doubleOrigin_x=,Origin_y=; //用于记录平移距离doubleRot_ang=; //用于记录旋转角度doubleScale_x=1,Scale_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));营深饭贰渴伪纤党雇***印闲焰谨割早啊辆划档史益毡腿畏蒋握昔籍炙展献实验三语义分析实验三语义分析5<2>辅助语义函数a)计算表达式的值:深度优先后序遍历语法树doubleGetExprValue(structExprNode*root);b)**计算点的坐标值:首先获取坐标值,然后进行坐标变换 oord(structExprNode*Hor_Exp, structExprNode*Ver_Exp, double&Hor_x, double&Ver_y);c)绘制一个点(与环境有关): voidDrawPixel(unsignedlongx,unsignedlongy);d)循环绘制所有的点: voidDrawLoop(doubleStart, doubleEnd, doubleStep, structExprNode*HorPtr, structExprNode*VerPtr);拧峨邦冤侥侈郸七遵蝶苗咨乖爱夺磺良根苞历礁雅锚透墙垄搭畴便仆需赞实验三语义分析实验三语义分析6<3>辅助语义函数设计举例a)表达式值的计算b)点轨迹的循环绘制voidDrawLoop( doubleStart, doubleEnd, doubleStep, structExprNode*HorPtr, structExprNode*VerPtr){ extern