Dorm-introducing-multi-compiler-package-πŸ„-for-php

- 4 mins

Dorm is a multi compiler package designed to handle compilation and running of non-php code in your project, now the package support compilation and running of c, c++, python2, python3 and java.

Installing compilers and setting things up

Compilers

C ======> GCC compiler
C++ ======> G++ compiler
Java ======> JDK
Python ======> Python2.7 or Python 3.4 (configure it with python2 or python3 according to your needs).

default paths are :-

"cpp" => 'C:/MinGW/bin/g++.exe',
"c" => 'C:/MinGW/bin/gcc.exe',
"java" => 'javac',
"python2" => 'C:/Python27/python2.exe',
"python3" => 'C:/Python34/python3.exe'

and configure it’s paths in the vendor/aa-ahmed-aa/dorm/src/Config.php for every compiler the default for

Install Dorm

install the package using composer composer require aa-ahmed-aa/dorm

Let’s Compiler and run some code

require ('vendor/autoload.php');
use Ahmedkhd\Dorm\Dorm;

$obj = new Dorm();

//set compilation path
$obj->setCompilationPath( __DIR__ );

$cpp_code = <<<'EOT'
	#include<iostream>
	using namespace std;

	int main()
	{
	    cout<<"hello, c plus plus";
	    return 0;
				}
EOT;
	
$comp = $obj->compile( $cpp_code, "cpp" );
echo "Compilation : " . ( ! is_array($comp) ? "Success" : "Fail" )  . "\n";
	echo "Running is : " . ( ! is_array($comp) ? $obj->run() : "Fail" ) . "\n";
require ('vendor/autoload.php');
use Ahmedkhd\Dorm\Dorm;

$obj = new Dorm();

//set compilation path
$obj->setCompilationPath( __DIR__ );

//java
$java_code = <<<'EOT'
	public class Main {
	public static void main(String[] args) {
        // Prints "Hello, World" to the terminal window.
        System.out.println("Hello, Java");
    }

}
EOT;


$comp = $obj->compile( $java_code, "java" );
echo "Compilation : " . ( ! is_array($comp) ? "Success" : "Fail" )  . "\n";
echo "Running is : " . ( ! is_array($comp) ? $obj->run() : "Fail" ) . "\n";
require ('vendor/autoload.php');
use Ahmedkhd\Dorm\Dorm;

$obj = new Dorm();

//set compilation path
$obj->setCompilationPath( __DIR__ );

$python_code = <<<'EOT'
print "Hello, Python3.4"
EOT;

$comp = $obj->compile( $python_code, "python2" );
echo "Running : " . implode( $comp )  . "\n";

Adding you own Compiler

After installing your own compiler you need to go to vendor/aa-ahmed-aa/dorm/src/Config.php and add your compiler to the $compilers array.

$compilers = [
    "__COMPILER_NAME__"=>[
	"path" => "__COMPILER_PATH__",
	"file_extension" =>'__CODE_FILE_EXTENSION_',
	"compile_func" => __NAME_FOR_YOUR_COMPILER_FUNCTION__,
	"run_func" => __NAME_FOR_YOUR_RUN_FUNCTION__
    ]
];

path => is the path of your compiler or (alias_name in sys env).
file_extension => the extensions of files this compiler uses.
compile_func => compilation function in the vendor/aa-ahmed-aa/dorm/src/Core.php.
run_func => run function in the vendor/aa-ahmed-aa/dorm/src/Core.php.

Then you need to go to you vendor/aa-ahmed-aa/dorm/src/Core.php and implement your compilation and running for this type of compilers after than you only need to use compile and run for any type of compilers.

Useful Function

Support

If you find any problem with this package feel free to open an issue or
contact me at ahmedkhaled36@hotmail.com
Github πŸ”₯ : https://github.com/aa-ahmed-aa/Dorm

rss facebook twitter github gitlab youtube mail spotify lastfm instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora quora