2020-05-28 11:55:58 +07:00
|
|
|
<?php
|
|
|
|
require('vendor/autoload.php');
|
|
|
|
|
2020-05-30 18:47:54 +07:00
|
|
|
function ml_get_lisp(): array
|
2020-05-28 11:55:58 +07:00
|
|
|
{
|
2020-05-30 18:47:54 +07:00
|
|
|
$tokenizer = new MadLisp\Tokenizer();
|
|
|
|
$reader = new MadLisp\Reader();
|
|
|
|
$eval = new MadLisp\Evaller();
|
|
|
|
$printer = new MadLisp\Printer();
|
|
|
|
|
|
|
|
$lisp = new MadLisp\Lisp($tokenizer, $reader, $eval, $printer);
|
|
|
|
|
2020-05-31 21:16:20 +07:00
|
|
|
// Environment
|
2020-05-28 11:55:58 +07:00
|
|
|
$env = new MadLisp\Env();
|
|
|
|
|
2020-05-31 21:16:20 +07:00
|
|
|
// Register core functions
|
|
|
|
$lisp->register($env);
|
|
|
|
|
|
|
|
// Register libraries
|
2020-06-02 09:51:21 +07:00
|
|
|
(new MadLisp\Lib\Collections())->register($env);
|
2020-05-31 19:02:21 +07:00
|
|
|
(new MadLisp\Lib\Compare())->register($env);
|
2020-06-02 09:51:21 +07:00
|
|
|
(new MadLisp\Lib\Math())->register($env);
|
2020-06-02 18:03:05 +07:00
|
|
|
(new MadLisp\Lib\Strings())->register($env);
|
2020-05-31 19:16:40 +07:00
|
|
|
(new MadLisp\Lib\Types())->register($env);
|
2020-05-28 11:55:58 +07:00
|
|
|
|
2020-05-30 18:47:54 +07:00
|
|
|
return [$lisp, $env];
|
2020-05-28 17:10:00 +07:00
|
|
|
}
|