软件工程与计算Ⅰ大作业
本次的作业是完成一个多语言的简单IDE。该IDE支持源码的保存和读取,代码执行以及历史版本保留等功能。支持的语言包括BF语言、Ook!语言等。
关于BF语言的说明,请参考:https://zh.wikipedia.org/wiki/Brainfuck
关于Ook!语言的说明,请参考:https://esolangs.org/wiki/Ook!
- 本IDE使用Client-Server模式,需要有客户端与服务器端。客户端负责提供GUI界面,服务器端负责存取与执行代码。强调一下,代码的保存、读取、执行等功能都是在服务器上完成的
- 客户端GUI界面需要包括输入输出窗口以及新建保存等必要的菜单选项。后文有对界面示意的描述。
- 创建文件的时候,选取文件类型。默认文件后缀BF语言.bf;Ook!语言为.ook。
- 实现代码的执行功能。根据文件的类型,自动选择相应的语言解释器。客户端将源码传到服务器端执行后,服务器端将运行结果返回客户端。BF解释器需要自行实现,输入是BF代码与输入数据,输出是该代码的执行结果,其中所有的输入输出都是字符串。
- 实现登录登出功能以支持多用户操作。每个用户只能访问自己创建的文件。
- 实现源码文件的历史版本保留功能,可以将代码恢复到过去某一次保存后的状态。假设用户在编辑代码时保存了三次,每保存一次就在服务器端生成一个历史版本,如A、B、C(如果两次保存之间代码没有修改则不做任何操作)。历史版本保留功能允许用户把当前代码恢复到A、B、C中任意一个版本。文件可以保留的历史版本数自定(比如只保留最后保存的十次代码)。
比如一个执行两个1位数相加的程序,就有如下的输入与输出
输入代码 | 输入数据 | 输出结果 |
---|---|---|
,>++++++[<-------->-],,[<+>-],<.>. | 3 4 | 7 |
实现撤销(undo)与重做(redo)功能,不使用GUI库自带的撤销与重做功能。
字符 | 含义 |
---|---|
> | 指针加一 |
< | 指针减一 |
+ | 指针指向的字节的值加一 |
- | 指针指向的字节的值减一 |
. | 输出指针指向的单元内容(ASCII码) |
, | 输入内容到指针指向的单元(ASCII码) |
[ | 如果指针指向的单元值为零,向后跳转到对应的]指令的次一指令处 |
] | 如果指针指向的单元值不为零,向前跳转到对应的[指令的次一指令处 |