开发一个简单的解释型编程语言

开发一个简单的解释型编程语言

ID:9027503

大小:54.00 KB

页数:3页

时间:2018-04-15

开发一个简单的解释型编程语言_第1页
开发一个简单的解释型编程语言_第2页
开发一个简单的解释型编程语言_第3页
资源描述:

《开发一个简单的解释型编程语言》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、东华大学计算机学院DongHuaUniversity软件开发任务书TrainingItem项目名称开发一个简单的解释型编程语言开发人员目的1、掌握综合运用所学知识解决实际问题的能力;2、掌握灵活运用指针和指针数组解决实际问题,从中体会指针对程序设计的作用;3、掌握编程语言的内在机理,提高对各种程序设计语言的理论认识,进而真正掌握C语言;并为下一步学习面向对象语言打下良好的基础;4、初步掌握编译原理的基本原理,以及编译型语言和解释型语言在执行机制上异同,特别是为同学以后自学脚本语言打下良好的理论基础;脚本语言是非常有用的一种开发语言,特别是在

2、大型游戏设计是非常重要的一种编程技术;5、在实战中提高同学的编程能力。一、开发要求1、用C或Java开发一个简单的解释型编程语言;2、实现要求:解释器软件从文件或键盘上逐行接收输入的语句,一条语句是一行,所以不需要以“;”作为语句的结束符。解释器根据语句类型执行不同的动作,遇到输入语句则从键盘接收用户输入的一个整数或一串以回车结束的字符串;遇到输出语句则在屏幕上显示指定的变量的值。3、该编程语言必须支持至少以下功能:⑴变量声明语句:语法:数据类型变量名,变量名,…数据类型要求至少支持整数和字符串,例如:整数学生人数,gradestring学

3、生姓名⑵赋制值语句:语法:变量名=常量/变量名变量名=常量/变量名+常量/变量名变量名=常量/变量名-常量/变量名变量名=常量/变量名*常量/变量名变量名=常量/变量名/常量/变量名要求:常量是整数或字符串,对于整数支持加、减、乘、除运算,对于字符串则只支持加法运算,必须能检查运算或赋值的两个表达式类型是否一致。例:学生姓名=”独孤求败”grade=grade*10⑶输入语句:语法:input变量名;例:input学生姓名⑷输出语句:语法:print变量名;例:print学生姓名二、评分方法1、基本功正确:75分2、开发报告:25分①封面②

4、对软件的总体介绍:概要功能介绍、系统的软件结构(数据结构、全局变量、程序主流程等)③各个主要功能模块(不是每个函数,而是独立功能)的流程图,必要时附主要程序段加以说明。④项目报告中说明程序设计过程中的难点、解决办法及编程小结或体会。三、设计指导解释器的实现关键是符号表,符号表实际上一个如下类型的一维数组tokenTable[100]:structToken{char*pName;//指向某个变量名字符串的保存位置void*pVal;//指向保存某个变量的值的内存地址,使用时需要强制类型转换chartype;//指示某个变量的数据类型:’i’

5、-整数;’s’-字符串intsize;//指示某个变量所占用的内存大小}tokenTable[100];程序的主框架结构如下:intnVal;charsVal[100];structTokentokenTable[100];voidmain(){memset(tokenTable,0,sizeof(tokenTable));循环1、从键盘上读入一串字符保存到s;2、以空格为分割符从s中截取第一个单词;3、如果该单词是数据类型关键字,则循环⑴以逗号为分割符从剩余的s中截取第一个单词;⑵以该单词(即变量名)查tokenTable数组,检查该变量

6、名是否与数组中某个元素的pName所指向的字符串相等;是;提示用户变量名重复定义,退出循环;否则,继续3;⑶在tokenTable数组中寻找一个空的元素,找不到,提示用户系统空间溢出,中断程序;否则,继续4;⑷根据数据类型将相应的type设置为对应的值;⑸调用malloc函数为变量名分配保存空间,并将malloc的返回地址保存到pName中,然后调用strcpy函数将变量名保存到malloc分配的内存中;⑹如果变量是整型数据类型,则用malloc函数为变量分配保存其值的内存空间(sizeof(int)),并将malloc的返回地址保存到pV

7、al中;对于字符串类型,则分配10个字节大小的空间,并将malloc的返回地址保存到pVal中,同时,将tokenTable数组当前元素的size设置为10;4、如果该单词是input关键字,则⑴以剩余的s为变量名查tokenTable数组,检查该变量名是否与数组中某个元素的pName所指向的字符串相等;否;提示用户未定义的变量名,继续循环;否则,继续2;⑵根据tokenTable数组中当前元素的type判断该变量是整数吗?是,执行scanf(“%d”,&nVal);否则,scanf(“%s”,sVal);⑶如果执行的是scanf(“%d”

8、,&nVal)语句,则将nVal复制到tokenTable数组中当前元素的pVal所指向的内存中,退出循环;否则,继续4;⑷判断sVal的长度是否超过了size,否,将sVal复

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

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

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