- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
简单复习 语法制导翻译的基本步骤 2.3.3.2 语义函数的设计 1 全程变量:(类似于设计属性) double Parameter=0; // 为参数T分配的变量 double Origin_x=0.0, Origin_y=0.0; // 用于记录平移距离 double Rot_ang=0.0; // 用于记录旋转角度 double Scale_x=1, Scale_y=1; // 用于记录比例因子 2 辅助语义函数 a) 计算表达式的值:深度优先后序遍历语法树 double GetExprValue(struct ExprNode * root); 3 辅助语义函数设计举例 a) 表达式值的计算 b) 点轨迹的循环绘制 2.3.3.3 递归子程序中语义规则的嵌入 a) OriginStatement b) ForStatement 2.5 上机题的改进建议 2.5.1 函数绘图语言的扩充 1 修改显示屏的直角坐标系,使得它与习惯上的坐标系一致; 2 扩充语句类型,使得用户可以规定图形颜色; 3 扩展循环绘图语句,使得for_draw语句可以嵌套; 4 增加文本框,使得用户可以在图形中添加文字说明; 5 增加清图功能,使得图形可以具有简单的动画效果。 2.5.2 采用面向对象技术实现解释器 语法制导翻译的本质反映在面向对象的程序设计方法上就是一种继承关系。 static void ForStatement (void) { tree_node_ptr start_ptr, end_ptr, step_ptr, x_ptr, y_ptr; 1 不利用类机制 tree_node_ptr start_ptr, end_ptr, step_ptr, x_ptr, y_ptr, angle_ptr; 2 利用类机制 tree_node_ptr start_ptr, end_ptr, step_ptr, x_ptr, y_ptr, angle_ptr; 1 程序设计方法与程序设计语言支持方法无必然联系; 2 C++对C的发展不仅是提供了对面向对象方法的支持,还扩展了常量定义、类属机制、异常处理,等等; 3 灵活利用C++提供的机制可提高程序的可读性与可维护性。 double GetExprValue(struct ExprNode * root) { if (root == NULL) return 0.0; switch (root - OpCode) { case PLUS : return GetExprValue(root-Content.CaseOperator.Left ) + GetExprValue(root-Content.CaseOperator.Right) ; case MINUS : ...... // 其它二元运算类似处理 case POWER : return pow( GetExprValue(root-Content.CaseOperator.Left), GetExprValue(root-Content.CaseOperator.Right)); case FUNC : return (* root-Content.CaseFunc.MathFuncPtr) (GetExprValue(root-Content.CaseFunc.Child) ); case CONST_ID : return root-Content.CaseConst ; case T : return *(root-Content.CaseParmPtr); default : return 0.0 ; } }(返回) void DrawLoop(double Start, double End, double Step, struct ExprNode * HorPtr, struct ExprNode * VerPtr) { extern double Parameter; double x, y; for(Parameter=Start; Parameter=End; Parameter+=Step) { CalcCoord(HorPtr, VerPtr, x, y);// 计算点的实际坐标 DrawPixel((unsigned long)x,
您可能关注的文档
- 妊娠与内分泌疾病.ppt
- 妊娠合并甲亢.ppt
- 妊高征及难治性、肾性、老年性高血压-2013-7.ppt
- 妙手回春除病句-不合逻辑6.ppt
- 婴儿肝炎综合征new.ppt
- 婴幼儿喘息性疾病诊断和治疗问题-new.ppt
- 婴童店的盈利生存之法则.ppt
- 媒体理论与实践.ppt
- 子曰弟子入则孝出则悌谨而信泛爱众而亲仁行有余力则以学文.ppt
- 子网于子网掩码的概念和作用.ppt
- 城市排水老化管道设施对城市发展的影响.docx
- 背压机组生产线项目立项报告(模板范文).docx
- 2025年自考专业(汉语言文学)考前冲刺练习试题【考点梳理】附答案详解.docx
- 城市人口变化与绿色发展路径的互动关系.docx
- 2025年自考专业(汉语言文学)考前冲刺练习带答案详解(预热题).docx
- 2025年自考专业(汉语言文学)考前冲刺练习试题【综合卷】附答案详解.docx
- 背压机组生产线项目商业计划书(模板范文).docx
- 2025年自考专业(汉语言文学)考前冲刺练习新版附答案详解.docx
- 2025年自考专业(汉语言文学)考前冲刺练习必考题附答案详解.docx
- 城市文化认同感的塑造与传播途径.docx
文档评论(0)