【后端】Popush后端添加对Haskell语言的支持
来源:互联网 发布:淘宝店首页装修教程 编辑:程序博客网 时间:2024/06/06 05:02
配置好Linux环境后,要添加Haskell语言支持,首先需要安装Haskell Platform;
根据自己的操作系统,在http://www.haskell.org/platform/上选择相应的Haskell Platform安装即可。
其次,我们需要知道Popush如何调用外部解释器。
在models/runner.js中
function Runner(name, type, src){ if (!(this instanceof Runner)) return new Runner(type, src);var that = this;that.name = name;that.src = src;that.dir = prefix + '/' + new Date().getTime().toString();that.path = that.dir + '/' + that.name;that.clean = 'rm -rf ' + that.dir;if(process.platform == 'linux'){switch(type){case 'c':that.script = [{cmd:'gcc', args:['-o', that.name + '.out', that.name]},{cmd:A, args:['0', that.name + '.out'], start:true}];break;case 'cpp':that.script = [{cmd:'g++', args:['-o', that.name + '.out', that.name]},{cmd:A, args:['0', that.name + '.out'], start:true}];break;case 'js':that.script = [{cmd:A, args:['1', NODE, that.name], start:true, filter:function(data){return data.replace(new RegExp(cwd + '/' + that.dir + '/', 'gm'), '');}}];break;case 'py':that.script = [{cmd:A, args:['0', PYTHON, that.name], start:true}];break;case 'pl':that.script = [{cmd:A, args:['0', PERL, that.name], start:true}];break;case 'rb':that.script = [{cmd:A, args:['1', RUBY, that.name], start:true}];break;case 'lua':that.script = [{cmd:A, args:['0', LUA, that.name], start:true, filter:function(data){return data.replace(new RegExp(LUA, 'gm'), 'lua');}}];break;case 'java':that.class = that.name.substr(0, that.name.lastIndexOf('.'));that.script = [{cmd:'javac', args:[that.name]},{cmd:A, args:['1', JAVA, that.class], start:true, filter:function(data){return data.replace(new RegExp(JAVA, 'gm'), 'java');}}];break;}}else{switch(type){case 'c':that.script = [{cmd:'gcc', args:['-o', that.name + '.out', that.name]},{cmd:'./' + that.name + '.out', args:[], start:true}];break;case 'cpp':that.script = [{cmd:'g++', args:['-o', that.name + '.out', that.name]},{cmd:'./' + that.name + '.out', args:[], start:true}];break;case 'js':that.script = [{cmd:'node', args:[that.name], start:true, filter:function(data){return data.replace(new RegExp(cwd + '/' + that.dir + '/', 'gm'), '');}}];break;case 'py':that.script = [{cmd:'python', args:[that.name], start:true}];break;case 'pl':that.script = [{cmd:'perl', args:[that.name], start:true}];break;case 'rb':that.script = [{cmd:'ruby', args:[that.name], start:true}];break;case 'lua':that.script = [{cmd:'lua', args:[that.name], start:true/* , filter:function(data){return data.replace(new RegExp(LUA, 'gm'), 'lua');} */}];break;case 'java':that.class = that.name.substr(0, that.name.lastIndexOf('.'));that.script = [{cmd:'javac', args:[that.name]},{cmd:'java', args:[that.class], start:true}];break;}}};可以看到这里分别对后缀为c, cpp, js等文件调用了解释器。因此我们只需要在中间添加一个对hs后缀调用haskell解释器的代码段即可。
添加如下:
case 'hs':that.script = [{cmd:'ghc', args:['-o', that.name + '.out', that.name]},{cmd:A, args:['0', that.name + '.out'], start:true}];break;
另一方面,在创建.hs文件时发现他的编译按钮是灰色不可点击的。因此我们需要找到能够允许我们点击按钮的代码段。
在/static/js/room/data.js中,我们可以看到如下代码
app.RunableExt = ['c','cpp', 'js', 'py', 'pl','rb','lua', 'java'];通过阅读代码我们知道RunableExt中含有的后缀即为当前允许编译的文件后缀,因此只需要在其中添加hs即可。
添加完成如下:
app.RunableExt = ['c','cpp', 'js', 'py', 'pl','rb','lua', 'java', 'hs'];将这两段代码添加完毕后即在Popush里添加了对Haskell语言的支持。
0 0
- 【后端】Popush后端添加对Haskell语言的支持
- Popush之Haskell语言支持——傅展升
- nginx支持后端的etag
- 服务器后端的编程语言
- Popush部署与Haskell支持部分实验汇报
- 后端
- 对前后端分离的观点
- Popush Haskell Support
- Cinder 添加后端
- 【翻译】服务器后端的编程语言
- java,后端语言的学习视频
- 前后端语言以及服务器的简介
- 后端语言-Coffeescript
- web前端后端语言
- 【团队介绍】Popush部署与Haskell支持人员分工与感想总结
- cinder对后端驱动要求的Minimum Features
- Nginx1.1.4+ 对后端机器的长连接特性
- Go语言:前后端对接
- dfs 经典题目之 "POJ 1979: Red and Black" "POJ 3009: Curling 2.0"
- 《谈中国》韩寒
- H.264中的Slice
- android中webview加载本地html并且相互交互
- Sundy嵌入式底层开发课程笔记2 --linux命令类库机制及常用命令
- 【后端】Popush后端添加对Haskell语言的支持
- gdb学习step by step
- 常用的CL6x编译选项
- POJ1422 Air Raid 【DAG最小路径覆盖】
- C《贪吃蛇》简易字符版
- 苹果推送 pem证书的生成
- html之js-1
- JavaScript学习笔记之JavaScript代码在HTML页面中的位置
- hdu 1021