见《虎书》中文版第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 破解
ibm filenet p8 ecm 方案建议书
华硕P8B75-V用户手册
8P8C网口座规格书,反口的规格书不好找,好不容易找到
主板C7329_P8B75-M_LE使用说明书
华硕P8H61-I 主板说明书 P8H61-I 主板说明书
华硕P8Z77-V LE PLUS主板采用全新SMART DIGI+ 智能数字供电设计的第3代双智能处理器,支持UASP协议、更快的USB 3.0传输速度,支持 Windows 8。以下文档是华硕P8Z77-V LE PLUS用户手册,有需要的朋友可立即下载此文档...
ePlan P8\EPLAN_P8_高级教程第1部分
EPLAN_P8_1.9_SP1_Crack,破解 EPLAN_P8_1.9_SP1。直接点击可以破解
七彩虹 CF-P8 MX 2.4A bios
EPLAN P8使用入门,EPLAN P8使用入门,EPLAN P8使用入门
EPLAN P8 高级教程
baili-p8YY0-v582dc794-1.apk
华为P8 故障维修流程图 GSM1发射故障.exe 华为P8 故障维修流程图 GSM1接收故障.exe 华为P8 故障维修流程图 GSM发射故障.exe 华为P8 故障维修流程图 GSM接收故障.exe 华为P8 故障维修流程图 HALL感应故障.exe 华为P8 ...
P8h61.pd F 电路图 P8h61.pd F 电路图 P8h61.pd F 电路图 P8h61.pd F 电路图
EPLAN_Electric_P8_2.9_SP1安装包_baiduyun
华为P8 故障维修流程图 GSM1发射故障.pdf 华为P8 故障维修流程图 GSM1接收故障.pdf 华为P8 故障维修流程图 GSM发射故障.pdf 华为P8 故障维修流程图 GSM接收故障.pdf 华为P8 故障维修流程图 HALL感应故障.pdf 华为P8 ...
EPLAN P8 V2.7安装包
华为P8Max 原厂图 维修流程图 GSM1发射故障.exe 华为P8Max 原厂图 维修流程图 GSM1接收故障.exe 华为P8Max 原厂图 维修流程图 GSM发射故障.exe 华为P8Max 原厂图 维修流程图 GSM接收故障.exe 华为P8Max 原厂图 维修...
EPLAN ELECTRIC P8 2.3 破解