Skip to content

Commit 5dc9257

Browse files
committed
Improve parser documentation
1 parent bee677f commit 5dc9257

File tree

1 file changed

+29
-130
lines changed

1 file changed

+29
-130
lines changed

Writerside/topics/parser.md

Lines changed: 29 additions & 130 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,38 @@ information and grammar checking.
2424
To create a parser instance, the `TypeLang\Parser\Parser` class is used.
2525
To run code analysis, you should use the `parse()` method.
2626

27-
<deflist>
28-
<def title="Method signature">
27+
```php
28+
$parser = new TypeLang\Parser\Parser();
29+
30+
$result = $parser->parse('example');
31+
```
32+
33+
```php
34+
TypeLang\Parser\Node\Stmt\NamedTypeNode {
35+
+offset: 0
36+
+name: TypeLang\Parser\Node\Name {
37+
+offset: 0
38+
-parts: array:1 [
39+
0 => TypeLang\Parser\Node\Identifier {
40+
+offset: 0
41+
+value: "example"
42+
}
43+
]
44+
}
45+
+arguments: null
46+
+fields: null
47+
}
48+
```
49+
{collapsible="true" collapsed-title="Result"}
50+
51+
### Parser Arguments
2952

30-
The first argument of the `parse()` method corresponds to the source code data
53+
The first argument of the `TypeLang\Parser\Parser::parse(<source>)` method corresponds to the source code data
3154
and can be of the following types:
3255

56+
<deflist>
57+
<def title="Method signature">
58+
3359
<tabs>
3460
<tab title="string">
3561

@@ -66,130 +92,3 @@ and can be of the following types:
6692
</tabs>
6793
</def>
6894
</deflist>
69-
70-
```php
71-
$parser = new TypeLang\Parser\Parser();
72-
73-
$result = $parser->parse(<<<'PHP'
74-
array<array-key, object{
75-
key: int<0, max>,
76-
...
77-
}>
78-
PHP);
79-
80-
var_dump($result);
81-
```
82-
{prompt="1"}
83-
84-
85-
```php
86-
TypeLang\Parser\Node\Stmt\NamedTypeNode {
87-
+offset: 0
88-
+name: TypeLang\Parser\Node\Name {
89-
+offset: 0
90-
-parts: array:1 [
91-
0 => TypeLang\Parser\Node\Identifier {
92-
+offset: 0
93-
+value: "array"
94-
}
95-
]
96-
}
97-
+arguments: TypeLang\Parser\Node\Stmt\Template\ArgumentsListNode {
98-
+offset: 5
99-
+items: array:2 [
100-
0 => TypeLang\Parser\Node\Stmt\Template\ArgumentNode {
101-
+offset: 6
102-
+value: TypeLang\Parser\Node\Stmt\NamedTypeNode {
103-
+offset: 6
104-
+name: TypeLang\Parser\Node\Name {
105-
+offset: 6
106-
-parts: array:1 [
107-
0 => TypeLang\Parser\Node\Identifier {
108-
+offset: 6
109-
+value: "array-key"
110-
}
111-
]
112-
}
113-
+arguments: null
114-
+fields: null
115-
}
116-
}
117-
1 => TypeLang\Parser\Node\Stmt\Template\ArgumentNode {
118-
+offset: 17
119-
+value: TypeLang\Parser\Node\Stmt\NamedTypeNode {
120-
+offset: 17
121-
+name: TypeLang\Parser\Node\Name {
122-
+offset: 17
123-
-parts: array:1 [
124-
0 => TypeLang\Parser\Node\Identifier {
125-
+offset: 17
126-
+value: "object"
127-
}
128-
]
129-
}
130-
+arguments: null
131-
+fields: TypeLang\Parser\Node\Stmt\Shape\FieldsListNode {
132-
+offset: 27
133-
+items: array:1 [
134-
0 => TypeLang\Parser\Node\Stmt\Shape\NamedFieldNode {
135-
+offset: 27
136-
+type: TypeLang\Parser\Node\Stmt\NamedTypeNode {
137-
+offset: 32
138-
+name: TypeLang\Parser\Node\Name {
139-
+offset: 32
140-
-parts: array:1 [
141-
0 => TypeLang\Parser\Node\Identifier {
142-
+offset: 32
143-
+value: "int"
144-
}
145-
]
146-
}
147-
+arguments: TypeLang\Parser\Node\Stmt\Template\ArgumentsListNode {
148-
+offset: 35
149-
+items: array:2 [
150-
0 => TypeLang\Parser\Node\Stmt\Template\ArgumentNode {
151-
+offset: 36
152-
+value: TypeLang\Parser\Node\Literal\IntLiteralNode {
153-
+offset: 36
154-
+raw: "0"
155-
+value: 0
156-
}
157-
}
158-
1 => TypeLang\Parser\Node\Stmt\Template\ArgumentNode {
159-
+offset: 39
160-
+value: TypeLang\Parser\Node\Stmt\NamedTypeNode {
161-
+offset: 39
162-
+name: TypeLang\Parser\Node\Name {
163-
+offset: 39
164-
-parts: array:1 [
165-
0 => TypeLang\Parser\Node\Identifier {
166-
+offset: 39
167-
+value: "max"
168-
}
169-
]
170-
}
171-
+arguments: null
172-
+fields: null
173-
}
174-
}
175-
]
176-
}
177-
+fields: null
178-
}
179-
+optional: false
180-
+key: TypeLang\Parser\Node\Identifier {
181-
+offset: 27
182-
+value: "key"
183-
}
184-
}
185-
]
186-
+sealed: false
187-
}
188-
}
189-
}
190-
]
191-
}
192-
+fields: null
193-
}
194-
```
195-
{collapsible="true" collapsed-title="Result"}

0 commit comments

Comments
 (0)