算术表达式的解释器复习过程.doc

算术表达式的解释器复习过程.doc

ID:57162535

大小:458.00 KB

页数:8页

时间:2020-08-04

算术表达式的解释器复习过程.doc_第1页
算术表达式的解释器复习过程.doc_第2页
算术表达式的解释器复习过程.doc_第3页
算术表达式的解释器复习过程.doc_第4页
算术表达式的解释器复习过程.doc_第5页
资源描述:

《算术表达式的解释器复习过程.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、算术表达式的解释器精品文档编译原理课程实验报告实验项目:算数表达式解释器的设计与实现专业班级:***********学生姓名:微博账号:航帅ottp学号:************课程教师:******指导教师:******实验时间:2016年11月09日计算机科学系收集于网络,如有侵权请联系管理员删除精品文档实验目的:1.了解并掌握自顶向下语法分析的思想,熟悉递归下降子程序分析法。2.了解并掌握语法制导翻译法,掌握采用递归子程序进行语义分析的方法。实验要求:1.要求此算术表达式的解释器能够识别和计算加减乘除四则运算式。2.要求采用递归下降子程序法编写语

2、法分析器。实验内容:用适当的程序设计语言编制一个算术表达式的解释器,并完成相应的调试,要求该程序能够读入一个算术表达式,运行后给出计算的结果。实验思路:用所编的“词法分析器”将源程序扫描成一个个的单词符号,将单词符号序列号和相应的单词符号保存在结构体数组c[]中。调用采用递归下降子程序法编写的算术表达式的“语法分析器”,对语义分析得到的表达式进行计算。实验设计、过程及结果:(1)实验程序代码设计#include#include#include#include//********

3、****************词法分析器************************charch;//存放最新读进的源程序字符charstrToken[20];//存放字符串的字符数组structCiyu{intcode;chars[20];}c[100];//存放词法分析结果intm;//词法分析得到的单词符号数boolIsLetter(charletter)//判断ch是否为字母{if(isalpha(letter)!=0)return1;elsereturn0;}boolIsDigit(chardigit)//判断ch是否为数字{if(is

4、digit(digit)!=0)return1;elsereturn0;}voidEmpty(intxiabiao){for(intj=0;j<=xiabiao;j++)strToken[j]='';}voidReserve(char*strToken)//判断是关键字还是标识符并输出{if(strcmp(strToken,"void")==0){c[m].code=1;strcpy(c[m++].s,"void");}elseif(strcmp(strToken,"main")==0){c[m].code=2;strcpy(c[m++].s,"m

5、ain");}elseif(strcmp(strToken,"int")==0){c[m].code=3;strcpy(c[m++].s,"int");}elseif(strcmp(strToken,"char")==0){c[m].code=4;strcpy(c[m++].s,"char");}elseif(strcmp(strToken,"scanf")==0){c[m].code=5;strcpy(c[m++].s,"scanf");}elseif(strcmp(strToken,"printf")==0){c[m].code=6;strcpy(

6、c[m++].s,"printf");}elseif(strcmp(strToken,"if")==0){c[m].code=7;strcpy(c[m++].s,"if");}收集于网络,如有侵权请联系管理员删除精品文档elseif(strcmp(strToken,"else")==0){c[m].code=8;strcpy(c[m++].s,"else");}elseif(strcmp(strToken,"do")==0){c[m].code=9;strcpy(c[m++].s,"do");}elseif(strcmp(strToken,"while

7、")==0){c[m].code=10;strcpy(c[m++].s,"while");}elseif(strcmp(strToken,"for")==0){c[m].code=11;strcpy(c[m++].s,"for");}elseif(strcmp(strToken,"return")==0){c[m].code=12;strcpy(c[m++].s,"return");}else{c[m].code=39;strcpy(c[m++].s,strToken);}}voidLexicalAnalyzer(FILE*f)//词法分析主要函数{E

8、mpty(19);ch=fgetc(f);inti=0;if(IsLetter(ch)){wh

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。