71 lines
3.2 KiB
PHP
71 lines
3.2 KiB
PHP
<?php declare(strict_types=1);
|
|
|
|
namespace Picea\Language;
|
|
|
|
use Picea\Compiler;
|
|
|
|
class DefaultRegistrations implements LanguageRegistration
|
|
{
|
|
public function __construct(
|
|
protected array $extensions,
|
|
protected array $syntaxes,
|
|
protected array $controlStructures,
|
|
) { }
|
|
|
|
public function registerAll(Compiler $compiler) : void
|
|
{
|
|
$this->registerSyntax($compiler);
|
|
$this->registerControlStructure($compiler);
|
|
$this->registerExtension($compiler);
|
|
}
|
|
|
|
public function registerSyntax(Compiler $compiler) : void
|
|
{
|
|
$compiler->registerSyntax(new \Picea\Syntax\CommentToken());
|
|
$compiler->registerSyntax(new \Picea\Syntax\EchoRawToken());
|
|
$compiler->registerSyntax(new \Picea\Syntax\EchoSafeToken());
|
|
|
|
foreach($this->syntaxes ?? [] as $syntax) {
|
|
$compiler->registerSyntax($syntax);
|
|
}
|
|
}
|
|
|
|
public function registerControlStructure(Compiler $compiler) : void
|
|
{
|
|
$compiler->registerControlStructure(new \Picea\ControlStructure\TryCatchToken());
|
|
$compiler->registerControlStructure(new \Picea\ControlStructure\NamespaceToken());
|
|
$compiler->registerControlStructure(new \Picea\ControlStructure\UseToken());
|
|
$compiler->registerControlStructure(new \Picea\ControlStructure\IfToken());
|
|
$compiler->registerControlStructure(new \Picea\ControlStructure\ForeachToken());
|
|
$compiler->registerControlStructure(new \Picea\ControlStructure\ForToken());
|
|
$compiler->registerControlStructure(new \Picea\ControlStructure\WhileToken());
|
|
$compiler->registerControlStructure(new \Picea\ControlStructure\OrToken());
|
|
$compiler->registerControlStructure(new \Picea\ControlStructure\SwitchToken());
|
|
$compiler->registerControlStructure(new \Picea\ControlStructure\DefaultToken());
|
|
$compiler->registerControlStructure(new \Picea\ControlStructure\BreakToken());
|
|
$compiler->registerControlStructure(new \Picea\ControlStructure\ContinueToken());
|
|
$compiler->registerControlStructure(new \Picea\ControlStructure\ExtendsToken());
|
|
$compiler->registerControlStructure(new \Picea\ControlStructure\SectionToken());
|
|
$compiler->registerControlStructure(new \Picea\ControlStructure\FunctionToken());
|
|
$compiler->registerControlStructure(new \Picea\ControlStructure\BlockToken());
|
|
$compiler->registerControlStructure(new \Picea\ControlStructure\IncludeToken());
|
|
$compiler->registerControlStructure(new \Picea\ControlStructure\ViewToken());
|
|
|
|
foreach($this->controlStructures ?? [] as $controlStructure) {
|
|
$compiler->registerControlStructure($controlStructure);
|
|
}
|
|
}
|
|
|
|
public function registerExtension(Compiler $compiler) : void
|
|
{
|
|
$compiler->registerExtension(new \Picea\Extension\PhpExtension());
|
|
$compiler->registerExtension(new \Picea\Extension\PrintExtension());
|
|
$compiler->registerExtension(new \Picea\Extension\JsonExtension());
|
|
$compiler->registerExtension(new \Picea\Extension\BatchExtension());
|
|
|
|
foreach($this->extensions ?? [] as $extension) {
|
|
$compiler->registerExtension($extension);
|
|
}
|
|
}
|
|
}
|