语义分析器延安大学计算机学院实验报告专用纸实验室:机号:实验日期:年月日学号1060915014009姓名徐君班级软件15课程名称实验项目名称任课教师指导教师实验组别第组同组者教师评语及成绩:实验成绩:教师签字:(请按照实验报告的有关要求书写,一般必须包括:1、实验目的;2、实验内容;3、实验步骤与方法;4、实验数据与程序清单;5、出现的问题及解决方法;6、实验结果、结果分析与体会等内容。一、实验目的:通过上机实习,加深对语法制导翻译原理的理解,掌握将语法分析所识别的语法成分变换为中间代码的语...
='a'))||((ch<='Z')&&(ch>='A'))){wh订e(((ch<='z')&&(ch>='a'))||((ch<='Z')&&(ch>='A'))||((ch>='0')&&(ch<='9'))){token[m++]=ch;ch=prog[p++];}p__;syn=10;token[m++]='\0';for(n=0;n<6;n++)if(strcmp(token,rwtab[n])=0){syn=n+1;break;}}elseif((ch>='0')&&(ch<='9')){wh订e((ch>='0')&&(ch<='9')){sum=sum*10+ch-'0';ch=prog[p++];}p__;syn=11;}elseswitch(ch){case'<':m=0;ch=prog[p++];辻(ch='>‘){syn=21;}elseif(ch='='){syn=22;}else{syn=20;P__;}break;case'>':m=0;ch=prog[p++];f(ch='=‘){syn=24;}else{syn=23;p__;}break;case':':m=0;ch=prog[p++];f(ch='=‘){syn=18;}else{syn=17;P__;}break;case'+':syn=13;break;case'-':syn=14;break;case'*':syn=15;break;case'/':syn=16;break;case'(':syn=27;break;case')':syn=28;break;case'=':syn=25;break;case';':syn=26;break;case'#':syn=0;break;default:syn=-1;break;}}emit(char*result,char*agl,char*op,char*ag2){strcpy(quad[q].resultl,result);strcpy(quad[q].agll,agl);strcpy(quad[q].opl,op);strcpy(quad[q].ag21,ag2);q++;}四、实验过程原始记录(数据、图表、计算等)实验的输入和输出:输入是语法分析提供的正确的单词串,输出为三地址指令形式的四元式序列。例如:对于语句串begina:=2+3*4;x:=(a+b)/cend#输出的三地址指令如下:(1)tl=3*4(2)t2=2+tl(3)a=t2(4)t3=a+b(5)t4=t3/c(6)x=t4)leaseinputastring:begina:=2+3«4;x:=/cendtttl=3*4t2=2+tla=t2t3=a+bt4=t3/cx=t4*ressanykeytocontinue五、实验结果及分析,以及心得体会通过试验结果可以看出,这个程序实现了输出为三地址指令形式的四元式序列。通过上机实验,加深了对语法制导翻译原理的理解,掌握将语法分析所识别的语法成分变换为中间代码的语义翻译方法。以及还复习了对VC的应用。