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