type-lang/parser
最新稳定版本:1.6.0
Composer 安装命令:
composer require type-lang/parser
包简介
Library for parsing and validating TypeLang syntax and converting it into AST nodes
关键字:
README 文档
README
Reference implementation for TypeLang Parser.
TypeLang is a declarative type language inspired by static analyzers like PHPStan and Psalm.
Read documentation pages for more information.
Installation
TypeLang Parser is available as Composer repository and can be installed using the following command in a root of your project:
composer require type-lang/parser
Quick Start
$parser = new \TypeLang\Parser\Parser(); $type = $parser->parse(<<<'PHP' array{ key: callable(Example, int): mixed, ... } PHP); var_dump($type);
Expected Output:
TypeLang\Parser\Node\Stmt\NamedTypeNode { +offset: 0 +name: TypeLang\Parser\Node\Name { +offset: 0 -parts: array:1 [ 0 => TypeLang\Parser\Node\Identifier { +offset: 0 +value: "array" } ] } +arguments: null +fields: TypeLang\Parser\Node\Stmt\Shape\FieldsListNode { +offset: 11 +items: array:1 [ 0 => TypeLang\Parser\Node\Stmt\Shape\NamedFieldNode { +offset: 11 +type: TypeLang\Parser\Node\Stmt\CallableTypeNode { +offset: 16 +name: TypeLang\Parser\Node\Name { +offset: 16 -parts: array:1 [ 0 => TypeLang\Parser\Node\Identifier { +offset: 16 +value: "callable" } ] } +parameters: TypeLang\Parser\Node\Stmt\Callable\ParametersListNode { +offset: 25 +items: array:2 [ 0 => TypeLang\Parser\Node\Stmt\Callable\ParameterNode { +offset: 25 +type: TypeLang\Parser\Node\Stmt\NamedTypeNode { +offset: 25 +name: TypeLang\Parser\Node\Name { +offset: 25 -parts: array:1 [ 0 => TypeLang\Parser\Node\Identifier { +offset: 25 +value: "Example" } ] } +arguments: null +fields: null } +name: null +output: false +variadic: false +optional: false } 1 => TypeLang\Parser\Node\Stmt\Callable\ParameterNode { +offset: 34 +type: TypeLang\Parser\Node\Stmt\NamedTypeNode { +offset: 34 +name: TypeLang\Parser\Node\Name { +offset: 34 -parts: array:1 [ 0 => TypeLang\Parser\Node\Identifier { +offset: 34 +value: "int" } ] } +arguments: null +fields: null } +name: null +output: false +variadic: false +optional: false } ] } +type: TypeLang\Parser\Node\Stmt\NamedTypeNode { +offset: 40 +name: TypeLang\Parser\Node\Name { +offset: 40 -parts: array:1 [ 0 => TypeLang\Parser\Node\Identifier { +offset: 40 +value: "mixed" } ] } +arguments: null +fields: null } } +optional: false +key: TypeLang\Parser\Node\Identifier { +offset: 11 +value: "key" } } ] +sealed: false } }
统计信息
- 总下载量: 54.69k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 51
- 点击次数: 0
- 依赖项目数: 7
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2023-11-04