Licence
—
Version
0.7.4
Deps
2
Vulns
0
Weekly
0
compilex
[](http://badge.fury.io/js/compilex) [](https://travis-ci.org/scriptnull/compilex) [](https://david-dm.org/scriptnull/compilex) [](https://www.npmjs.org/package/compilex) [](https://github.com/scriptnull/compilex/blob/master/License.md) [](https://gitter.im/scriptnull/compilex?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)compilex is a node.js library which is used to build online code compiler/interpreter websites and webservices.
You can compile and respond back outputs for all the languages that can be compiled by the server.
Some of the online code compiling/judging websites are
Using compilex , you can built sites and services like the above said examples.Why compilex ?
- compilex can detect infinite loops in the users program .
- It can compile programs by getting input from STDIN.
- Generates statistics for the administrator.
Supported Languages
compilex is currently in initial development stage . As the library grows , so does the list here .
| Language | Support |
|---|---|
| C | |
| C++ | |
| Java | |
| Python | |
| C# | |
| Visual Basic |
Work Flow
- Get the program as input from the client as a request
- Use compilex modules to compile the program
- Get the output and errors in json and string formats
- Respond the output to the client
Setting Up Compilers
Inorder to compile any programming language , you need to first have the compiler for that programming language in the server machine.
C and C++
- Installation :You need GCC compiler that can compile programs from your cmd/terminal
- Windows - You can get MinGw .
- Linux - Most of the linux versions are installed with gcc by default. If you haven't got , Take a look at Installing GCC .
- Testing the Environment :After installing , set your environment variables for accessing the GCC command lines from any directory
- Windows - create a c file in a directory , execute
g++ filename.c -o output.exe
output.exe
then you will get the output of the program - Linux - create a c file in a directory , execute
gcc filename.c -o output.out
./output.out
then you will get the output of the program
- Windows - create a c file in a directory , execute
Java
- Installion : You need JDK ( Java Development Kit ) to compile Java programs.Click here to download JDK for various platforms.
- Testing the Environment :After installing , set your environment variables for accessing the javac command lines from any directory
- Create a Java file named Main.java with main function
javac Main.java
java Main
then you will get the output of the program.
- Create a Java file named Main.java with main function
Python
- Installation : You can get and install Python from here
- Testing the Environment :After installing , set your environment variables for accessing python command lines from any directory
- Create a python file hello.py and execute
python hello.py
then you will get the output of the program.
- Create a python file hello.py and execute
C# and VB
- Installation : You can have the idea of accessing C# compiler from here . This step also adds VB compiler to the scope automatically as csc and vbc are located in the same directory
- Testing the Environment :After installing , set your environment variables for accessing C# and VB command lines from any directory
- Create a C# or VB file Hello.cs or Hello.vb and execute
csc Hello.cs
Hello.exe
or
vbc Hello.vb
Hello.exe
then you will get the output of the program.
- Create a C# or VB file Hello.cs or Hello.vb and execute
NOTE : Video demos for setting up the compilers and using compilex will be availble soon.
Documentation
1)Require compilex
```javascript var compiler = require('compilex'); var options = {stats : true}; //prints stats on console compiler.init(options); ``` init() creates a folder named temp in your project directory which is used for storage purpose. Before using other methods , make sure to call init() method.2)C and C++
```javascript //if windows var envData = { OS : "windows" , cmd : "g++"}; // (uses g++ command to compile ) //else var envData = { OS : "linux" , cmd : "gcc" }; // ( uses gcc command to compile ) compiler.compileCPP(envData , code , function (data) { res.send(data); //data.error = error message //data.output = output value });//res is the response object
<h5>3)C and C++ with inputs </h5>
```javascript
//if windows
var envData = { OS : "windows" , cmd : "g++"}; // (uses g++ command to compile )
//else
var envData = { OS : "linux" , cmd : "gcc" }; // ( uses gcc command to compile )
compiler.compileCPPWithInput(envData , code , input , function (data) {
res.send(data);
});
4)Java
```javascript //if windows var envData = { OS : "windows"}; //else var envData = { OS : "linux" }; // (Support for Linux in Next version) compiler.compileJava( envData , code , function(data){ res.send(data); }); ```5)Java with inputs
```javascript //if windows var envData = { OS : "windows"}; //else var envData = { OS : "linux" }; // (Support for Linux in Next version) compiler.compileJavaWithInput( envData , code , input , function(data){ res.send(data); }); ```6)Python
```javascript //if windows var envData = { OS : "windows"}; //else var envData = { OS : "linux" }; compiler.compilePython( envData , code , function(data){ res.send(data); }); ```7)Python with inputs
```javascript //if windows var envData = { OS : "windows"}; //else var envData = { OS : "linux" }; compiler.compilePythonWithInput( envData , code , input , function(data){ res.send(data); }); ```8)C#
```javascript var envData = { OS : "windows"}; //mono modules for linux is not included till now compiler.compileCS( envData , code , function(data){ res.send(data); }); ```9)C# with inputs
```javascriptvar envData = { OS : "windows"};
//mono modules for linux is not included till now
compiler.compileCSWithInput( envData , code , input , function(data){
res.send(data);
});
<h5>10)Visual Basic</h5>
```javascript
var envData = { OS : "windows"};
compiler.compileVB( envData , code , function(data){
res.send(data);
});
11)Visual Basic with inputs
```javascriptvar envData = { OS : "windows"};
compiler.compileVBWithInput( envData , code , input , function(data){
res.send(data);
});
<h5>12)Memory Management </h5>
All the temporary files ( source code and executables ) are created in your temp directory.
flush and flushSync helps you to free the memory by deleting the temporary files.
```javascript
compiler.flush(function(){
console.log('All temporary files flushed !');
});
Synchronous version of flush
compiler.flushSync();