Skip to content

nju161250102/SE-I-homework

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SE-I-homework

软件工程与计算Ⅰ大作业

总体要求

本次的作业是完成一个多语言的简单IDE。该IDE支持源码的保存和读取,代码执行以及历史版本保留等功能。支持的语言包括BF语言、Ook!语言等。

参考资料

关于BF语言的说明,请参考:https://zh.wikipedia.org/wiki/Brainfuck
关于Ook!语言的说明,请参考:https://esolangs.org/wiki/Ook!

具体要求

  1. 本IDE使用Client-Server模式,需要有客户端与服务器端。客户端负责提供GUI界面,服务器端负责存取与执行代码。强调一下,代码的保存、读取、执行等功能都是在服务器上完成的
  2. 客户端GUI界面需要包括输入输出窗口以及新建保存等必要的菜单选项。后文有对界面示意的描述。
  3. 创建文件的时候,选取文件类型。默认文件后缀BF语言.bf;Ook!语言为.ook。
  4. 实现代码的执行功能。根据文件的类型,自动选择相应的语言解释器。客户端将源码传到服务器端执行后,服务器端将运行结果返回客户端。BF解释器需要自行实现,输入是BF代码与输入数据,输出是该代码的执行结果,其中所有的输入输出都是字符串。
  5. 实现登录登出功能以支持多用户操作。每个用户只能访问自己创建的文件。
  6. 实现源码文件的历史版本保留功能,可以将代码恢复到过去某一次保存后的状态。假设用户在编辑代码时保存了三次,每保存一次就在服务器端生成一个历史版本,如A、B、C(如果两次保存之间代码没有修改则不做任何操作)。历史版本保留功能允许用户把当前代码恢复到A、B、C中任意一个版本。文件可以保留的历史版本数自定(比如只保留最后保存的十次代码)。

比如一个执行两个1位数相加的程序,就有如下的输入与输出

输入代码 输入数据 输出结果
,>++++++[<-------->-],,[<+>-],<.>. 3 4 7

加分项

实现撤销(undo)与重做(redo)功能,不使用GUI库自带的撤销与重做功能。

部分语法

字符 含义
> 指针加一
< 指针减一
+ 指针指向的字节的值加一
- 指针指向的字节的值减一
. 输出指针指向的单元内容(ASCII码)
, 输入内容到指针指向的单元(ASCII码)
[ 如果指针指向的单元值为零,向后跳转到对应的]指令的次一指令处
] 如果指针指向的单元值不为零,向前跳转到对应的[指令的次一指令处

About

软件工程与计算Ⅰ大作业

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages