jaclang 0.0.5__py3-none-any.whl → 0.0.8__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of jaclang might be problematic. Click here for more details.
- jaclang/__init__.py +2 -1
- jaclang/cli/__jac_gen__/__init__.py +0 -0
- jaclang/cli/__jac_gen__/cli.py +175 -0
- jaclang/cli/__jac_gen__/cmds.py +132 -0
- jaclang/cli/cli.jac +2 -2
- jaclang/cli/cmds.jac +8 -2
- jaclang/cli/impl/__jac_gen__/__init__.py +0 -0
- jaclang/cli/impl/__jac_gen__/cli_impl.py +16 -0
- jaclang/cli/impl/__jac_gen__/cmds_impl.py +26 -0
- jaclang/cli/impl/cli_impl.jac +25 -8
- jaclang/cli/impl/cmds_impl.jac +35 -6
- jaclang/core/__jac_gen__/__init__.py +0 -0
- jaclang/core/__jac_gen__/primitives.py +567 -0
- jaclang/core/impl/__jac_gen__/__init__.py +0 -0
- jaclang/core/impl/__jac_gen__/arch_impl.py +24 -0
- jaclang/core/impl/__jac_gen__/element_impl.py +26 -0
- jaclang/core/impl/__jac_gen__/exec_ctx_impl.py +12 -0
- jaclang/core/impl/__jac_gen__/memory_impl.py +14 -0
- jaclang/core/impl/element_impl.jac +3 -3
- jaclang/core/impl/exec_ctx_impl.jac +3 -6
- jaclang/core/primitives.jac +4 -3
- jaclang/jac/absyntree.py +555 -180
- jaclang/jac/constant.py +6 -0
- jaclang/jac/importer.py +34 -56
- jaclang/jac/langserve.py +26 -0
- jaclang/jac/lexer.py +35 -3
- jaclang/jac/parser.py +146 -115
- jaclang/jac/passes/blue/__init__.py +8 -3
- jaclang/jac/passes/blue/ast_build_pass.py +454 -305
- jaclang/jac/passes/blue/blue_pygen_pass.py +112 -74
- jaclang/jac/passes/blue/decl_def_match_pass.py +49 -277
- jaclang/jac/passes/blue/import_pass.py +1 -1
- jaclang/jac/passes/blue/pyout_pass.py +74 -0
- jaclang/jac/passes/blue/semantic_check_pass.py +37 -0
- jaclang/jac/passes/blue/sym_tab_build_pass.py +1045 -0
- jaclang/jac/passes/blue/tests/test_ast_build_pass.py +2 -2
- jaclang/jac/passes/blue/tests/test_blue_pygen_pass.py +9 -28
- jaclang/jac/passes/blue/tests/test_decl_def_match_pass.py +13 -22
- jaclang/jac/passes/blue/tests/test_sym_tab_build_pass.py +22 -0
- jaclang/jac/passes/ir_pass.py +8 -6
- jaclang/jac/passes/purple/__jac_gen__/__init__.py +0 -0
- jaclang/jac/passes/purple/__jac_gen__/analyze_pass.py +37 -0
- jaclang/jac/passes/purple/__jac_gen__/purple_pygen_pass.py +305 -0
- jaclang/jac/passes/purple/impl/__jac_gen__/__init__.py +0 -0
- jaclang/jac/passes/purple/impl/__jac_gen__/purple_pygen_pass_impl.py +23 -0
- jaclang/jac/passes/purple/impl/purple_pygen_pass_impl.jac +2 -5
- jaclang/jac/symtable.py +154 -0
- jaclang/jac/tests/fixtures/__jac_gen__/__init__.py +0 -0
- jaclang/jac/tests/fixtures/__jac_gen__/hello_world.py +16 -0
- jaclang/jac/tests/fixtures/fam.jac +7 -8
- jaclang/jac/tests/fixtures/mod_doc_test.jac +1 -0
- jaclang/jac/tests/test_parser.py +8 -0
- jaclang/jac/transform.py +41 -14
- jaclang/jac/transpiler.py +18 -9
- jaclang/utils/fstring_parser.py +2 -2
- jaclang/utils/helpers.py +41 -0
- jaclang/utils/lang_tools.py +12 -2
- jaclang/utils/test.py +41 -0
- jaclang/vendor/__init__.py +1 -0
- jaclang/vendor/pygls/__init__.py +25 -0
- jaclang/vendor/pygls/capabilities.py +502 -0
- jaclang/vendor/pygls/client.py +176 -0
- jaclang/vendor/pygls/constants.py +26 -0
- jaclang/vendor/pygls/exceptions.py +220 -0
- jaclang/vendor/pygls/feature_manager.py +241 -0
- jaclang/vendor/pygls/lsp/__init__.py +139 -0
- jaclang/vendor/pygls/lsp/client.py +2224 -0
- jaclang/vendor/pygls/lsprotocol/__init__.py +2 -0
- jaclang/vendor/pygls/lsprotocol/_hooks.py +1233 -0
- jaclang/vendor/pygls/lsprotocol/converters.py +17 -0
- jaclang/vendor/pygls/lsprotocol/types.py +12820 -0
- jaclang/vendor/pygls/lsprotocol/validators.py +47 -0
- jaclang/vendor/pygls/progress.py +79 -0
- jaclang/vendor/pygls/protocol.py +1184 -0
- jaclang/vendor/pygls/server.py +620 -0
- jaclang/vendor/pygls/uris.py +184 -0
- jaclang/vendor/pygls/workspace/__init__.py +81 -0
- jaclang/vendor/pygls/workspace/position.py +204 -0
- jaclang/vendor/pygls/workspace/text_document.py +234 -0
- jaclang/vendor/pygls/workspace/workspace.py +311 -0
- {jaclang-0.0.5.dist-info → jaclang-0.0.8.dist-info}/METADATA +1 -1
- jaclang-0.0.8.dist-info/RECORD +118 -0
- jaclang/core/jaclang.jac +0 -62
- jaclang/jac/passes/blue/tests/test_type_analyze_pass.py +0 -53
- jaclang/jac/passes/blue/type_analyze_pass.py +0 -728
- jaclang/jac/sym_table.py +0 -127
- jaclang-0.0.5.dist-info/RECORD +0 -73
- /jaclang/{utils → vendor}/sly/__init__.py +0 -0
- /jaclang/{utils → vendor}/sly/docparse.py +0 -0
- /jaclang/{utils → vendor}/sly/lex.py +0 -0
- /jaclang/{utils → vendor}/sly/yacc.py +0 -0
- {jaclang-0.0.5.dist-info → jaclang-0.0.8.dist-info}/WHEEL +0 -0
- {jaclang-0.0.5.dist-info → jaclang-0.0.8.dist-info}/entry_points.txt +0 -0
- {jaclang-0.0.5.dist-info → jaclang-0.0.8.dist-info}/top_level.txt +0 -0
jaclang/jac/absyntree.py
CHANGED
|
@@ -6,6 +6,7 @@ from typing import Optional, Union
|
|
|
6
6
|
|
|
7
7
|
from jaclang.jac.constant import Constants as Con, EdgeDir
|
|
8
8
|
from jaclang.jac.constant import Tokens as Tok
|
|
9
|
+
from jaclang.jac.symtable import SymbolTable
|
|
9
10
|
|
|
10
11
|
|
|
11
12
|
class AstNode:
|
|
@@ -13,16 +14,18 @@ class AstNode:
|
|
|
13
14
|
|
|
14
15
|
def __init__(
|
|
15
16
|
self,
|
|
16
|
-
parent: Optional[
|
|
17
|
+
parent: Optional[AstNode],
|
|
17
18
|
mod_link: Optional[Module],
|
|
18
19
|
kid: list,
|
|
19
20
|
line: int,
|
|
21
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
20
22
|
) -> None:
|
|
21
23
|
"""Initialize ast."""
|
|
22
24
|
self.parent = parent
|
|
23
25
|
self.kid = kid if kid else []
|
|
24
26
|
self.mod_link = mod_link
|
|
25
27
|
self.line = line
|
|
28
|
+
self.sym_tab = sym_tab
|
|
26
29
|
self._sub_node_tab: dict[type[AstNode], list[AstNode]] = {}
|
|
27
30
|
self._typ: type = type(None)
|
|
28
31
|
self.meta: dict = {}
|
|
@@ -61,6 +64,7 @@ class Module(AstNode):
|
|
|
61
64
|
mod_link: Optional[Module],
|
|
62
65
|
kid: list[AstNode],
|
|
63
66
|
line: int,
|
|
67
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
64
68
|
) -> None:
|
|
65
69
|
"""Initialize whole program node."""
|
|
66
70
|
self.name = name
|
|
@@ -69,7 +73,9 @@ class Module(AstNode):
|
|
|
69
73
|
self.mod_path = mod_path
|
|
70
74
|
self.rel_mod_path = rel_mod_path
|
|
71
75
|
self.is_imported = is_imported
|
|
72
|
-
super().__init__(
|
|
76
|
+
super().__init__(
|
|
77
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
78
|
+
)
|
|
73
79
|
|
|
74
80
|
|
|
75
81
|
class Elements(AstNode):
|
|
@@ -82,10 +88,13 @@ class Elements(AstNode):
|
|
|
82
88
|
mod_link: Optional[Module],
|
|
83
89
|
kid: list[AstNode],
|
|
84
90
|
line: int,
|
|
91
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
85
92
|
) -> None:
|
|
86
93
|
"""Initialize elements node."""
|
|
87
94
|
self.elements = elements
|
|
88
|
-
super().__init__(
|
|
95
|
+
super().__init__(
|
|
96
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
97
|
+
)
|
|
89
98
|
|
|
90
99
|
|
|
91
100
|
class OOPAccessNode(AstNode):
|
|
@@ -98,10 +107,13 @@ class OOPAccessNode(AstNode):
|
|
|
98
107
|
mod_link: Optional[Module],
|
|
99
108
|
kid: list[AstNode],
|
|
100
109
|
line: int,
|
|
110
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
101
111
|
) -> None:
|
|
102
112
|
"""Initialize OOPAccessible node."""
|
|
103
113
|
self.access = access
|
|
104
|
-
super().__init__(
|
|
114
|
+
super().__init__(
|
|
115
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
116
|
+
)
|
|
105
117
|
|
|
106
118
|
|
|
107
119
|
class GlobalVars(OOPAccessNode):
|
|
@@ -117,36 +129,62 @@ class GlobalVars(OOPAccessNode):
|
|
|
117
129
|
mod_link: Optional[Module],
|
|
118
130
|
kid: list[AstNode],
|
|
119
131
|
line: int,
|
|
132
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
120
133
|
) -> None:
|
|
121
134
|
"""Initialize global var node."""
|
|
122
135
|
self.doc = doc
|
|
123
136
|
self.assignments = assignments
|
|
124
137
|
self.is_frozen = is_frozen
|
|
125
138
|
super().__init__(
|
|
126
|
-
access=access,
|
|
139
|
+
access=access,
|
|
140
|
+
parent=parent,
|
|
141
|
+
mod_link=mod_link,
|
|
142
|
+
kid=kid,
|
|
143
|
+
line=line,
|
|
144
|
+
sym_tab=sym_tab,
|
|
127
145
|
)
|
|
128
146
|
|
|
129
147
|
|
|
130
148
|
class Test(AstNode):
|
|
131
149
|
"""Test node type for Jac Ast."""
|
|
132
150
|
|
|
151
|
+
TEST_COUNT = 0
|
|
152
|
+
|
|
133
153
|
def __init__(
|
|
134
154
|
self,
|
|
135
|
-
name: Name,
|
|
136
|
-
doc: Optional[
|
|
137
|
-
|
|
138
|
-
body: "CodeBlock",
|
|
155
|
+
name: Name | Token,
|
|
156
|
+
doc: Optional[Token],
|
|
157
|
+
body: CodeBlock,
|
|
139
158
|
parent: Optional[AstNode],
|
|
140
159
|
mod_link: Optional[Module],
|
|
141
160
|
kid: list[AstNode],
|
|
142
161
|
line: int,
|
|
162
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
143
163
|
) -> None:
|
|
144
164
|
"""Initialize test node."""
|
|
145
165
|
self.doc = doc
|
|
146
|
-
|
|
147
|
-
self.
|
|
166
|
+
Test.TEST_COUNT += 1 if isinstance(name, Token) else 0
|
|
167
|
+
self.name: Name = ( # for auto generated test names
|
|
168
|
+
name
|
|
169
|
+
if isinstance(name, Name)
|
|
170
|
+
else Name(
|
|
171
|
+
name="NAME",
|
|
172
|
+
value=f"test_{Test.TEST_COUNT}",
|
|
173
|
+
col_start=name.col_start,
|
|
174
|
+
col_end=name.col_end,
|
|
175
|
+
line=name.line,
|
|
176
|
+
already_declared=False,
|
|
177
|
+
parent=name.parent,
|
|
178
|
+
mod_link=name.mod_link,
|
|
179
|
+
kid=name.kid,
|
|
180
|
+
sym_tab=name.sym_tab,
|
|
181
|
+
)
|
|
182
|
+
)
|
|
183
|
+
kid[0] = self.name # Index is 0 since Doc string is inserted after init
|
|
148
184
|
self.body = body
|
|
149
|
-
super().__init__(
|
|
185
|
+
super().__init__(
|
|
186
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
187
|
+
)
|
|
150
188
|
|
|
151
189
|
|
|
152
190
|
class ModuleCode(AstNode):
|
|
@@ -154,16 +192,37 @@ class ModuleCode(AstNode):
|
|
|
154
192
|
|
|
155
193
|
def __init__(
|
|
156
194
|
self,
|
|
157
|
-
doc: Optional[
|
|
158
|
-
|
|
195
|
+
doc: Optional[Token],
|
|
196
|
+
name: Optional[Name],
|
|
197
|
+
body: CodeBlock,
|
|
159
198
|
parent: Optional[AstNode],
|
|
160
199
|
mod_link: Optional[Module],
|
|
161
200
|
kid: list[AstNode],
|
|
162
201
|
line: int,
|
|
202
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
163
203
|
) -> None:
|
|
164
204
|
"""Initialize test node."""
|
|
165
205
|
self.doc = doc
|
|
206
|
+
self.name = name
|
|
166
207
|
self.body = body
|
|
208
|
+
super().__init__(
|
|
209
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
210
|
+
)
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
class PyInlineCode(AstNode):
|
|
214
|
+
"""Inline Python code node type for Jac Ast."""
|
|
215
|
+
|
|
216
|
+
def __init__(
|
|
217
|
+
self,
|
|
218
|
+
code: Token,
|
|
219
|
+
parent: Optional[AstNode],
|
|
220
|
+
mod_link: Optional[Module],
|
|
221
|
+
kid: list[AstNode],
|
|
222
|
+
line: int,
|
|
223
|
+
) -> None:
|
|
224
|
+
"""Initialize inline python code node."""
|
|
225
|
+
self.code = code
|
|
167
226
|
super().__init__(parent=parent, mod_link=mod_link, kid=kid, line=line)
|
|
168
227
|
|
|
169
228
|
|
|
@@ -173,14 +232,15 @@ class Import(AstNode):
|
|
|
173
232
|
def __init__(
|
|
174
233
|
self,
|
|
175
234
|
lang: Name,
|
|
176
|
-
path:
|
|
235
|
+
path: ModulePath,
|
|
177
236
|
alias: Optional[Name],
|
|
178
|
-
items: Optional[
|
|
237
|
+
items: Optional[ModuleItems],
|
|
179
238
|
is_absorb: bool, # For includes
|
|
180
239
|
parent: Optional[AstNode],
|
|
181
240
|
mod_link: Optional[Module],
|
|
182
241
|
kid: list[AstNode],
|
|
183
242
|
line: int,
|
|
243
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
184
244
|
sub_module: Optional["Module"] = None,
|
|
185
245
|
) -> None:
|
|
186
246
|
"""Initialize import node."""
|
|
@@ -190,7 +250,10 @@ class Import(AstNode):
|
|
|
190
250
|
self.items = items
|
|
191
251
|
self.is_absorb = is_absorb
|
|
192
252
|
self.sub_module = sub_module
|
|
193
|
-
|
|
253
|
+
|
|
254
|
+
super().__init__(
|
|
255
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
256
|
+
)
|
|
194
257
|
|
|
195
258
|
|
|
196
259
|
class ModulePath(AstNode):
|
|
@@ -198,16 +261,19 @@ class ModulePath(AstNode):
|
|
|
198
261
|
|
|
199
262
|
def __init__(
|
|
200
263
|
self,
|
|
201
|
-
path: list[
|
|
264
|
+
path: list[Name],
|
|
202
265
|
parent: Optional[AstNode],
|
|
203
266
|
mod_link: Optional[Module],
|
|
204
267
|
kid: list[AstNode],
|
|
205
268
|
line: int,
|
|
269
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
206
270
|
) -> None:
|
|
207
271
|
"""Initialize module path node."""
|
|
208
272
|
self.path = path
|
|
209
273
|
self.path_str = ".".join([p.value for p in path])
|
|
210
|
-
super().__init__(
|
|
274
|
+
super().__init__(
|
|
275
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
276
|
+
)
|
|
211
277
|
|
|
212
278
|
|
|
213
279
|
class ModuleItems(AstNode):
|
|
@@ -215,15 +281,18 @@ class ModuleItems(AstNode):
|
|
|
215
281
|
|
|
216
282
|
def __init__(
|
|
217
283
|
self,
|
|
218
|
-
items: list[
|
|
284
|
+
items: list[ModuleItem],
|
|
219
285
|
parent: Optional[AstNode],
|
|
220
286
|
mod_link: Optional[Module],
|
|
221
|
-
kid: list[
|
|
287
|
+
kid: list[ModuleItem],
|
|
222
288
|
line: int,
|
|
289
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
223
290
|
) -> None:
|
|
224
291
|
"""Initialize module items node."""
|
|
225
292
|
self.items = items
|
|
226
|
-
super().__init__(
|
|
293
|
+
super().__init__(
|
|
294
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
295
|
+
)
|
|
227
296
|
|
|
228
297
|
|
|
229
298
|
class ModuleItem(AstNode):
|
|
@@ -237,13 +306,16 @@ class ModuleItem(AstNode):
|
|
|
237
306
|
mod_link: Optional[Module],
|
|
238
307
|
kid: list[AstNode],
|
|
239
308
|
line: int,
|
|
309
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
240
310
|
body: Optional[AstNode] = None,
|
|
241
311
|
) -> None:
|
|
242
312
|
"""Initialize module item node."""
|
|
243
313
|
self.name = name
|
|
244
314
|
self.alias = alias
|
|
245
315
|
self.body = body
|
|
246
|
-
super().__init__(
|
|
316
|
+
super().__init__(
|
|
317
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
318
|
+
)
|
|
247
319
|
|
|
248
320
|
|
|
249
321
|
class Architype(OOPAccessNode):
|
|
@@ -262,6 +334,7 @@ class Architype(OOPAccessNode):
|
|
|
262
334
|
mod_link: Optional[Module],
|
|
263
335
|
kid: list[AstNode],
|
|
264
336
|
line: int,
|
|
337
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
265
338
|
) -> None:
|
|
266
339
|
"""Initialize object arch node."""
|
|
267
340
|
self.name = name
|
|
@@ -271,7 +344,12 @@ class Architype(OOPAccessNode):
|
|
|
271
344
|
self.base_classes = base_classes
|
|
272
345
|
self.body = body
|
|
273
346
|
super().__init__(
|
|
274
|
-
access=access,
|
|
347
|
+
access=access,
|
|
348
|
+
parent=parent,
|
|
349
|
+
mod_link=mod_link,
|
|
350
|
+
kid=kid,
|
|
351
|
+
line=line,
|
|
352
|
+
sym_tab=sym_tab,
|
|
275
353
|
)
|
|
276
354
|
|
|
277
355
|
|
|
@@ -281,20 +359,21 @@ class ArchDef(AstNode):
|
|
|
281
359
|
def __init__(
|
|
282
360
|
self,
|
|
283
361
|
doc: Optional[Token],
|
|
284
|
-
|
|
285
|
-
arch: ArchRef,
|
|
362
|
+
target: ArchRefChain,
|
|
286
363
|
body: ArchBlock,
|
|
287
364
|
parent: Optional[AstNode],
|
|
288
365
|
mod_link: Optional[Module],
|
|
289
366
|
kid: list[AstNode],
|
|
290
367
|
line: int,
|
|
368
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
291
369
|
) -> None:
|
|
292
370
|
"""Initialize arch def node."""
|
|
293
371
|
self.doc = doc
|
|
294
|
-
self.
|
|
295
|
-
self.arch = arch
|
|
372
|
+
self.target = target
|
|
296
373
|
self.body = body
|
|
297
|
-
super().__init__(
|
|
374
|
+
super().__init__(
|
|
375
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
376
|
+
)
|
|
298
377
|
|
|
299
378
|
|
|
300
379
|
class Decorators(AstNode):
|
|
@@ -307,10 +386,13 @@ class Decorators(AstNode):
|
|
|
307
386
|
mod_link: Optional[Module],
|
|
308
387
|
kid: list[AstNode],
|
|
309
388
|
line: int,
|
|
389
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
310
390
|
) -> None:
|
|
311
391
|
"""Initialize decorators node."""
|
|
312
392
|
self.calls = calls
|
|
313
|
-
super().__init__(
|
|
393
|
+
super().__init__(
|
|
394
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
395
|
+
)
|
|
314
396
|
|
|
315
397
|
|
|
316
398
|
class BaseClasses(AstNode):
|
|
@@ -323,10 +405,13 @@ class BaseClasses(AstNode):
|
|
|
323
405
|
mod_link: Optional[Module],
|
|
324
406
|
kid: list[AstNode],
|
|
325
407
|
line: int,
|
|
408
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
326
409
|
) -> None:
|
|
327
410
|
"""Initialize base classes node."""
|
|
328
411
|
self.base_classes = base_classes
|
|
329
|
-
super().__init__(
|
|
412
|
+
super().__init__(
|
|
413
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
414
|
+
)
|
|
330
415
|
|
|
331
416
|
|
|
332
417
|
class Ability(OOPAccessNode):
|
|
@@ -334,10 +419,11 @@ class Ability(OOPAccessNode):
|
|
|
334
419
|
|
|
335
420
|
def __init__(
|
|
336
421
|
self,
|
|
337
|
-
name_ref: Name | SpecialVarRef
|
|
422
|
+
name_ref: Name | SpecialVarRef,
|
|
338
423
|
is_func: bool,
|
|
339
424
|
is_async: bool,
|
|
340
425
|
is_static: bool,
|
|
426
|
+
is_abstract: bool,
|
|
341
427
|
doc: Optional[Token],
|
|
342
428
|
decorators: Optional[Decorators],
|
|
343
429
|
access: Optional[Token],
|
|
@@ -347,6 +433,7 @@ class Ability(OOPAccessNode):
|
|
|
347
433
|
mod_link: Optional[Module],
|
|
348
434
|
kid: list[AstNode],
|
|
349
435
|
line: int,
|
|
436
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
350
437
|
arch_attached: Optional[ArchBlock] = None,
|
|
351
438
|
) -> None:
|
|
352
439
|
"""Initialize func arch node."""
|
|
@@ -354,13 +441,20 @@ class Ability(OOPAccessNode):
|
|
|
354
441
|
self.is_func = is_func
|
|
355
442
|
self.is_async = is_async
|
|
356
443
|
self.is_static = is_static
|
|
444
|
+
self.is_abstract = is_abstract
|
|
357
445
|
self.doc = doc
|
|
358
446
|
self.decorators = decorators
|
|
447
|
+
|
|
359
448
|
self.signature = signature
|
|
360
449
|
self.body = body
|
|
361
450
|
self.arch_attached = arch_attached
|
|
362
451
|
super().__init__(
|
|
363
|
-
access=access,
|
|
452
|
+
access=access,
|
|
453
|
+
parent=parent,
|
|
454
|
+
mod_link=mod_link,
|
|
455
|
+
kid=kid,
|
|
456
|
+
line=line,
|
|
457
|
+
sym_tab=sym_tab,
|
|
364
458
|
)
|
|
365
459
|
|
|
366
460
|
def py_resolve_name(self) -> str:
|
|
@@ -379,22 +473,23 @@ class AbilityDef(AstNode):
|
|
|
379
473
|
def __init__(
|
|
380
474
|
self,
|
|
381
475
|
doc: Optional[Token],
|
|
382
|
-
target:
|
|
383
|
-
ability: ArchRef,
|
|
476
|
+
target: ArchRefChain,
|
|
384
477
|
signature: FuncSignature | EventSignature,
|
|
385
478
|
body: CodeBlock,
|
|
386
479
|
parent: Optional[AstNode],
|
|
387
480
|
mod_link: Optional[Module],
|
|
388
481
|
kid: list[AstNode],
|
|
389
482
|
line: int,
|
|
483
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
390
484
|
) -> None:
|
|
391
485
|
"""Initialize ability def node."""
|
|
392
486
|
self.doc = doc
|
|
393
487
|
self.target = target
|
|
394
|
-
self.ability = ability
|
|
395
488
|
self.signature = signature
|
|
396
489
|
self.body = body
|
|
397
|
-
super().__init__(
|
|
490
|
+
super().__init__(
|
|
491
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
492
|
+
)
|
|
398
493
|
|
|
399
494
|
|
|
400
495
|
class EventSignature(AstNode):
|
|
@@ -409,12 +504,15 @@ class EventSignature(AstNode):
|
|
|
409
504
|
mod_link: Optional[Module],
|
|
410
505
|
kid: list[AstNode],
|
|
411
506
|
line: int,
|
|
507
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
412
508
|
) -> None:
|
|
413
509
|
"""Initialize event signature node."""
|
|
414
510
|
self.event = event
|
|
415
511
|
self.arch_tag_info = arch_tag_info
|
|
416
512
|
self.return_type = return_type
|
|
417
|
-
super().__init__(
|
|
513
|
+
super().__init__(
|
|
514
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
515
|
+
)
|
|
418
516
|
|
|
419
517
|
|
|
420
518
|
class DottedNameList(AstNode):
|
|
@@ -422,15 +520,43 @@ class DottedNameList(AstNode):
|
|
|
422
520
|
|
|
423
521
|
def __init__(
|
|
424
522
|
self,
|
|
425
|
-
names: list[Token | SpecialVarRef |
|
|
523
|
+
names: list[Token | SpecialVarRef | Name],
|
|
426
524
|
parent: Optional[AstNode],
|
|
427
525
|
mod_link: Optional[Module],
|
|
428
526
|
kid: list[AstNode],
|
|
429
527
|
line: int,
|
|
528
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
430
529
|
) -> None:
|
|
431
530
|
"""Initialize name list node."""
|
|
432
531
|
self.names = names
|
|
433
|
-
super().__init__(
|
|
532
|
+
super().__init__(
|
|
533
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
534
|
+
)
|
|
535
|
+
|
|
536
|
+
|
|
537
|
+
class ArchRefChain(AstNode):
|
|
538
|
+
"""Arch ref list node type for Jac Ast."""
|
|
539
|
+
|
|
540
|
+
def __init__(
|
|
541
|
+
self,
|
|
542
|
+
archs: list[ArchRef],
|
|
543
|
+
parent: Optional[AstNode],
|
|
544
|
+
mod_link: Optional[Module],
|
|
545
|
+
kid: list[AstNode],
|
|
546
|
+
line: int,
|
|
547
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
548
|
+
) -> None:
|
|
549
|
+
"""Initialize name list ."""
|
|
550
|
+
self.archs = archs
|
|
551
|
+
super().__init__(
|
|
552
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
553
|
+
)
|
|
554
|
+
|
|
555
|
+
def py_resolve_name(self) -> str:
|
|
556
|
+
"""Resolve name."""
|
|
557
|
+
return ".".join(
|
|
558
|
+
[f"({x.arch.value[1]}){x.py_resolve_name()}" for x in self.archs]
|
|
559
|
+
)
|
|
434
560
|
|
|
435
561
|
|
|
436
562
|
class FuncSignature(AstNode):
|
|
@@ -444,11 +570,14 @@ class FuncSignature(AstNode):
|
|
|
444
570
|
mod_link: Optional[Module],
|
|
445
571
|
kid: list[AstNode],
|
|
446
572
|
line: int,
|
|
573
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
447
574
|
) -> None:
|
|
448
575
|
"""Initialize method signature node."""
|
|
449
576
|
self.params = params
|
|
450
577
|
self.return_type = return_type
|
|
451
|
-
super().__init__(
|
|
578
|
+
super().__init__(
|
|
579
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
580
|
+
)
|
|
452
581
|
|
|
453
582
|
|
|
454
583
|
class FuncParams(AstNode):
|
|
@@ -461,10 +590,13 @@ class FuncParams(AstNode):
|
|
|
461
590
|
mod_link: Optional[Module],
|
|
462
591
|
kid: list[AstNode],
|
|
463
592
|
line: int,
|
|
593
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
464
594
|
) -> None:
|
|
465
595
|
"""Initialize method params node."""
|
|
466
596
|
self.params = params
|
|
467
|
-
super().__init__(
|
|
597
|
+
super().__init__(
|
|
598
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
599
|
+
)
|
|
468
600
|
|
|
469
601
|
|
|
470
602
|
class ParamVar(AstNode):
|
|
@@ -480,13 +612,16 @@ class ParamVar(AstNode):
|
|
|
480
612
|
mod_link: Optional[Module],
|
|
481
613
|
kid: list[AstNode],
|
|
482
614
|
line: int,
|
|
615
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
483
616
|
) -> None:
|
|
484
617
|
"""Initialize param var node."""
|
|
485
618
|
self.name = name
|
|
486
619
|
self.unpack = unpack
|
|
487
620
|
self.type_tag = type_tag
|
|
488
621
|
self.value = value
|
|
489
|
-
super().__init__(
|
|
622
|
+
super().__init__(
|
|
623
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
624
|
+
)
|
|
490
625
|
|
|
491
626
|
|
|
492
627
|
class Enum(OOPAccessNode):
|
|
@@ -496,7 +631,7 @@ class Enum(OOPAccessNode):
|
|
|
496
631
|
self,
|
|
497
632
|
name: Name,
|
|
498
633
|
doc: Optional[Token],
|
|
499
|
-
decorators: Optional[
|
|
634
|
+
decorators: Optional[Decorators],
|
|
500
635
|
access: Optional[Token],
|
|
501
636
|
base_classes: "BaseClasses",
|
|
502
637
|
body: Optional["EnumBlock"],
|
|
@@ -504,6 +639,7 @@ class Enum(OOPAccessNode):
|
|
|
504
639
|
mod_link: Optional[Module],
|
|
505
640
|
kid: list[AstNode],
|
|
506
641
|
line: int,
|
|
642
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
507
643
|
) -> None:
|
|
508
644
|
"""Initialize object arch node."""
|
|
509
645
|
self.name = name
|
|
@@ -512,7 +648,12 @@ class Enum(OOPAccessNode):
|
|
|
512
648
|
self.base_classes = base_classes
|
|
513
649
|
self.body = body
|
|
514
650
|
super().__init__(
|
|
515
|
-
access=access,
|
|
651
|
+
access=access,
|
|
652
|
+
parent=parent,
|
|
653
|
+
mod_link=mod_link,
|
|
654
|
+
kid=kid,
|
|
655
|
+
line=line,
|
|
656
|
+
sym_tab=sym_tab,
|
|
516
657
|
)
|
|
517
658
|
|
|
518
659
|
|
|
@@ -522,20 +663,21 @@ class EnumDef(AstNode):
|
|
|
522
663
|
def __init__(
|
|
523
664
|
self,
|
|
524
665
|
doc: Optional[Token],
|
|
525
|
-
|
|
526
|
-
mod: Optional[DottedNameList],
|
|
666
|
+
target: ArchRefChain,
|
|
527
667
|
body: EnumBlock,
|
|
528
668
|
parent: Optional[AstNode],
|
|
529
669
|
mod_link: Optional[Module],
|
|
530
670
|
kid: list[AstNode],
|
|
531
671
|
line: int,
|
|
672
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
532
673
|
) -> None:
|
|
533
674
|
"""Initialize arch def node."""
|
|
534
|
-
self.enum = enum
|
|
535
675
|
self.doc = doc
|
|
536
|
-
self.
|
|
676
|
+
self.target = target
|
|
537
677
|
self.body = body
|
|
538
|
-
super().__init__(
|
|
678
|
+
super().__init__(
|
|
679
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
680
|
+
)
|
|
539
681
|
|
|
540
682
|
|
|
541
683
|
class EnumBlock(AstNode):
|
|
@@ -548,10 +690,13 @@ class EnumBlock(AstNode):
|
|
|
548
690
|
mod_link: Optional[Module],
|
|
549
691
|
kid: list[AstNode],
|
|
550
692
|
line: int,
|
|
693
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
551
694
|
) -> None:
|
|
552
695
|
"""Initialize enum block node."""
|
|
553
696
|
self.stmts = stmts
|
|
554
|
-
super().__init__(
|
|
697
|
+
super().__init__(
|
|
698
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
699
|
+
)
|
|
555
700
|
|
|
556
701
|
|
|
557
702
|
class ArchBlock(AstNode):
|
|
@@ -559,43 +704,48 @@ class ArchBlock(AstNode):
|
|
|
559
704
|
|
|
560
705
|
def __init__(
|
|
561
706
|
self,
|
|
562
|
-
members: list[
|
|
707
|
+
members: list[ArchHas | Ability],
|
|
563
708
|
parent: Optional[AstNode],
|
|
564
709
|
mod_link: Optional[Module],
|
|
565
710
|
kid: list[AstNode],
|
|
566
711
|
line: int,
|
|
712
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
567
713
|
) -> None:
|
|
568
714
|
"""Initialize arch block node."""
|
|
569
715
|
self.members = members
|
|
570
|
-
super().__init__(
|
|
716
|
+
super().__init__(
|
|
717
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
718
|
+
)
|
|
571
719
|
|
|
572
720
|
|
|
573
721
|
class ArchHas(OOPAccessNode):
|
|
574
722
|
"""HasStmt node type for Jac Ast."""
|
|
575
723
|
|
|
576
|
-
counter: int = 1
|
|
577
|
-
|
|
578
724
|
def __init__(
|
|
579
725
|
self,
|
|
580
726
|
doc: Optional[Token],
|
|
581
727
|
is_static: bool,
|
|
582
728
|
access: Optional[Token],
|
|
583
|
-
vars:
|
|
729
|
+
vars: HasVarList,
|
|
584
730
|
is_frozen: bool,
|
|
585
731
|
parent: Optional[AstNode],
|
|
586
732
|
mod_link: Optional[Module],
|
|
587
733
|
kid: list[AstNode],
|
|
588
734
|
line: int,
|
|
735
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
589
736
|
) -> None:
|
|
590
737
|
"""Initialize has statement node."""
|
|
591
738
|
self.doc = doc
|
|
592
739
|
self.is_static = is_static
|
|
593
740
|
self.vars = vars
|
|
594
741
|
self.is_frozen = is_frozen
|
|
595
|
-
self.h_id = ArchHas.counter
|
|
596
|
-
ArchHas.counter += 1
|
|
597
742
|
super().__init__(
|
|
598
|
-
access=access,
|
|
743
|
+
access=access,
|
|
744
|
+
parent=parent,
|
|
745
|
+
mod_link=mod_link,
|
|
746
|
+
kid=kid,
|
|
747
|
+
line=line,
|
|
748
|
+
sym_tab=sym_tab,
|
|
599
749
|
)
|
|
600
750
|
|
|
601
751
|
|
|
@@ -609,10 +759,13 @@ class HasVarList(AstNode):
|
|
|
609
759
|
mod_link: Optional[Module],
|
|
610
760
|
kid: list[AstNode],
|
|
611
761
|
line: int,
|
|
762
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
612
763
|
) -> None:
|
|
613
764
|
"""Initialize has var list node."""
|
|
614
765
|
self.vars = vars
|
|
615
|
-
super().__init__(
|
|
766
|
+
super().__init__(
|
|
767
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
768
|
+
)
|
|
616
769
|
|
|
617
770
|
|
|
618
771
|
class HasVar(AstNode):
|
|
@@ -627,12 +780,15 @@ class HasVar(AstNode):
|
|
|
627
780
|
mod_link: Optional[Module],
|
|
628
781
|
kid: list[AstNode],
|
|
629
782
|
line: int,
|
|
783
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
630
784
|
) -> None:
|
|
631
785
|
"""Initialize has var node."""
|
|
632
786
|
self.name = name
|
|
633
787
|
self.type_tag = type_tag
|
|
634
788
|
self.value = value
|
|
635
|
-
super().__init__(
|
|
789
|
+
super().__init__(
|
|
790
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
791
|
+
)
|
|
636
792
|
|
|
637
793
|
|
|
638
794
|
class TypeSpecList(AstNode):
|
|
@@ -645,10 +801,13 @@ class TypeSpecList(AstNode):
|
|
|
645
801
|
mod_link: Optional[Module],
|
|
646
802
|
kid: list[AstNode],
|
|
647
803
|
line: int,
|
|
804
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
648
805
|
) -> None:
|
|
649
806
|
"""Initialize type list node."""
|
|
650
807
|
self.types = types
|
|
651
|
-
super().__init__(
|
|
808
|
+
super().__init__(
|
|
809
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
810
|
+
)
|
|
652
811
|
|
|
653
812
|
|
|
654
813
|
class TypeSpec(AstNode):
|
|
@@ -664,13 +823,16 @@ class TypeSpec(AstNode):
|
|
|
664
823
|
mod_link: Optional[Module],
|
|
665
824
|
kid: list[AstNode],
|
|
666
825
|
line: int,
|
|
826
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
667
827
|
) -> None:
|
|
668
828
|
"""Initialize type spec node."""
|
|
669
829
|
self.spec_type = spec_type
|
|
670
830
|
self.list_nest = list_nest
|
|
671
831
|
self.dict_nest = dict_nest
|
|
672
832
|
self.null_ok = null_ok
|
|
673
|
-
super().__init__(
|
|
833
|
+
super().__init__(
|
|
834
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
835
|
+
)
|
|
674
836
|
|
|
675
837
|
|
|
676
838
|
class CodeBlock(AstNode):
|
|
@@ -683,10 +845,13 @@ class CodeBlock(AstNode):
|
|
|
683
845
|
mod_link: Optional[Module],
|
|
684
846
|
kid: list[AstNode],
|
|
685
847
|
line: int,
|
|
848
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
686
849
|
) -> None:
|
|
687
850
|
"""Initialize code block node."""
|
|
688
851
|
self.stmts = stmts
|
|
689
|
-
super().__init__(
|
|
852
|
+
super().__init__(
|
|
853
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
854
|
+
)
|
|
690
855
|
|
|
691
856
|
|
|
692
857
|
class TypedCtxBlock(AstNode):
|
|
@@ -700,11 +865,14 @@ class TypedCtxBlock(AstNode):
|
|
|
700
865
|
mod_link: Optional[Module],
|
|
701
866
|
kid: list[AstNode],
|
|
702
867
|
line: int,
|
|
868
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
703
869
|
) -> None:
|
|
704
870
|
"""Initialize typed context block node."""
|
|
705
871
|
self.type_ctx = type_ctx
|
|
706
872
|
self.body = body
|
|
707
|
-
super().__init__(
|
|
873
|
+
super().__init__(
|
|
874
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
875
|
+
)
|
|
708
876
|
|
|
709
877
|
|
|
710
878
|
class IfStmt(AstNode):
|
|
@@ -720,13 +888,16 @@ class IfStmt(AstNode):
|
|
|
720
888
|
mod_link: Optional[Module],
|
|
721
889
|
kid: list[AstNode],
|
|
722
890
|
line: int,
|
|
891
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
723
892
|
) -> None:
|
|
724
893
|
"""Initialize if statement node."""
|
|
725
894
|
self.condition = condition
|
|
726
895
|
self.body = body
|
|
727
896
|
self.elseifs = elseifs
|
|
728
897
|
self.else_body = else_body
|
|
729
|
-
super().__init__(
|
|
898
|
+
super().__init__(
|
|
899
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
900
|
+
)
|
|
730
901
|
|
|
731
902
|
|
|
732
903
|
class ElseIfs(AstNode):
|
|
@@ -739,10 +910,13 @@ class ElseIfs(AstNode):
|
|
|
739
910
|
mod_link: Optional[Module],
|
|
740
911
|
kid: list["IfStmt"],
|
|
741
912
|
line: int,
|
|
913
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
742
914
|
) -> None:
|
|
743
915
|
"""Initialize elseifs node."""
|
|
744
916
|
self.elseifs = elseifs
|
|
745
|
-
super().__init__(
|
|
917
|
+
super().__init__(
|
|
918
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
919
|
+
)
|
|
746
920
|
|
|
747
921
|
|
|
748
922
|
class ElseStmt(AstNode):
|
|
@@ -755,10 +929,13 @@ class ElseStmt(AstNode):
|
|
|
755
929
|
mod_link: Optional[Module],
|
|
756
930
|
kid: list[AstNode],
|
|
757
931
|
line: int,
|
|
932
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
758
933
|
) -> None:
|
|
759
934
|
"""Initialize else node."""
|
|
760
935
|
self.body = body
|
|
761
|
-
super().__init__(
|
|
936
|
+
super().__init__(
|
|
937
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
938
|
+
)
|
|
762
939
|
|
|
763
940
|
|
|
764
941
|
class TryStmt(AstNode):
|
|
@@ -773,12 +950,15 @@ class TryStmt(AstNode):
|
|
|
773
950
|
mod_link: Optional[Module],
|
|
774
951
|
kid: list[AstNode],
|
|
775
952
|
line: int,
|
|
953
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
776
954
|
) -> None:
|
|
777
955
|
"""Initialize try statement node."""
|
|
778
956
|
self.body = body
|
|
779
957
|
self.excepts = excepts
|
|
780
958
|
self.finally_body = finally_body
|
|
781
|
-
super().__init__(
|
|
959
|
+
super().__init__(
|
|
960
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
961
|
+
)
|
|
782
962
|
|
|
783
963
|
|
|
784
964
|
class ExceptList(AstNode):
|
|
@@ -791,10 +971,13 @@ class ExceptList(AstNode):
|
|
|
791
971
|
mod_link: Optional[Module],
|
|
792
972
|
kid: list[AstNode],
|
|
793
973
|
line: int,
|
|
974
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
794
975
|
) -> None:
|
|
795
976
|
"""Initialize excepts node."""
|
|
796
977
|
self.excepts = excepts
|
|
797
|
-
super().__init__(
|
|
978
|
+
super().__init__(
|
|
979
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
980
|
+
)
|
|
798
981
|
|
|
799
982
|
|
|
800
983
|
class Except(AstNode):
|
|
@@ -809,12 +992,15 @@ class Except(AstNode):
|
|
|
809
992
|
mod_link: Optional[Module],
|
|
810
993
|
kid: list[AstNode],
|
|
811
994
|
line: int,
|
|
995
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
812
996
|
) -> None:
|
|
813
997
|
"""Initialize except node."""
|
|
814
998
|
self.ex_type = ex_type
|
|
815
999
|
self.name = name
|
|
816
1000
|
self.body = body
|
|
817
|
-
super().__init__(
|
|
1001
|
+
super().__init__(
|
|
1002
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
1003
|
+
)
|
|
818
1004
|
|
|
819
1005
|
|
|
820
1006
|
class FinallyStmt(AstNode):
|
|
@@ -827,10 +1013,13 @@ class FinallyStmt(AstNode):
|
|
|
827
1013
|
mod_link: Optional[Module],
|
|
828
1014
|
kid: list[AstNode],
|
|
829
1015
|
line: int,
|
|
1016
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
830
1017
|
) -> None:
|
|
831
1018
|
"""Initialize finally statement node."""
|
|
832
1019
|
self.body = body
|
|
833
|
-
super().__init__(
|
|
1020
|
+
super().__init__(
|
|
1021
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
1022
|
+
)
|
|
834
1023
|
|
|
835
1024
|
|
|
836
1025
|
class IterForStmt(AstNode):
|
|
@@ -838,21 +1027,24 @@ class IterForStmt(AstNode):
|
|
|
838
1027
|
|
|
839
1028
|
def __init__(
|
|
840
1029
|
self,
|
|
841
|
-
iter:
|
|
1030
|
+
iter: Assignment,
|
|
842
1031
|
condition: ExprType,
|
|
843
1032
|
count_by: ExprType,
|
|
844
|
-
body:
|
|
1033
|
+
body: CodeBlock,
|
|
845
1034
|
parent: Optional[AstNode],
|
|
846
1035
|
mod_link: Optional[Module],
|
|
847
1036
|
kid: list[AstNode],
|
|
848
1037
|
line: int,
|
|
1038
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
849
1039
|
) -> None:
|
|
850
1040
|
"""Initialize iter for node."""
|
|
851
1041
|
self.iter = iter
|
|
852
1042
|
self.condition = condition
|
|
853
1043
|
self.count_by = count_by
|
|
854
1044
|
self.body = body
|
|
855
|
-
super().__init__(
|
|
1045
|
+
super().__init__(
|
|
1046
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
1047
|
+
)
|
|
856
1048
|
|
|
857
1049
|
|
|
858
1050
|
class InForStmt(AstNode):
|
|
@@ -867,12 +1059,15 @@ class InForStmt(AstNode):
|
|
|
867
1059
|
mod_link: Optional[Module],
|
|
868
1060
|
kid: list[AstNode],
|
|
869
1061
|
line: int,
|
|
1062
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
870
1063
|
) -> None:
|
|
871
1064
|
"""Initialize in for node."""
|
|
872
1065
|
self.name_list = name_list
|
|
873
1066
|
self.collection = collection
|
|
874
1067
|
self.body = body
|
|
875
|
-
super().__init__(
|
|
1068
|
+
super().__init__(
|
|
1069
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
1070
|
+
)
|
|
876
1071
|
|
|
877
1072
|
|
|
878
1073
|
class NameList(AstNode):
|
|
@@ -885,10 +1080,13 @@ class NameList(AstNode):
|
|
|
885
1080
|
mod_link: Optional[Module],
|
|
886
1081
|
kid: list[AstNode],
|
|
887
1082
|
line: int,
|
|
1083
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
888
1084
|
) -> None:
|
|
889
1085
|
"""Initialize name list node."""
|
|
890
1086
|
self.names = names
|
|
891
|
-
super().__init__(
|
|
1087
|
+
super().__init__(
|
|
1088
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
1089
|
+
)
|
|
892
1090
|
|
|
893
1091
|
|
|
894
1092
|
class WhileStmt(AstNode):
|
|
@@ -902,11 +1100,14 @@ class WhileStmt(AstNode):
|
|
|
902
1100
|
mod_link: Optional[Module],
|
|
903
1101
|
kid: list[AstNode],
|
|
904
1102
|
line: int,
|
|
1103
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
905
1104
|
) -> None:
|
|
906
1105
|
"""Initialize while statement node."""
|
|
907
1106
|
self.condition = condition
|
|
908
1107
|
self.body = body
|
|
909
|
-
super().__init__(
|
|
1108
|
+
super().__init__(
|
|
1109
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
1110
|
+
)
|
|
910
1111
|
|
|
911
1112
|
|
|
912
1113
|
class WithStmt(AstNode):
|
|
@@ -920,11 +1121,14 @@ class WithStmt(AstNode):
|
|
|
920
1121
|
mod_link: Optional[Module],
|
|
921
1122
|
kid: list[AstNode],
|
|
922
1123
|
line: int,
|
|
1124
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
923
1125
|
) -> None:
|
|
924
1126
|
"""Initialize with statement node."""
|
|
925
1127
|
self.exprs = exprs
|
|
926
1128
|
self.body = body
|
|
927
|
-
super().__init__(
|
|
1129
|
+
super().__init__(
|
|
1130
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
1131
|
+
)
|
|
928
1132
|
|
|
929
1133
|
|
|
930
1134
|
class ExprAsItemList(AstNode):
|
|
@@ -937,10 +1141,13 @@ class ExprAsItemList(AstNode):
|
|
|
937
1141
|
mod_link: Optional[Module],
|
|
938
1142
|
kid: list["ExprAsItem"],
|
|
939
1143
|
line: int,
|
|
1144
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
940
1145
|
) -> None:
|
|
941
1146
|
"""Initialize module items node."""
|
|
942
1147
|
self.items = items
|
|
943
|
-
super().__init__(
|
|
1148
|
+
super().__init__(
|
|
1149
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
1150
|
+
)
|
|
944
1151
|
|
|
945
1152
|
|
|
946
1153
|
class ExprAsItem(AstNode):
|
|
@@ -954,11 +1161,14 @@ class ExprAsItem(AstNode):
|
|
|
954
1161
|
mod_link: Optional[Module],
|
|
955
1162
|
kid: list[AstNode],
|
|
956
1163
|
line: int,
|
|
1164
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
957
1165
|
) -> None:
|
|
958
1166
|
"""Initialize module item node."""
|
|
959
1167
|
self.expr = expr
|
|
960
1168
|
self.alias = alias
|
|
961
|
-
super().__init__(
|
|
1169
|
+
super().__init__(
|
|
1170
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
1171
|
+
)
|
|
962
1172
|
|
|
963
1173
|
|
|
964
1174
|
class RaiseStmt(AstNode):
|
|
@@ -971,10 +1181,13 @@ class RaiseStmt(AstNode):
|
|
|
971
1181
|
mod_link: Optional[Module],
|
|
972
1182
|
kid: list[AstNode],
|
|
973
1183
|
line: int,
|
|
1184
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
974
1185
|
) -> None:
|
|
975
1186
|
"""Initialize raise statement node."""
|
|
976
1187
|
self.cause = cause
|
|
977
|
-
super().__init__(
|
|
1188
|
+
super().__init__(
|
|
1189
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
1190
|
+
)
|
|
978
1191
|
|
|
979
1192
|
|
|
980
1193
|
class AssertStmt(AstNode):
|
|
@@ -988,11 +1201,14 @@ class AssertStmt(AstNode):
|
|
|
988
1201
|
mod_link: Optional[Module],
|
|
989
1202
|
kid: list[AstNode],
|
|
990
1203
|
line: int,
|
|
1204
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
991
1205
|
) -> None:
|
|
992
1206
|
"""Initialize assert statement node."""
|
|
993
1207
|
self.condition = condition
|
|
994
1208
|
self.error_msg = error_msg
|
|
995
|
-
super().__init__(
|
|
1209
|
+
super().__init__(
|
|
1210
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
1211
|
+
)
|
|
996
1212
|
|
|
997
1213
|
|
|
998
1214
|
class CtrlStmt(AstNode):
|
|
@@ -1005,10 +1221,13 @@ class CtrlStmt(AstNode):
|
|
|
1005
1221
|
mod_link: Optional[Module],
|
|
1006
1222
|
kid: list[AstNode],
|
|
1007
1223
|
line: int,
|
|
1224
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
1008
1225
|
) -> None:
|
|
1009
1226
|
"""Initialize control statement node."""
|
|
1010
1227
|
self.ctrl = ctrl
|
|
1011
|
-
super().__init__(
|
|
1228
|
+
super().__init__(
|
|
1229
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
1230
|
+
)
|
|
1012
1231
|
|
|
1013
1232
|
|
|
1014
1233
|
class DeleteStmt(AstNode):
|
|
@@ -1021,10 +1240,13 @@ class DeleteStmt(AstNode):
|
|
|
1021
1240
|
mod_link: Optional[Module],
|
|
1022
1241
|
kid: list[AstNode],
|
|
1023
1242
|
line: int,
|
|
1243
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
1024
1244
|
) -> None:
|
|
1025
1245
|
"""Initialize delete statement node."""
|
|
1026
1246
|
self.target = target
|
|
1027
|
-
super().__init__(
|
|
1247
|
+
super().__init__(
|
|
1248
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
1249
|
+
)
|
|
1028
1250
|
|
|
1029
1251
|
|
|
1030
1252
|
class ReportStmt(AstNode):
|
|
@@ -1037,10 +1259,13 @@ class ReportStmt(AstNode):
|
|
|
1037
1259
|
mod_link: Optional[Module],
|
|
1038
1260
|
kid: list[AstNode],
|
|
1039
1261
|
line: int,
|
|
1262
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
1040
1263
|
) -> None:
|
|
1041
1264
|
"""Initialize report statement node."""
|
|
1042
1265
|
self.expr = expr
|
|
1043
|
-
super().__init__(
|
|
1266
|
+
super().__init__(
|
|
1267
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
1268
|
+
)
|
|
1044
1269
|
|
|
1045
1270
|
|
|
1046
1271
|
class ReturnStmt(AstNode):
|
|
@@ -1053,10 +1278,13 @@ class ReturnStmt(AstNode):
|
|
|
1053
1278
|
mod_link: Optional[Module],
|
|
1054
1279
|
kid: list[AstNode],
|
|
1055
1280
|
line: int,
|
|
1281
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
1056
1282
|
) -> None:
|
|
1057
1283
|
"""Initialize return statement node."""
|
|
1058
1284
|
self.expr = expr
|
|
1059
|
-
super().__init__(
|
|
1285
|
+
super().__init__(
|
|
1286
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
1287
|
+
)
|
|
1060
1288
|
|
|
1061
1289
|
|
|
1062
1290
|
class YieldStmt(AstNode):
|
|
@@ -1069,10 +1297,13 @@ class YieldStmt(AstNode):
|
|
|
1069
1297
|
mod_link: Optional[Module],
|
|
1070
1298
|
kid: list[AstNode],
|
|
1071
1299
|
line: int,
|
|
1300
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
1072
1301
|
) -> None:
|
|
1073
1302
|
"""Initialize yeild statement node."""
|
|
1074
1303
|
self.expr = expr
|
|
1075
|
-
super().__init__(
|
|
1304
|
+
super().__init__(
|
|
1305
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
1306
|
+
)
|
|
1076
1307
|
|
|
1077
1308
|
|
|
1078
1309
|
class IgnoreStmt(AstNode):
|
|
@@ -1085,15 +1316,35 @@ class IgnoreStmt(AstNode):
|
|
|
1085
1316
|
mod_link: Optional[Module],
|
|
1086
1317
|
kid: list[AstNode],
|
|
1087
1318
|
line: int,
|
|
1088
|
-
|
|
1319
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
1089
1320
|
) -> None:
|
|
1090
1321
|
"""Initialize ignore statement node."""
|
|
1091
1322
|
self.target = target
|
|
1323
|
+
super().__init__(
|
|
1324
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
1325
|
+
)
|
|
1326
|
+
|
|
1327
|
+
|
|
1328
|
+
class WalkerStmtOnlyNode(AstNode):
|
|
1329
|
+
"""WalkerStmtOnlyNode node type for Jac Ast."""
|
|
1330
|
+
|
|
1331
|
+
def __init__(
|
|
1332
|
+
self,
|
|
1333
|
+
parent: Optional[AstNode],
|
|
1334
|
+
mod_link: Optional[Module],
|
|
1335
|
+
kid: list[AstNode],
|
|
1336
|
+
line: int,
|
|
1337
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
1338
|
+
from_walker: bool = False,
|
|
1339
|
+
) -> None:
|
|
1340
|
+
"""Initialize walker statement only node."""
|
|
1092
1341
|
self.from_walker = from_walker
|
|
1093
|
-
super().__init__(
|
|
1342
|
+
super().__init__(
|
|
1343
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
1344
|
+
)
|
|
1094
1345
|
|
|
1095
1346
|
|
|
1096
|
-
class VisitStmt(
|
|
1347
|
+
class VisitStmt(WalkerStmtOnlyNode):
|
|
1097
1348
|
"""VisitStmt node type for Jac Ast."""
|
|
1098
1349
|
|
|
1099
1350
|
def __init__(
|
|
@@ -1105,17 +1356,24 @@ class VisitStmt(AstNode):
|
|
|
1105
1356
|
mod_link: Optional[Module],
|
|
1106
1357
|
kid: list[AstNode],
|
|
1107
1358
|
line: int,
|
|
1359
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
1108
1360
|
from_walker: bool = False,
|
|
1109
1361
|
) -> None:
|
|
1110
1362
|
"""Initialize visit statement node."""
|
|
1111
1363
|
self.vis_type = vis_type
|
|
1112
1364
|
self.target = target
|
|
1113
1365
|
self.else_body = else_body
|
|
1114
|
-
|
|
1115
|
-
|
|
1366
|
+
super().__init__(
|
|
1367
|
+
parent=parent,
|
|
1368
|
+
mod_link=mod_link,
|
|
1369
|
+
kid=kid,
|
|
1370
|
+
line=line,
|
|
1371
|
+
sym_tab=sym_tab,
|
|
1372
|
+
from_walker=from_walker,
|
|
1373
|
+
)
|
|
1116
1374
|
|
|
1117
1375
|
|
|
1118
|
-
class RevisitStmt(
|
|
1376
|
+
class RevisitStmt(WalkerStmtOnlyNode):
|
|
1119
1377
|
"""ReVisitStmt node type for Jac Ast."""
|
|
1120
1378
|
|
|
1121
1379
|
def __init__(
|
|
@@ -1126,14 +1384,23 @@ class RevisitStmt(AstNode):
|
|
|
1126
1384
|
mod_link: Optional[Module],
|
|
1127
1385
|
kid: list[AstNode],
|
|
1128
1386
|
line: int,
|
|
1387
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
1388
|
+
from_walker: bool = False,
|
|
1129
1389
|
) -> None:
|
|
1130
1390
|
"""Initialize revisit statement node."""
|
|
1131
1391
|
self.hops = hops
|
|
1132
1392
|
self.else_body = else_body
|
|
1133
|
-
super().__init__(
|
|
1393
|
+
super().__init__(
|
|
1394
|
+
parent=parent,
|
|
1395
|
+
mod_link=mod_link,
|
|
1396
|
+
kid=kid,
|
|
1397
|
+
line=line,
|
|
1398
|
+
sym_tab=sym_tab,
|
|
1399
|
+
from_walker=from_walker,
|
|
1400
|
+
)
|
|
1134
1401
|
|
|
1135
1402
|
|
|
1136
|
-
class DisengageStmt(
|
|
1403
|
+
class DisengageStmt(WalkerStmtOnlyNode):
|
|
1137
1404
|
"""DisengageStmt node type for Jac Ast."""
|
|
1138
1405
|
|
|
1139
1406
|
def __init__(
|
|
@@ -1142,11 +1409,18 @@ class DisengageStmt(AstNode):
|
|
|
1142
1409
|
mod_link: Optional[Module],
|
|
1143
1410
|
kid: list[AstNode],
|
|
1144
1411
|
line: int,
|
|
1412
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
1145
1413
|
from_walker: bool = False,
|
|
1146
1414
|
) -> None:
|
|
1147
1415
|
"""Initialize disengage statement node."""
|
|
1148
|
-
|
|
1149
|
-
|
|
1416
|
+
super().__init__(
|
|
1417
|
+
parent=parent,
|
|
1418
|
+
mod_link=mod_link,
|
|
1419
|
+
kid=kid,
|
|
1420
|
+
line=line,
|
|
1421
|
+
sym_tab=sym_tab,
|
|
1422
|
+
from_walker=from_walker,
|
|
1423
|
+
)
|
|
1150
1424
|
|
|
1151
1425
|
|
|
1152
1426
|
class AwaitStmt(AstNode):
|
|
@@ -1159,10 +1433,13 @@ class AwaitStmt(AstNode):
|
|
|
1159
1433
|
mod_link: Optional[Module],
|
|
1160
1434
|
kid: list[AstNode],
|
|
1161
1435
|
line: int,
|
|
1436
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
1162
1437
|
) -> None:
|
|
1163
1438
|
"""Initialize sync statement node."""
|
|
1164
1439
|
self.target = target
|
|
1165
|
-
super().__init__(
|
|
1440
|
+
super().__init__(
|
|
1441
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
1442
|
+
)
|
|
1166
1443
|
|
|
1167
1444
|
|
|
1168
1445
|
class Assignment(AstNode):
|
|
@@ -1171,20 +1448,23 @@ class Assignment(AstNode):
|
|
|
1171
1448
|
def __init__(
|
|
1172
1449
|
self,
|
|
1173
1450
|
is_static: bool,
|
|
1174
|
-
target:
|
|
1451
|
+
target: AtomType,
|
|
1175
1452
|
value: ExprType,
|
|
1176
1453
|
mutable: bool,
|
|
1177
1454
|
parent: Optional[AstNode],
|
|
1178
1455
|
mod_link: Optional[Module],
|
|
1179
1456
|
kid: list[AstNode],
|
|
1180
1457
|
line: int,
|
|
1458
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
1181
1459
|
) -> None:
|
|
1182
1460
|
"""Initialize assignment node."""
|
|
1183
1461
|
self.is_static = is_static
|
|
1184
1462
|
self.target = target
|
|
1185
1463
|
self.value = value
|
|
1186
1464
|
self.mutable = mutable
|
|
1187
|
-
super().__init__(
|
|
1465
|
+
super().__init__(
|
|
1466
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
1467
|
+
)
|
|
1188
1468
|
|
|
1189
1469
|
|
|
1190
1470
|
class BinaryExpr(AstNode):
|
|
@@ -1199,12 +1479,15 @@ class BinaryExpr(AstNode):
|
|
|
1199
1479
|
mod_link: Optional[Module],
|
|
1200
1480
|
kid: list[AstNode],
|
|
1201
1481
|
line: int,
|
|
1482
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
1202
1483
|
) -> None:
|
|
1203
1484
|
"""Initialize binary expression node."""
|
|
1204
1485
|
self.left = left
|
|
1205
1486
|
self.right = right
|
|
1206
1487
|
self.op = op
|
|
1207
|
-
super().__init__(
|
|
1488
|
+
super().__init__(
|
|
1489
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
1490
|
+
)
|
|
1208
1491
|
|
|
1209
1492
|
|
|
1210
1493
|
class IfElseExpr(AstNode):
|
|
@@ -1219,12 +1502,15 @@ class IfElseExpr(AstNode):
|
|
|
1219
1502
|
mod_link: Optional[Module],
|
|
1220
1503
|
kid: list[AstNode],
|
|
1221
1504
|
line: int,
|
|
1505
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
1222
1506
|
) -> None:
|
|
1223
1507
|
"""Initialize if else expression node."""
|
|
1224
1508
|
self.condition = condition
|
|
1225
1509
|
self.value = value
|
|
1226
1510
|
self.else_value = else_value
|
|
1227
|
-
super().__init__(
|
|
1511
|
+
super().__init__(
|
|
1512
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
1513
|
+
)
|
|
1228
1514
|
|
|
1229
1515
|
|
|
1230
1516
|
class UnaryExpr(AstNode):
|
|
@@ -1238,11 +1524,14 @@ class UnaryExpr(AstNode):
|
|
|
1238
1524
|
mod_link: Optional[Module],
|
|
1239
1525
|
kid: list[AstNode],
|
|
1240
1526
|
line: int,
|
|
1527
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
1241
1528
|
) -> None:
|
|
1242
1529
|
"""Initialize unary expression node."""
|
|
1243
1530
|
self.operand = operand
|
|
1244
1531
|
self.op = op
|
|
1245
|
-
super().__init__(
|
|
1532
|
+
super().__init__(
|
|
1533
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
1534
|
+
)
|
|
1246
1535
|
|
|
1247
1536
|
|
|
1248
1537
|
class UnpackExpr(AstNode):
|
|
@@ -1256,11 +1545,14 @@ class UnpackExpr(AstNode):
|
|
|
1256
1545
|
mod_link: Optional[Module],
|
|
1257
1546
|
kid: list[AstNode],
|
|
1258
1547
|
line: int,
|
|
1548
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
1259
1549
|
) -> None:
|
|
1260
1550
|
"""Initialize unpack expression node."""
|
|
1261
1551
|
self.target = target
|
|
1262
1552
|
self.is_dict = is_dict
|
|
1263
|
-
super().__init__(
|
|
1553
|
+
super().__init__(
|
|
1554
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
1555
|
+
)
|
|
1264
1556
|
|
|
1265
1557
|
|
|
1266
1558
|
class MultiString(AstNode):
|
|
@@ -1273,10 +1565,13 @@ class MultiString(AstNode):
|
|
|
1273
1565
|
mod_link: Optional[Module],
|
|
1274
1566
|
kid: list[AstNode],
|
|
1275
1567
|
line: int,
|
|
1568
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
1276
1569
|
) -> None:
|
|
1277
1570
|
"""Initialize multi string expression node."""
|
|
1278
1571
|
self.strings = strings
|
|
1279
|
-
super().__init__(
|
|
1572
|
+
super().__init__(
|
|
1573
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
1574
|
+
)
|
|
1280
1575
|
|
|
1281
1576
|
|
|
1282
1577
|
class ExprList(AstNode):
|
|
@@ -1289,10 +1584,13 @@ class ExprList(AstNode):
|
|
|
1289
1584
|
mod_link: Optional[Module],
|
|
1290
1585
|
kid: list[AstNode],
|
|
1291
1586
|
line: int,
|
|
1587
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
1292
1588
|
) -> None:
|
|
1293
1589
|
"""Initialize expr value node."""
|
|
1294
1590
|
self.values = values
|
|
1295
|
-
super().__init__(
|
|
1591
|
+
super().__init__(
|
|
1592
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
1593
|
+
)
|
|
1296
1594
|
|
|
1297
1595
|
|
|
1298
1596
|
class ListVal(ExprList):
|
|
@@ -1315,12 +1613,15 @@ class TupleVal(AstNode):
|
|
|
1315
1613
|
mod_link: Optional[Module],
|
|
1316
1614
|
kid: list[AstNode],
|
|
1317
1615
|
line: int,
|
|
1616
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
1318
1617
|
) -> None:
|
|
1319
1618
|
"""Initialize tuple value node."""
|
|
1320
1619
|
self.first_expr = first_expr
|
|
1321
1620
|
self.exprs = exprs
|
|
1322
1621
|
self.assigns = assigns
|
|
1323
|
-
super().__init__(
|
|
1622
|
+
super().__init__(
|
|
1623
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
1624
|
+
)
|
|
1324
1625
|
|
|
1325
1626
|
|
|
1326
1627
|
class DictVal(AstNode):
|
|
@@ -1333,10 +1634,13 @@ class DictVal(AstNode):
|
|
|
1333
1634
|
mod_link: Optional[Module],
|
|
1334
1635
|
kid: list[AstNode],
|
|
1335
1636
|
line: int,
|
|
1637
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
1336
1638
|
) -> None:
|
|
1337
1639
|
"""Initialize dict expression node."""
|
|
1338
1640
|
self.kv_pairs = kv_pairs
|
|
1339
|
-
super().__init__(
|
|
1641
|
+
super().__init__(
|
|
1642
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
1643
|
+
)
|
|
1340
1644
|
|
|
1341
1645
|
|
|
1342
1646
|
class InnerCompr(AstNode):
|
|
@@ -1355,6 +1659,7 @@ class InnerCompr(AstNode):
|
|
|
1355
1659
|
mod_link: Optional[Module],
|
|
1356
1660
|
kid: list[AstNode],
|
|
1357
1661
|
line: int,
|
|
1662
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
1358
1663
|
) -> None:
|
|
1359
1664
|
"""Initialize comprehension expression node."""
|
|
1360
1665
|
self.out_expr = out_expr
|
|
@@ -1364,7 +1669,10 @@ class InnerCompr(AstNode):
|
|
|
1364
1669
|
self.is_list = is_list
|
|
1365
1670
|
self.is_gen = is_gen
|
|
1366
1671
|
self.is_set = is_set
|
|
1367
|
-
|
|
1672
|
+
|
|
1673
|
+
super().__init__(
|
|
1674
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
1675
|
+
)
|
|
1368
1676
|
|
|
1369
1677
|
|
|
1370
1678
|
class DictCompr(AstNode):
|
|
@@ -1381,6 +1689,7 @@ class DictCompr(AstNode):
|
|
|
1381
1689
|
mod_link: Optional[Module],
|
|
1382
1690
|
kid: list[AstNode],
|
|
1383
1691
|
line: int,
|
|
1692
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
1384
1693
|
) -> None:
|
|
1385
1694
|
"""Initialize comprehension expression node."""
|
|
1386
1695
|
self.outk_expr = outk_expr
|
|
@@ -1388,7 +1697,9 @@ class DictCompr(AstNode):
|
|
|
1388
1697
|
self.name_list = name_list
|
|
1389
1698
|
self.collection = collection
|
|
1390
1699
|
self.conditional = conditional
|
|
1391
|
-
super().__init__(
|
|
1700
|
+
super().__init__(
|
|
1701
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
1702
|
+
)
|
|
1392
1703
|
|
|
1393
1704
|
|
|
1394
1705
|
class KVPair(AstNode):
|
|
@@ -1402,11 +1713,14 @@ class KVPair(AstNode):
|
|
|
1402
1713
|
mod_link: Optional[Module],
|
|
1403
1714
|
kid: list[AstNode],
|
|
1404
1715
|
line: int,
|
|
1716
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
1405
1717
|
) -> None:
|
|
1406
1718
|
"""Initialize key value pair expression node."""
|
|
1407
1719
|
self.key = key
|
|
1408
1720
|
self.value = value
|
|
1409
|
-
super().__init__(
|
|
1721
|
+
super().__init__(
|
|
1722
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
1723
|
+
)
|
|
1410
1724
|
|
|
1411
1725
|
|
|
1412
1726
|
class AtomTrailer(AstNode):
|
|
@@ -1414,19 +1728,22 @@ class AtomTrailer(AstNode):
|
|
|
1414
1728
|
|
|
1415
1729
|
def __init__(
|
|
1416
1730
|
self,
|
|
1417
|
-
target:
|
|
1418
|
-
right:
|
|
1731
|
+
target: AtomType,
|
|
1732
|
+
right: IndexSlice | ArchRef | Token,
|
|
1419
1733
|
null_ok: bool,
|
|
1420
1734
|
parent: Optional[AstNode],
|
|
1421
1735
|
mod_link: Optional[Module],
|
|
1422
1736
|
kid: list[AstNode],
|
|
1423
1737
|
line: int,
|
|
1738
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
1424
1739
|
) -> None:
|
|
1425
1740
|
"""Initialize atom trailer expression node."""
|
|
1426
1741
|
self.target = target
|
|
1427
1742
|
self.right = right
|
|
1428
1743
|
self.null_ok = null_ok
|
|
1429
|
-
super().__init__(
|
|
1744
|
+
super().__init__(
|
|
1745
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
1746
|
+
)
|
|
1430
1747
|
|
|
1431
1748
|
|
|
1432
1749
|
class FuncCall(AstNode):
|
|
@@ -1440,11 +1757,14 @@ class FuncCall(AstNode):
|
|
|
1440
1757
|
mod_link: Optional[Module],
|
|
1441
1758
|
kid: list[AstNode],
|
|
1442
1759
|
line: int,
|
|
1760
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
1443
1761
|
) -> None:
|
|
1444
1762
|
"""Initialize function call expression node."""
|
|
1445
1763
|
self.target = target
|
|
1446
1764
|
self.params = params
|
|
1447
|
-
super().__init__(
|
|
1765
|
+
super().__init__(
|
|
1766
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
1767
|
+
)
|
|
1448
1768
|
|
|
1449
1769
|
|
|
1450
1770
|
class ParamList(AstNode):
|
|
@@ -1458,11 +1778,14 @@ class ParamList(AstNode):
|
|
|
1458
1778
|
mod_link: Optional[Module],
|
|
1459
1779
|
kid: list[AstNode],
|
|
1460
1780
|
line: int,
|
|
1781
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
1461
1782
|
) -> None:
|
|
1462
1783
|
"""Initialize parameter list expression node."""
|
|
1463
1784
|
self.p_args = p_args
|
|
1464
1785
|
self.p_kwargs = p_kwargs
|
|
1465
|
-
super().__init__(
|
|
1786
|
+
super().__init__(
|
|
1787
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
1788
|
+
)
|
|
1466
1789
|
|
|
1467
1790
|
|
|
1468
1791
|
class AssignmentList(AstNode):
|
|
@@ -1475,10 +1798,13 @@ class AssignmentList(AstNode):
|
|
|
1475
1798
|
mod_link: Optional[Module],
|
|
1476
1799
|
kid: list[AstNode],
|
|
1477
1800
|
line: int,
|
|
1801
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
1478
1802
|
) -> None:
|
|
1479
1803
|
"""Initialize expr value node."""
|
|
1480
1804
|
self.values = values
|
|
1481
|
-
super().__init__(
|
|
1805
|
+
super().__init__(
|
|
1806
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
1807
|
+
)
|
|
1482
1808
|
|
|
1483
1809
|
|
|
1484
1810
|
class IndexSlice(AstNode):
|
|
@@ -1493,12 +1819,15 @@ class IndexSlice(AstNode):
|
|
|
1493
1819
|
mod_link: Optional[Module],
|
|
1494
1820
|
kid: list[AstNode],
|
|
1495
1821
|
line: int,
|
|
1822
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
1496
1823
|
) -> None:
|
|
1497
1824
|
"""Initialize index slice expression node."""
|
|
1498
1825
|
self.start = start
|
|
1499
1826
|
self.stop = stop
|
|
1500
1827
|
self.is_range = is_range
|
|
1501
|
-
super().__init__(
|
|
1828
|
+
super().__init__(
|
|
1829
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
1830
|
+
)
|
|
1502
1831
|
|
|
1503
1832
|
|
|
1504
1833
|
class ArchRef(AstNode):
|
|
@@ -1512,11 +1841,14 @@ class ArchRef(AstNode):
|
|
|
1512
1841
|
mod_link: Optional[Module],
|
|
1513
1842
|
kid: list[AstNode],
|
|
1514
1843
|
line: int,
|
|
1844
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
1515
1845
|
) -> None:
|
|
1516
1846
|
"""Initialize global reference expression node."""
|
|
1517
1847
|
self.name_ref = name_ref
|
|
1518
1848
|
self.arch = arch
|
|
1519
|
-
super().__init__(
|
|
1849
|
+
super().__init__(
|
|
1850
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
1851
|
+
)
|
|
1520
1852
|
|
|
1521
1853
|
def py_resolve_name(self) -> str:
|
|
1522
1854
|
"""Resolve name."""
|
|
@@ -1538,10 +1870,13 @@ class SpecialVarRef(AstNode):
|
|
|
1538
1870
|
mod_link: Optional[Module],
|
|
1539
1871
|
kid: list[AstNode],
|
|
1540
1872
|
line: int,
|
|
1873
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
1541
1874
|
) -> None:
|
|
1542
1875
|
"""Initialize special var reference expression node."""
|
|
1543
1876
|
self.var = var
|
|
1544
|
-
super().__init__(
|
|
1877
|
+
super().__init__(
|
|
1878
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
1879
|
+
)
|
|
1545
1880
|
|
|
1546
1881
|
def py_resolve_name(self) -> str:
|
|
1547
1882
|
"""Resolve name."""
|
|
@@ -1559,7 +1894,7 @@ class SpecialVarRef(AstNode):
|
|
|
1559
1894
|
raise NotImplementedError("ICE: Special var reference not implemented")
|
|
1560
1895
|
|
|
1561
1896
|
|
|
1562
|
-
class EdgeOpRef(
|
|
1897
|
+
class EdgeOpRef(WalkerStmtOnlyNode):
|
|
1563
1898
|
"""EdgeOpRef node type for Jac Ast."""
|
|
1564
1899
|
|
|
1565
1900
|
def __init__(
|
|
@@ -1571,14 +1906,21 @@ class EdgeOpRef(AstNode):
|
|
|
1571
1906
|
mod_link: Optional[Module],
|
|
1572
1907
|
kid: list[AstNode],
|
|
1573
1908
|
line: int,
|
|
1909
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
1574
1910
|
from_walker: bool = False,
|
|
1575
1911
|
) -> None:
|
|
1576
1912
|
"""Initialize edge op reference expression node."""
|
|
1577
1913
|
self.filter_type = filter_type
|
|
1578
1914
|
self.filter_cond = filter_cond
|
|
1579
1915
|
self.edge_dir = edge_dir
|
|
1580
|
-
|
|
1581
|
-
|
|
1916
|
+
super().__init__(
|
|
1917
|
+
parent=parent,
|
|
1918
|
+
mod_link=mod_link,
|
|
1919
|
+
kid=kid,
|
|
1920
|
+
line=line,
|
|
1921
|
+
sym_tab=sym_tab,
|
|
1922
|
+
from_walker=from_walker,
|
|
1923
|
+
)
|
|
1582
1924
|
|
|
1583
1925
|
|
|
1584
1926
|
class DisconnectOp(EdgeOpRef):
|
|
@@ -1597,12 +1939,15 @@ class ConnectOp(AstNode):
|
|
|
1597
1939
|
mod_link: Optional[Module],
|
|
1598
1940
|
kid: list[AstNode],
|
|
1599
1941
|
line: int,
|
|
1942
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
1600
1943
|
) -> None:
|
|
1601
1944
|
"""Initialize connect op reference expression node."""
|
|
1602
1945
|
self.conn_type = conn_type
|
|
1603
1946
|
self.conn_assign = conn_assign
|
|
1604
1947
|
self.edge_dir = edge_dir
|
|
1605
|
-
super().__init__(
|
|
1948
|
+
super().__init__(
|
|
1949
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
1950
|
+
)
|
|
1606
1951
|
|
|
1607
1952
|
|
|
1608
1953
|
class FilterCompr(AstNode):
|
|
@@ -1615,10 +1960,13 @@ class FilterCompr(AstNode):
|
|
|
1615
1960
|
mod_link: Optional[Module],
|
|
1616
1961
|
kid: list[AstNode],
|
|
1617
1962
|
line: int,
|
|
1963
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
1618
1964
|
) -> None:
|
|
1619
1965
|
"""Initialize filter_cond context expression node."""
|
|
1620
1966
|
self.compares = compares
|
|
1621
|
-
super().__init__(
|
|
1967
|
+
super().__init__(
|
|
1968
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
1969
|
+
)
|
|
1622
1970
|
|
|
1623
1971
|
|
|
1624
1972
|
class FString(AstNode):
|
|
@@ -1631,64 +1979,19 @@ class FString(AstNode):
|
|
|
1631
1979
|
mod_link: Optional[Module],
|
|
1632
1980
|
kid: list[AstNode],
|
|
1633
1981
|
line: int,
|
|
1982
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
1634
1983
|
) -> None:
|
|
1635
1984
|
"""Initialize fstring expression node."""
|
|
1636
1985
|
self.parts = parts
|
|
1637
|
-
super().__init__(
|
|
1638
|
-
|
|
1639
|
-
|
|
1640
|
-
AtomType = Union[
|
|
1641
|
-
MultiString,
|
|
1642
|
-
ListVal,
|
|
1643
|
-
TupleVal,
|
|
1644
|
-
SetVal,
|
|
1645
|
-
DictVal,
|
|
1646
|
-
InnerCompr,
|
|
1647
|
-
DictCompr,
|
|
1648
|
-
AtomTrailer,
|
|
1649
|
-
EdgeOpRef,
|
|
1650
|
-
FilterCompr,
|
|
1651
|
-
]
|
|
1652
|
-
|
|
1653
|
-
ExprType = Union[
|
|
1654
|
-
UnaryExpr,
|
|
1655
|
-
BinaryExpr,
|
|
1656
|
-
IfElseExpr,
|
|
1657
|
-
UnpackExpr,
|
|
1658
|
-
AtomType,
|
|
1659
|
-
]
|
|
1986
|
+
super().__init__(
|
|
1987
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
1988
|
+
)
|
|
1660
1989
|
|
|
1661
1990
|
|
|
1662
|
-
StmtType = Union[
|
|
1663
|
-
Import,
|
|
1664
|
-
Architype,
|
|
1665
|
-
Ability,
|
|
1666
|
-
Assignment,
|
|
1667
|
-
ExprType,
|
|
1668
|
-
IfStmt,
|
|
1669
|
-
TryStmt,
|
|
1670
|
-
IterForStmt,
|
|
1671
|
-
InForStmt,
|
|
1672
|
-
WhileStmt,
|
|
1673
|
-
WithStmt,
|
|
1674
|
-
RaiseStmt,
|
|
1675
|
-
AssertStmt,
|
|
1676
|
-
CtrlStmt,
|
|
1677
|
-
DeleteStmt,
|
|
1678
|
-
ReportStmt,
|
|
1679
|
-
ReturnStmt,
|
|
1680
|
-
YieldStmt,
|
|
1681
|
-
AwaitStmt,
|
|
1682
|
-
DisengageStmt,
|
|
1683
|
-
RevisitStmt,
|
|
1684
|
-
VisitStmt,
|
|
1685
|
-
IgnoreStmt,
|
|
1686
|
-
]
|
|
1687
|
-
|
|
1688
1991
|
# AST Parse-Tree Node Types
|
|
1689
|
-
# --------------------------
|
|
1690
1992
|
|
|
1691
1993
|
|
|
1994
|
+
# --------------------------
|
|
1692
1995
|
class Parse(AstNode):
|
|
1693
1996
|
"""Parse node type for Jac Ast."""
|
|
1694
1997
|
|
|
@@ -1699,10 +2002,17 @@ class Parse(AstNode):
|
|
|
1699
2002
|
mod_link: Optional[Module],
|
|
1700
2003
|
kid: list[AstNode],
|
|
1701
2004
|
line: int,
|
|
2005
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
1702
2006
|
) -> None:
|
|
1703
2007
|
"""Initialize parse."""
|
|
1704
2008
|
self.name = name
|
|
1705
|
-
super().__init__(
|
|
2009
|
+
super().__init__(
|
|
2010
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
2011
|
+
)
|
|
2012
|
+
|
|
2013
|
+
def __repr__(self) -> str:
|
|
2014
|
+
"""Return string representation of parse node."""
|
|
2015
|
+
return super().__repr__() + f" ({self.name})" + " line: " + str(self.line)
|
|
1706
2016
|
|
|
1707
2017
|
|
|
1708
2018
|
class Token(AstNode):
|
|
@@ -1718,13 +2028,16 @@ class Token(AstNode):
|
|
|
1718
2028
|
mod_link: Optional[Module],
|
|
1719
2029
|
kid: list[AstNode],
|
|
1720
2030
|
line: int,
|
|
2031
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
1721
2032
|
) -> None:
|
|
1722
2033
|
"""Initialize token."""
|
|
1723
2034
|
self.name = name
|
|
1724
2035
|
self.value = value
|
|
1725
2036
|
self.col_start = col_start
|
|
1726
2037
|
self.col_end = col_end
|
|
1727
|
-
super().__init__(
|
|
2038
|
+
super().__init__(
|
|
2039
|
+
parent=parent, mod_link=mod_link, kid=kid, line=line, sym_tab=sym_tab
|
|
2040
|
+
)
|
|
1728
2041
|
|
|
1729
2042
|
|
|
1730
2043
|
class Name(Token):
|
|
@@ -1741,6 +2054,7 @@ class Name(Token):
|
|
|
1741
2054
|
mod_link: Optional[Module],
|
|
1742
2055
|
kid: list[AstNode],
|
|
1743
2056
|
line: int,
|
|
2057
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
1744
2058
|
) -> None:
|
|
1745
2059
|
"""Initialize name."""
|
|
1746
2060
|
self.already_declared = already_declared
|
|
@@ -1753,6 +2067,7 @@ class Name(Token):
|
|
|
1753
2067
|
mod_link=mod_link,
|
|
1754
2068
|
kid=kid,
|
|
1755
2069
|
line=line,
|
|
2070
|
+
sym_tab=sym_tab,
|
|
1756
2071
|
)
|
|
1757
2072
|
|
|
1758
2073
|
|
|
@@ -1770,6 +2085,7 @@ class Constant(Token):
|
|
|
1770
2085
|
mod_link: Optional[Module],
|
|
1771
2086
|
kid: list[AstNode],
|
|
1772
2087
|
line: int,
|
|
2088
|
+
sym_tab: Optional[SymbolTable] = None,
|
|
1773
2089
|
) -> None:
|
|
1774
2090
|
"""Initialize constant."""
|
|
1775
2091
|
super().__init__(
|
|
@@ -1781,10 +2097,64 @@ class Constant(Token):
|
|
|
1781
2097
|
mod_link=mod_link,
|
|
1782
2098
|
kid=kid,
|
|
1783
2099
|
line=line,
|
|
2100
|
+
sym_tab=sym_tab,
|
|
1784
2101
|
)
|
|
1785
2102
|
self._typ = typ
|
|
1786
2103
|
|
|
1787
2104
|
|
|
2105
|
+
# Aggregate Types
|
|
2106
|
+
# ----------------
|
|
2107
|
+
|
|
2108
|
+
|
|
2109
|
+
AtomType = Union[
|
|
2110
|
+
MultiString,
|
|
2111
|
+
ListVal,
|
|
2112
|
+
TupleVal,
|
|
2113
|
+
SetVal,
|
|
2114
|
+
DictVal,
|
|
2115
|
+
InnerCompr,
|
|
2116
|
+
DictCompr,
|
|
2117
|
+
AtomTrailer,
|
|
2118
|
+
EdgeOpRef,
|
|
2119
|
+
FilterCompr,
|
|
2120
|
+
]
|
|
2121
|
+
|
|
2122
|
+
ExprType = Union[
|
|
2123
|
+
UnaryExpr,
|
|
2124
|
+
BinaryExpr,
|
|
2125
|
+
IfElseExpr,
|
|
2126
|
+
UnpackExpr,
|
|
2127
|
+
AtomType,
|
|
2128
|
+
]
|
|
2129
|
+
|
|
2130
|
+
|
|
2131
|
+
StmtType = Union[
|
|
2132
|
+
Import,
|
|
2133
|
+
Architype,
|
|
2134
|
+
Ability,
|
|
2135
|
+
Assignment,
|
|
2136
|
+
ExprType,
|
|
2137
|
+
IfStmt,
|
|
2138
|
+
TryStmt,
|
|
2139
|
+
IterForStmt,
|
|
2140
|
+
InForStmt,
|
|
2141
|
+
WhileStmt,
|
|
2142
|
+
WithStmt,
|
|
2143
|
+
RaiseStmt,
|
|
2144
|
+
AssertStmt,
|
|
2145
|
+
CtrlStmt,
|
|
2146
|
+
DeleteStmt,
|
|
2147
|
+
ReportStmt,
|
|
2148
|
+
ReturnStmt,
|
|
2149
|
+
YieldStmt,
|
|
2150
|
+
AwaitStmt,
|
|
2151
|
+
DisengageStmt,
|
|
2152
|
+
RevisitStmt,
|
|
2153
|
+
VisitStmt,
|
|
2154
|
+
IgnoreStmt,
|
|
2155
|
+
]
|
|
2156
|
+
|
|
2157
|
+
|
|
1788
2158
|
# Utiliiy functions
|
|
1789
2159
|
# -----------------
|
|
1790
2160
|
|
|
@@ -1801,9 +2171,14 @@ def replace_node(node: AstNode, new_node: Optional[AstNode]) -> AstNode | None:
|
|
|
1801
2171
|
return new_node
|
|
1802
2172
|
|
|
1803
2173
|
|
|
1804
|
-
def append_node(
|
|
2174
|
+
def append_node(
|
|
2175
|
+
node: AstNode, new_node: Optional[AstNode], front: bool = False
|
|
2176
|
+
) -> AstNode | None:
|
|
1805
2177
|
"""Replace node with new_node."""
|
|
1806
|
-
|
|
2178
|
+
if front:
|
|
2179
|
+
node.kid.insert(0, new_node)
|
|
2180
|
+
else:
|
|
2181
|
+
node.kid.append(new_node)
|
|
1807
2182
|
if new_node:
|
|
1808
2183
|
new_node.parent = node
|
|
1809
2184
|
return new_node
|