PHP TypeLang Help

The Printer Component

The printer package is responsible for visualizing the AST as string formats.

Installation

Requirements:

  • PHP >= 8.1

Usage

Package supports two printer classes.

TypeLang\Printer\PrettyPrinter

Used to display types as accurately as possible.

TypeLang\Printer\NativeTypePrinter

Used to display types compatible with PHP.

Any printer implements the TypeLang\Printer\PrinterInterface interface, which contains an print() method for displaying ASTs as formatted strings.

Shapes

$parser = new TypeLang\Parser\Parser(); $printer = new TypeLang\Printer\PrettyPrinter(); $result = $parser->parse(<<<'PHP' object{key: type, some: (list<T>|some<T>), ...<non-empty-string, int>} PHP); echo $printer->print($result);
$parser = new TypeLang\Parser\Parser(); $printer = new TypeLang\Printer\NativeTypePrinter(); $result = $parser->parse(<<<'PHP' object{key: type, some: (list<T>|some<T>), ...<non-empty-string, int>} PHP); echo $printer->print($result);

Callables

$parser = new TypeLang\Parser\Parser(); $printer = new TypeLang\Printer\PrettyPrinter(); $result = $parser->parse(<<<'PHP' callable(...A &$a)|callable(B &...$b) PHP); echo $printer->print($result);
$parser = new TypeLang\Parser\Parser(); $printer = new TypeLang\Printer\NativeTypePrinter(); $result = $parser->parse(<<<'PHP' callable(...A &$a)|callable(B &...$b) PHP); echo $printer->print($result);

Conditional

$parser = new TypeLang\Parser\Parser(); $printer = new TypeLang\Printer\PrettyPrinter(); $result = $parser->parse(<<<'PHP' $arg is null ? non-empty-string : int<0, max> PHP); echo $printer->print($result);
$parser = new TypeLang\Parser\Parser(); $printer = new TypeLang\Printer\NativeTypePrinter(); $result = $parser->parse(<<<'PHP' $arg is null ? non-empty-string : int<0, max> PHP); echo $printer->print($result);
03 February 2025