见《虎书》中文版第8页;
我的答案:
#ifndef P8Q1_H
#define P8Q1_H
#include "slp.h"
int resolveStm(A_stm stm);
int resolveExp(A_exp exp);
int resolveExpList(A_expList expList);
int countExpInExpList(A_expList expList);
#endif
#include "p8q1.h"
int resolveStm(A_stm stm){
int temp1 = 0, temp2 = 0;
if(stm->kind == A_compoundStm){
temp1 = resolveStm(stm->u.compound.stm1);
temp2 = resolveStm(stm->u.compound.stm2);
return temp1>temp2? temp1:temp2;
}else if(stm->kind == A_assignStm){
return resolveExp(stm->u.assign.exp);
}else if(stm->kind == A_printStm){// the way out
return countExpInExpList(stm->u.print.exps);
}else{
return 0;
}
}
int countExpInExpList(A_expList expList){
if(expList->kind == A_lastExpList){
return 1;
}else if(expList->kind == A_pairExpList){
return 1 + countExpInExpList(expList->u.pair.tail);
}else{
return 0;
}
}
int resolveExpList(A_expList expList){
int temp1,temp2;
if(expList->kind == A_pairExpList){
temp1 = resolveExp(expList->u.pair.head);
temp2 = resolveExpList(expList->u.pair.tail);
return temp1>temp2?temp1:temp2;
}else if(expList->kind == A_lastExpList){
return resolveExp(expList->u.last);
}else{
return 0;
}
}
int resolveExp(A_exp exp){
int temp1,temp2;
if(exp->kind == A_idExp){
return 0;
}else if(exp->kind == A_numExp){
return 0;
}else if(exp->kind == A_opExp){
temp1 = resolveExp(exp->u.op.left);
temp2 = resolveExp(exp->u.op.right);
return temp1>temp2?temp1:temp2;
}else if(exp->kind == A_eseqExp){
temp1 = resolveStm(exp->u.eseq.stm);
temp2 = resolveExp(exp->u.eseq.exp);
return temp1>temp2?temp1:temp2;
}else{
return 0;
}
}
main.c:
#include <stdio.h>
#include "util.h"
#include "prog1.h"
#include "slp.h"
#include "p8q1.h"
main(){
printf("%d\n",resolveStm(prog()));
}
输出结果:2
体会:对于“目标”需要特殊处理,“目标”就是解析程序的出口。
分享到:
相关推荐
eplan p8 2.1sp1 破解
### 华硕P8B75-V主板用户手册知识点概览 #### 一、产品概述与版权信息 **华硕P8B75-V主板**是华硕公司推出的一款基于Intel B75芯片组设计的主板,适用于搭载第三代Intel酷睿处理器的个人计算机。该主板不仅具备...
8P8C网口座规格书,反口的规格书不好找,好不容易找到
华硕P8B75-M LE主板用户手册提供的信息涵盖了产品的规范、版权、免责声明、保修和源代码提供等多个方面。为了便于理解和使用,以下详细解释了手册中提到的相关知识点。 首先,手册强调版权保护,声明所有包含的信息...
EPLAN_Electric_P8_2.9_SP1安装包_baiduyun
华硕P8Z77-V LE PLUS主板采用全新SMART DIGI+ 智能数字供电设计的第3代双智能处理器,支持UASP协议、更快的USB 3.0传输速度,支持 Windows 8。以下文档是华硕P8Z77-V LE PLUS用户手册,有需要的朋友可立即下载此文档...
### 1. 需求背景 在当前信息化社会中,企业和组织面临着日益增长的文档和非结构化内容管理需求。无论是小公司还是大型企业,都必须有效地管理海量的文档、电子邮件、通信记录以及其他必须维护的信息。IBM的ECM解决...
P8xC591支持CAN 2.0B协议,可以实现最高1Mbps的数据传输速率,并具备多种工作模式,如正常模式、睡眠模式、停机模式等,以满足不同应用场景的需求。 在P8xC591中,CAN控制器与微处理器之间的接口是通过中断或轮询...
1. **快捷键应用**:熟悉并掌握Eplan P8中的快捷键操作可以显著提高工作效率。例如,使用Ctrl+C复制选中的对象,Ctrl+V粘贴对象等。 2. **模板利用**:合理利用模板可以节省大量的设计时间。Eplan P8提供了多种预设...
接着,书中将详细介绍EPLAN P8的核心功能,如电路图设计、符号库管理、自动布线、元件参数化等。电路图设计是EPLAN P8的核心应用场景,通过学习如何绘制和编辑电路图,读者能够快速理解电气设计的基本流程。符号库...
【联想p8刷机全套工具】是一套专为联想P8平板电脑设计的系统更新与优化工具,旨在解决用户在使用过程中可能遇到的系统卡顿、功能限制或个性化需求等问题。通过刷机,用户可以安装第三方系统固件,提升设备性能,或者...
1. 实时同步:能够实时从用友U8和金蝶等财务软件中获取最新的财务数据,确保决策基于最新信息。 2. 自定义字段映射:允许用户根据自身需求,定义从源系统到P8的数据字段映射,确保数据结构的一致性。 3. 数据清洗与...
1. 若遇到启动问题,可以尝试清除CMOS来恢复默认设置。 2. 定期检查散热设备,确保良好的通风条件,防止过热。 3. 使用ASUS提供的驱动程序和更新,以保持最佳的硬件兼容性和性能。 总结,华硕P8H61-I主板是一款性价...
华硕P8B75-V 2.0是一款基于Intel B75...文件“P8B75-V 2.00.FZ”可能是该主板的BIOS更新文件,用户可以通过升级BIOS来修复潜在问题或获取新特性。不过,执行BIOS更新操作时务必谨慎,遵循正确的步骤,以防损坏主板。
honglou-p8YiI-vf8c1d648.apk
华为P8 故障维修流程图 GSM1发射故障.exe 华为P8 故障维修流程图 GSM1接收故障.exe 华为P8 故障维修流程图 GSM发射故障.exe 华为P8 故障维修流程图 GSM接收故障.exe 华为P8 故障维修流程图 HALL感应故障.exe 华为P8 ...
"《EPLAN+P8快速入门》"是官方提供的初学者指南,它涵盖了软件的基本操作和常见问题解答,是学习EPLAN P8的宝贵资源。通过阅读这本书,初学者可以快速上手,理解软件的工作流程和设计理念。 总之,EPLAN P8是一款...
华为P8Max 原厂图 维修流程图 GSM1发射故障.pdf 华为P8Max 原厂图 维修流程图 GSM1接收故障.pdf 华为P8Max 原厂图 维修流程图 GSM发射故障.pdf 华为P8Max 原厂图 维修流程图 GSM接收故障.pdf 华为P8Max 原厂图 维修...
七彩虹 CF-P8 MX 2.4A bios