pyVHDLModelTreesitter 0.8.0__tar.gz → 0.9.0__tar.gz
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.
- {pyvhdlmodeltreesitter-0.8.0 → pyvhdlmodeltreesitter-0.9.0}/.gitignore +2 -1
- {pyvhdlmodeltreesitter-0.8.0 → pyvhdlmodeltreesitter-0.9.0}/PKG-INFO +10 -5
- {pyvhdlmodeltreesitter-0.8.0 → pyvhdlmodeltreesitter-0.9.0}/README.md +9 -4
- {pyvhdlmodeltreesitter-0.8.0 → pyvhdlmodeltreesitter-0.9.0}/pyproject.toml +2 -1
- {pyvhdlmodeltreesitter-0.8.0 → pyvhdlmodeltreesitter-0.9.0}/src/pyVHDLModelTreesitter/_Association.py +3 -3
- {pyvhdlmodeltreesitter-0.8.0 → pyvhdlmodeltreesitter-0.9.0}/src/pyVHDLModelTreesitter/_Base.py +3 -3
- {pyvhdlmodeltreesitter-0.8.0 → pyvhdlmodeltreesitter-0.9.0}/src/pyVHDLModelTreesitter/_Concurrent.py +58 -11
- {pyvhdlmodeltreesitter-0.8.0 → pyvhdlmodeltreesitter-0.9.0}/src/pyVHDLModelTreesitter/_DesignUnit.py +50 -16
- {pyvhdlmodeltreesitter-0.8.0 → pyvhdlmodeltreesitter-0.9.0}/src/pyVHDLModelTreesitter/_Document.py +4 -3
- {pyvhdlmodeltreesitter-0.8.0 → pyvhdlmodeltreesitter-0.9.0}/src/pyVHDLModelTreesitter/_Interface.py +6 -6
- pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/_Object.py +90 -0
- pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/_Sequential.py +172 -0
- pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/_Type.py +134 -0
- pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/__init__.py +14 -0
- {pyvhdlmodeltreesitter-0.8.0 → pyvhdlmodeltreesitter-0.9.0}/src/pyVHDLModelTreesitter/_parse.py +127 -23
- {pyvhdlmodeltreesitter-0.8.0 → pyvhdlmodeltreesitter-0.9.0}/src/pyVHDLModelTreesitter/_subtype_indication.py +4 -4
- pyvhdlmodeltreesitter-0.8.0/src/pyVHDLModelTreesitter/_errors.py → pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/error.py +32 -0
- {pyvhdlmodeltreesitter-0.8.0 → pyvhdlmodeltreesitter-0.9.0}/src/pyVHDLModelTreesitter/format.py +44 -20
- pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/__init__.py +9 -0
- pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/_generated_queries.py +193 -0
- {pyvhdlmodeltreesitter-0.8.0/src/pyVHDLModelTreesitter/treesitter → pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries}/_protocol.py +9 -6
- pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/_query.py +117 -0
- {pyvhdlmodeltreesitter-0.8.0/src/pyVHDLModelTreesitter/treesitter → pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries}/_utils.py +2 -2
- pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/query-files/aggregate.scm +7 -0
- {pyvhdlmodeltreesitter-0.8.0/src/pyVHDLModelTreesitter/treesitter/queries → pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/query-files}/constant_declaration.scm +1 -1
- pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/query-files/else_statement.scm +3 -0
- pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/query-files/enumeration_type_definition.scm +5 -0
- pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/query-files/if_elsif_statement.scm +18 -0
- pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/query-files/if_statement_block.scm +3 -0
- pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/query-files/process_statement.scm +10 -0
- pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/query-files/record_type_definition.scm +6 -0
- pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/query-files/subtype_declaration.scm +4 -0
- pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/query-files/type_declaration.scm +13 -0
- pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/query-files/variable_declaration.scm +10 -0
- pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/query-files/wait_statement.scm +13 -0
- pyvhdlmodeltreesitter-0.8.0/src/pyVHDLModelTreesitter/_Object.py +0 -83
- pyvhdlmodeltreesitter-0.8.0/src/pyVHDLModelTreesitter/__init__.py +0 -29
- pyvhdlmodeltreesitter-0.8.0/src/pyVHDLModelTreesitter/treesitter/__init__.py +0 -29
- pyvhdlmodeltreesitter-0.8.0/src/pyVHDLModelTreesitter/treesitter/queries/ignorable_parentheses.scm +0 -11
- pyvhdlmodeltreesitter-0.8.0/src/pyVHDLModelTreesitter/treesitter/query.py +0 -256
- {pyvhdlmodeltreesitter-0.8.0 → pyvhdlmodeltreesitter-0.9.0}/LICENSE +0 -0
- {pyvhdlmodeltreesitter-0.8.0 → pyvhdlmodeltreesitter-0.9.0}/src/pyVHDLModelTreesitter/Expression.py +0 -0
- {pyvhdlmodeltreesitter-0.8.0 → pyvhdlmodeltreesitter-0.9.0}/src/pyVHDLModelTreesitter/_Design.py +0 -0
- {pyvhdlmodeltreesitter-0.8.0 → pyvhdlmodeltreesitter-0.9.0}/src/pyVHDLModelTreesitter/_Name.py +0 -0
- {pyvhdlmodeltreesitter-0.8.0 → pyvhdlmodeltreesitter-0.9.0}/src/pyVHDLModelTreesitter/py.typed +0 -0
- {pyvhdlmodeltreesitter-0.8.0/src/pyVHDLModelTreesitter/treesitter/queries → pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/query-files}/adding_expression.scm +0 -0
- {pyvhdlmodeltreesitter-0.8.0/src/pyVHDLModelTreesitter/treesitter/queries → pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/query-files}/architecture_definition.scm +0 -0
- {pyvhdlmodeltreesitter-0.8.0/src/pyVHDLModelTreesitter/treesitter/queries → pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/query-files}/association_element.scm +0 -0
- {pyvhdlmodeltreesitter-0.8.0/src/pyVHDLModelTreesitter/treesitter/queries → pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/query-files}/association_elements.scm +0 -0
- {pyvhdlmodeltreesitter-0.8.0/src/pyVHDLModelTreesitter/treesitter/queries → pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/query-files}/association_list_simple_range.scm +0 -0
- {pyvhdlmodeltreesitter-0.8.0/src/pyVHDLModelTreesitter/treesitter/queries → pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/query-files}/bit_string_literal.scm +0 -0
- {pyvhdlmodeltreesitter-0.8.0/src/pyVHDLModelTreesitter/treesitter/queries → pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/query-files}/component_declaration.scm +0 -0
- {pyvhdlmodeltreesitter-0.8.0/src/pyVHDLModelTreesitter/treesitter/queries → pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/query-files}/component_instantiation_statement.scm +0 -0
- {pyvhdlmodeltreesitter-0.8.0/src/pyVHDLModelTreesitter/treesitter/queries → pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/query-files}/concurrent_conditional_signal_assignment.scm +0 -0
- {pyvhdlmodeltreesitter-0.8.0/src/pyVHDLModelTreesitter/treesitter/queries → pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/query-files}/concurrent_simple_signal_assignment.scm +0 -0
- {pyvhdlmodeltreesitter-0.8.0/src/pyVHDLModelTreesitter/treesitter/queries → pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/query-files}/constrained_1d_array.scm +0 -0
- {pyvhdlmodeltreesitter-0.8.0/src/pyVHDLModelTreesitter/treesitter/queries → pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/query-files}/constrained_scalar.scm +0 -0
- {pyvhdlmodeltreesitter-0.8.0/src/pyVHDLModelTreesitter/treesitter/queries → pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/query-files}/design_units.scm +0 -0
- {pyvhdlmodeltreesitter-0.8.0/src/pyVHDLModelTreesitter/treesitter/queries → pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/query-files}/entity_declaration.scm +0 -0
- {pyvhdlmodeltreesitter-0.8.0/src/pyVHDLModelTreesitter/treesitter/queries → pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/query-files}/function_call.scm +0 -0
- {pyvhdlmodeltreesitter-0.8.0/src/pyVHDLModelTreesitter/treesitter/queries → pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/query-files}/indexed_name.scm +0 -0
- {pyvhdlmodeltreesitter-0.8.0/src/pyVHDLModelTreesitter/treesitter/queries → pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/query-files}/interface_declaration.scm +0 -0
- {pyvhdlmodeltreesitter-0.8.0/src/pyVHDLModelTreesitter/treesitter/queries → pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/query-files}/interface_declarations.scm +0 -0
- {pyvhdlmodeltreesitter-0.8.0/src/pyVHDLModelTreesitter/treesitter/queries → pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/query-files}/library_clauses.scm +0 -0
- {pyvhdlmodeltreesitter-0.8.0/src/pyVHDLModelTreesitter/treesitter/queries → pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/query-files}/library_namespaces.scm +0 -0
- {pyvhdlmodeltreesitter-0.8.0/src/pyVHDLModelTreesitter/treesitter/queries → pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/query-files}/logical_expression.scm +0 -0
- {pyvhdlmodeltreesitter-0.8.0/src/pyVHDLModelTreesitter/treesitter/queries → pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/query-files}/multiplying_expression.scm +0 -0
- {pyvhdlmodeltreesitter-0.8.0/src/pyVHDLModelTreesitter/treesitter/queries → pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/query-files}/package_declaration.scm +0 -0
- {pyvhdlmodeltreesitter-0.8.0/src/pyVHDLModelTreesitter/treesitter/queries → pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/query-files}/package_definition.scm +0 -0
- {pyvhdlmodeltreesitter-0.8.0/src/pyVHDLModelTreesitter/treesitter/queries → pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/query-files}/physical_literal.scm +0 -0
- {pyvhdlmodeltreesitter-0.8.0/src/pyVHDLModelTreesitter/treesitter/queries → pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/query-files}/relational_expression.scm +0 -0
- {pyvhdlmodeltreesitter-0.8.0/src/pyVHDLModelTreesitter/treesitter/queries → pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/query-files}/selected_names.scm +0 -0
- {pyvhdlmodeltreesitter-0.8.0/src/pyVHDLModelTreesitter/treesitter/queries → pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/query-files}/shift_expression.scm +0 -0
- {pyvhdlmodeltreesitter-0.8.0/src/pyVHDLModelTreesitter/treesitter/queries → pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/query-files}/signal_declaration.scm +0 -0
- {pyvhdlmodeltreesitter-0.8.0/src/pyVHDLModelTreesitter/treesitter/queries → pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/query-files}/simple_subtype.scm +0 -0
- {pyvhdlmodeltreesitter-0.8.0/src/pyVHDLModelTreesitter/treesitter/queries → pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/query-files}/type_conversion.scm +0 -0
- {pyvhdlmodeltreesitter-0.8.0/src/pyVHDLModelTreesitter/treesitter/queries → pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/query-files}/unary_expression.scm +0 -0
- {pyvhdlmodeltreesitter-0.8.0/src/pyVHDLModelTreesitter/treesitter/queries → pyvhdlmodeltreesitter-0.9.0/src/pyVHDLModelTreesitter/queries/query-files}/use_clauses.scm +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pyVHDLModelTreesitter
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.9.0
|
|
4
4
|
Summary: An implementation of pyVHDLModel using treesitter
|
|
5
5
|
Project-URL: Repository, https://gitlab.com/dawalters/pyVHDLModelTreesitter
|
|
6
6
|
Author: Dominic Adam Walters
|
|
@@ -47,7 +47,8 @@ Description-Content-Type: text/markdown
|
|
|
47
47
|
[![Python Version][shield-python-version]][pyVHDLModelTreesitter-pypi]
|
|
48
48
|
|
|
49
49
|
`pyVHDLModelTreesitter` is an implementation of the
|
|
50
|
-
[`pyVHDLModel`][pyVHDLModel-github] API using
|
|
50
|
+
[`pyVHDLModel`][pyVHDLModel-github] API using
|
|
51
|
+
[`tree-sitter-vhdl`][tree-sitter-vhdl].
|
|
51
52
|
|
|
52
53
|
> Disclaimer: This project is in early development and only implements a
|
|
53
54
|
fraction of the features of [`pyVHDLModel`][pyVHDLModel-github].
|
|
@@ -69,9 +70,9 @@ You can download source releases from the
|
|
|
69
70
|
|
|
70
71
|
## Documentation
|
|
71
72
|
|
|
72
|
-
|
|
73
|
+
To parse a VHDL file:
|
|
73
74
|
|
|
74
|
-
```
|
|
75
|
+
```python
|
|
75
76
|
import pyVHDLModelTreesitter
|
|
76
77
|
|
|
77
78
|
document = pyVHDLModelTreesitter.Document.from_file("path/to/file.vhd")
|
|
@@ -80,7 +81,9 @@ document = pyVHDLModelTreesitter.Document.from_file("path/to/file.vhd")
|
|
|
80
81
|
`pyVHDLModelTreesitter.Document` is a subclass of
|
|
81
82
|
[`pyVHDLModel.Document`][pyVHDLModel-Document].
|
|
82
83
|
|
|
83
|
-
Detailed documentation is
|
|
84
|
+
Detailed documentation is available for [`pyVHDLModel`][pyVHDLModel-documentation].
|
|
85
|
+
|
|
86
|
+
A complete list of public API endpoints is in [DOCS.md](DOCS.md).
|
|
84
87
|
|
|
85
88
|
## Setup for Development
|
|
86
89
|
|
|
@@ -107,6 +110,7 @@ You can `make help` to see what actions are available.
|
|
|
107
110
|
|
|
108
111
|
[precommit-github]: https://github.com/pre-commit/pre-commit
|
|
109
112
|
[pyVHDLModel-Document]: https://vhdl.github.io/pyVHDLModel/pyVHDLModel/pyVHDLModel.html#pyVHDLModel.Document
|
|
113
|
+
[pyVHDLModel-documentation]: https://vhdl.github.io/pyVHDLModel
|
|
110
114
|
[pyVHDLModel-github]: https://github.com/VHDL/pyVHDLModel
|
|
111
115
|
[pyVHDLModelTreesitter-codecov]: https://codecov.io/gitlab/dawalters/pyVHDLModelTreesitter
|
|
112
116
|
[pyVHDLModelTreesitter-pipeline]: https://gitlab.com/dawalters/pyVHDLModelTreesitter/-/pipelines?page=1&scope=all&ref=develop
|
|
@@ -118,3 +122,4 @@ You can `make help` to see what actions are available.
|
|
|
118
122
|
[shield-python-version]: https://img.shields.io/pypi/pyversions/pyVHDLModelTreesitter
|
|
119
123
|
[shield-releases]: https://gitlab.com/dawalters/pyVHDLModelTreesitter/-/badges/release.svg
|
|
120
124
|
[shield-version]: https://img.shields.io/pypi/v/pyVHDLModelTreesitter
|
|
125
|
+
[tree-sitter-vhdl]: https://github.com/jpt13653903/tree-sitter-vhdl
|
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
[![Python Version][shield-python-version]][pyVHDLModelTreesitter-pypi]
|
|
8
8
|
|
|
9
9
|
`pyVHDLModelTreesitter` is an implementation of the
|
|
10
|
-
[`pyVHDLModel`][pyVHDLModel-github] API using
|
|
10
|
+
[`pyVHDLModel`][pyVHDLModel-github] API using
|
|
11
|
+
[`tree-sitter-vhdl`][tree-sitter-vhdl].
|
|
11
12
|
|
|
12
13
|
> Disclaimer: This project is in early development and only implements a
|
|
13
14
|
fraction of the features of [`pyVHDLModel`][pyVHDLModel-github].
|
|
@@ -29,9 +30,9 @@ You can download source releases from the
|
|
|
29
30
|
|
|
30
31
|
## Documentation
|
|
31
32
|
|
|
32
|
-
|
|
33
|
+
To parse a VHDL file:
|
|
33
34
|
|
|
34
|
-
```
|
|
35
|
+
```python
|
|
35
36
|
import pyVHDLModelTreesitter
|
|
36
37
|
|
|
37
38
|
document = pyVHDLModelTreesitter.Document.from_file("path/to/file.vhd")
|
|
@@ -40,7 +41,9 @@ document = pyVHDLModelTreesitter.Document.from_file("path/to/file.vhd")
|
|
|
40
41
|
`pyVHDLModelTreesitter.Document` is a subclass of
|
|
41
42
|
[`pyVHDLModel.Document`][pyVHDLModel-Document].
|
|
42
43
|
|
|
43
|
-
Detailed documentation is
|
|
44
|
+
Detailed documentation is available for [`pyVHDLModel`][pyVHDLModel-documentation].
|
|
45
|
+
|
|
46
|
+
A complete list of public API endpoints is in [DOCS.md](DOCS.md).
|
|
44
47
|
|
|
45
48
|
## Setup for Development
|
|
46
49
|
|
|
@@ -67,6 +70,7 @@ You can `make help` to see what actions are available.
|
|
|
67
70
|
|
|
68
71
|
[precommit-github]: https://github.com/pre-commit/pre-commit
|
|
69
72
|
[pyVHDLModel-Document]: https://vhdl.github.io/pyVHDLModel/pyVHDLModel/pyVHDLModel.html#pyVHDLModel.Document
|
|
73
|
+
[pyVHDLModel-documentation]: https://vhdl.github.io/pyVHDLModel
|
|
70
74
|
[pyVHDLModel-github]: https://github.com/VHDL/pyVHDLModel
|
|
71
75
|
[pyVHDLModelTreesitter-codecov]: https://codecov.io/gitlab/dawalters/pyVHDLModelTreesitter
|
|
72
76
|
[pyVHDLModelTreesitter-pipeline]: https://gitlab.com/dawalters/pyVHDLModelTreesitter/-/pipelines?page=1&scope=all&ref=develop
|
|
@@ -78,3 +82,4 @@ You can `make help` to see what actions are available.
|
|
|
78
82
|
[shield-python-version]: https://img.shields.io/pypi/pyversions/pyVHDLModelTreesitter
|
|
79
83
|
[shield-releases]: https://gitlab.com/dawalters/pyVHDLModelTreesitter/-/badges/release.svg
|
|
80
84
|
[shield-version]: https://img.shields.io/pypi/v/pyVHDLModelTreesitter
|
|
85
|
+
[tree-sitter-vhdl]: https://github.com/jpt13653903/tree-sitter-vhdl
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "pyVHDLModelTreesitter"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.9.0"
|
|
8
8
|
description = "An implementation of pyVHDLModel using treesitter"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.11"
|
|
@@ -89,6 +89,7 @@ dependencies = [
|
|
|
89
89
|
python = ["3.11", "3.12", "3.13", "3.14"]
|
|
90
90
|
|
|
91
91
|
[tool.mypy]
|
|
92
|
+
allow_redefinition = true
|
|
92
93
|
implicit_reexport = true
|
|
93
94
|
scripts_are_modules = true
|
|
94
95
|
strict = true
|
|
@@ -13,12 +13,12 @@ from pyVHDLModel.Name import OpenName
|
|
|
13
13
|
from pyVHDLModel.Symbol import SignalSymbol
|
|
14
14
|
|
|
15
15
|
from pyVHDLModelTreesitter._Name import parse_name
|
|
16
|
-
from pyVHDLModelTreesitter.
|
|
16
|
+
from pyVHDLModelTreesitter.queries import AssociationElement
|
|
17
|
+
from pyVHDLModelTreesitter.queries._protocol import inject_node
|
|
18
|
+
from pyVHDLModelTreesitter.queries._utils import (
|
|
17
19
|
get_node,
|
|
18
20
|
get_node_text,
|
|
19
|
-
inject_node,
|
|
20
21
|
)
|
|
21
|
-
from pyVHDLModelTreesitter.treesitter.query import AssociationElement
|
|
22
22
|
|
|
23
23
|
if TYPE_CHECKING:
|
|
24
24
|
import pyVHDLModel
|
{pyvhdlmodeltreesitter-0.8.0 → pyvhdlmodeltreesitter-0.9.0}/src/pyVHDLModelTreesitter/_Base.py
RENAMED
|
@@ -17,15 +17,15 @@ from pyVHDLModel.Base import SimpleRange, WaveformElement
|
|
|
17
17
|
if TYPE_CHECKING:
|
|
18
18
|
from tree_sitter import Node
|
|
19
19
|
|
|
20
|
-
from pyVHDLModelTreesitter.
|
|
20
|
+
from pyVHDLModelTreesitter._parse import parse_simple_expression
|
|
21
|
+
from pyVHDLModelTreesitter.error import (
|
|
21
22
|
NodeExtraChildError,
|
|
22
23
|
NodeMissingChildError,
|
|
23
24
|
NodeTextIsInvalidError,
|
|
24
25
|
NodeTextIsNoneError,
|
|
25
26
|
NotImplementedWarning,
|
|
26
27
|
)
|
|
27
|
-
from pyVHDLModelTreesitter.
|
|
28
|
-
from pyVHDLModelTreesitter.treesitter import inject_node
|
|
28
|
+
from pyVHDLModelTreesitter.queries._protocol import inject_node
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
def parse_direction(string: str) -> pyVHDLModel.Base.Direction | None:
|
{pyvhdlmodeltreesitter-0.8.0 → pyvhdlmodeltreesitter-0.9.0}/src/pyVHDLModelTreesitter/_Concurrent.py
RENAMED
|
@@ -7,6 +7,7 @@ __all__ = [
|
|
|
7
7
|
"parse_concurrent_conditional_signal_assignment",
|
|
8
8
|
"parse_concurrent_simple_signal_assignment",
|
|
9
9
|
"parse_entity_instantiation",
|
|
10
|
+
"parse_process",
|
|
10
11
|
]
|
|
11
12
|
|
|
12
13
|
from typing import TYPE_CHECKING
|
|
@@ -20,6 +21,7 @@ from pyVHDLModel.Concurrent import (
|
|
|
20
21
|
ConcurrentConditionalSignalAssignment,
|
|
21
22
|
ConcurrentSimpleSignalAssignment,
|
|
22
23
|
EntityInstantiation,
|
|
24
|
+
ProcessStatement,
|
|
23
25
|
)
|
|
24
26
|
from pyVHDLModel.Symbol import (
|
|
25
27
|
ArchitectureSymbol,
|
|
@@ -30,24 +32,31 @@ from pyVHDLModel.Symbol import (
|
|
|
30
32
|
|
|
31
33
|
from pyVHDLModelTreesitter._Association import parse_association_item
|
|
32
34
|
from pyVHDLModelTreesitter._Base import parse_waveform_element
|
|
33
|
-
from pyVHDLModelTreesitter._errors import NotImplementedWarning
|
|
34
35
|
from pyVHDLModelTreesitter._Name import parse_name
|
|
35
|
-
from pyVHDLModelTreesitter.
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
inject_node,
|
|
40
|
-
sort_into_text_order,
|
|
41
|
-
)
|
|
42
|
-
from pyVHDLModelTreesitter.treesitter.query import (
|
|
36
|
+
from pyVHDLModelTreesitter._Object import parse_variable
|
|
37
|
+
from pyVHDLModelTreesitter._Sequential import parse_sequential_block
|
|
38
|
+
from pyVHDLModelTreesitter.error import NotImplementedWarning
|
|
39
|
+
from pyVHDLModelTreesitter.queries import (
|
|
43
40
|
ComponentInstantiationStatement,
|
|
44
41
|
)
|
|
45
|
-
from pyVHDLModelTreesitter.
|
|
42
|
+
from pyVHDLModelTreesitter.queries import (
|
|
46
43
|
ConcurrentConditionalSignalAssignment as ConcurrentConditionalSignalAssignmentQuery,
|
|
47
44
|
)
|
|
48
|
-
from pyVHDLModelTreesitter.
|
|
45
|
+
from pyVHDLModelTreesitter.queries import (
|
|
49
46
|
ConcurrentSimpleSignalAssignment as ConcurrentSimpleSignalAssignmentQuery,
|
|
50
47
|
)
|
|
48
|
+
from pyVHDLModelTreesitter.queries import (
|
|
49
|
+
ProcessStatement as ProcessStatementQuery,
|
|
50
|
+
)
|
|
51
|
+
from pyVHDLModelTreesitter.queries._protocol import (
|
|
52
|
+
inject_node,
|
|
53
|
+
sort_into_text_order,
|
|
54
|
+
)
|
|
55
|
+
from pyVHDLModelTreesitter.queries._utils import (
|
|
56
|
+
get_node,
|
|
57
|
+
get_node_text,
|
|
58
|
+
get_nodes,
|
|
59
|
+
)
|
|
51
60
|
|
|
52
61
|
if TYPE_CHECKING:
|
|
53
62
|
import tree_sitter
|
|
@@ -190,3 +199,41 @@ def parse_entity_instantiation(
|
|
|
190
199
|
),
|
|
191
200
|
node,
|
|
192
201
|
)
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
def parse_process(
|
|
205
|
+
node: tree_sitter.Node,
|
|
206
|
+
) -> ProcessStatement | None:
|
|
207
|
+
"""Create a `ProcessStatement` from a treesitter node."""
|
|
208
|
+
captures = ProcessStatementQuery.capture(node)
|
|
209
|
+
label_node = get_node(node, captures, "label", optional=True)
|
|
210
|
+
label = get_node_text(label_node) if label_node is not None else None
|
|
211
|
+
sensitivity_names = captures.get("sensitivity_name", [])
|
|
212
|
+
sensitivity_list = None
|
|
213
|
+
if sensitivity_names:
|
|
214
|
+
sensitivity_list = [
|
|
215
|
+
parse_name(get_node_text(name_node))
|
|
216
|
+
for name_node in sort_into_text_order(sensitivity_names)
|
|
217
|
+
]
|
|
218
|
+
body_node = get_node(node, captures, "body")
|
|
219
|
+
statements = parse_sequential_block(body_node)
|
|
220
|
+
declared_items = None
|
|
221
|
+
head_node = get_node(node, captures, "head", optional=True)
|
|
222
|
+
if head_node is not None:
|
|
223
|
+
declared_items = [
|
|
224
|
+
v
|
|
225
|
+
for child in head_node.children
|
|
226
|
+
if child.type == "variable_declaration"
|
|
227
|
+
if (v := parse_variable(child)) is not None
|
|
228
|
+
]
|
|
229
|
+
return inject_node(
|
|
230
|
+
ProcessStatement(
|
|
231
|
+
# TODO: label is incorrectly `str` rather than `Nullable[str]`
|
|
232
|
+
label=label,
|
|
233
|
+
declaredItems=declared_items,
|
|
234
|
+
statements=statements,
|
|
235
|
+
sensitivityList=sensitivity_list,
|
|
236
|
+
documentation="",
|
|
237
|
+
),
|
|
238
|
+
node,
|
|
239
|
+
)
|
{pyvhdlmodeltreesitter-0.8.0 → pyvhdlmodeltreesitter-0.9.0}/src/pyVHDLModelTreesitter/_DesignUnit.py
RENAMED
|
@@ -18,7 +18,7 @@ from pyVHDLModel.DesignUnit import (
|
|
|
18
18
|
UseClause,
|
|
19
19
|
)
|
|
20
20
|
from pyVHDLModel.Name import AllName, SimpleName
|
|
21
|
-
from pyVHDLModel.Object import Constant, Signal
|
|
21
|
+
from pyVHDLModel.Object import Constant, DeferredConstant, Signal
|
|
22
22
|
from pyVHDLModel.Symbol import (
|
|
23
23
|
AllPackageMembersReferenceSymbol,
|
|
24
24
|
EntitySymbol,
|
|
@@ -27,16 +27,19 @@ from pyVHDLModel.Symbol import (
|
|
|
27
27
|
PackageReferenceSymbol,
|
|
28
28
|
PackageSymbol,
|
|
29
29
|
)
|
|
30
|
+
from pyVHDLModel.Type import (
|
|
31
|
+
EnumeratedType,
|
|
32
|
+
IntegerType,
|
|
33
|
+
RecordType,
|
|
34
|
+
Subtype,
|
|
35
|
+
)
|
|
30
36
|
|
|
31
37
|
from pyVHDLModelTreesitter._Concurrent import (
|
|
32
38
|
parse_component_instantiation,
|
|
33
39
|
parse_concurrent_conditional_signal_assignment,
|
|
34
40
|
parse_concurrent_simple_signal_assignment,
|
|
35
41
|
parse_entity_instantiation,
|
|
36
|
-
|
|
37
|
-
from pyVHDLModelTreesitter._errors import (
|
|
38
|
-
NodeExtraChildError,
|
|
39
|
-
NotImplementedWarning,
|
|
42
|
+
parse_process,
|
|
40
43
|
)
|
|
41
44
|
from pyVHDLModelTreesitter._Interface import (
|
|
42
45
|
parse_generic_constant_interface_item,
|
|
@@ -44,14 +47,15 @@ from pyVHDLModelTreesitter._Interface import (
|
|
|
44
47
|
)
|
|
45
48
|
from pyVHDLModelTreesitter._Name import parse_name
|
|
46
49
|
from pyVHDLModelTreesitter._Object import parse_constant, parse_signal
|
|
47
|
-
from pyVHDLModelTreesitter.
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
50
|
+
from pyVHDLModelTreesitter._Type import (
|
|
51
|
+
parse_subtype_declaration,
|
|
52
|
+
parse_type_declaration,
|
|
53
|
+
)
|
|
54
|
+
from pyVHDLModelTreesitter.error import (
|
|
55
|
+
NodeExtraChildError,
|
|
56
|
+
NotImplementedWarning,
|
|
53
57
|
)
|
|
54
|
-
from pyVHDLModelTreesitter.
|
|
58
|
+
from pyVHDLModelTreesitter.queries import (
|
|
55
59
|
ArchitectureDefinition,
|
|
56
60
|
EntityDeclaration,
|
|
57
61
|
InterfaceDeclarations,
|
|
@@ -62,9 +66,18 @@ from pyVHDLModelTreesitter.treesitter.query import (
|
|
|
62
66
|
SelectedNames,
|
|
63
67
|
UseClauses,
|
|
64
68
|
)
|
|
65
|
-
from pyVHDLModelTreesitter.
|
|
69
|
+
from pyVHDLModelTreesitter.queries import (
|
|
66
70
|
ComponentDeclaration as ComponentDeclarationQuery,
|
|
67
71
|
)
|
|
72
|
+
from pyVHDLModelTreesitter.queries._protocol import (
|
|
73
|
+
inject_node,
|
|
74
|
+
sort_into_text_order,
|
|
75
|
+
)
|
|
76
|
+
from pyVHDLModelTreesitter.queries._utils import (
|
|
77
|
+
get_node,
|
|
78
|
+
get_node_text,
|
|
79
|
+
get_nodes,
|
|
80
|
+
)
|
|
68
81
|
|
|
69
82
|
if TYPE_CHECKING:
|
|
70
83
|
from collections.abc import Iterable
|
|
@@ -180,10 +193,19 @@ def parse_use_clauses(node: tree_sitter.Node) -> list[UseClause]:
|
|
|
180
193
|
return ret
|
|
181
194
|
|
|
182
195
|
|
|
183
|
-
Declarations =
|
|
196
|
+
Declarations = (
|
|
197
|
+
Component
|
|
198
|
+
| Constant
|
|
199
|
+
| DeferredConstant
|
|
200
|
+
| EnumeratedType
|
|
201
|
+
| IntegerType
|
|
202
|
+
| RecordType
|
|
203
|
+
| Signal
|
|
204
|
+
| Subtype
|
|
205
|
+
)
|
|
184
206
|
|
|
185
207
|
|
|
186
|
-
def parse_declarations(node: tree_sitter.Node) -> list[Declarations]:
|
|
208
|
+
def parse_declarations(node: tree_sitter.Node) -> list[Declarations]: # ruff: ignore[complex-structure, too-many-branches]
|
|
187
209
|
ret: list[Declarations] = []
|
|
188
210
|
for child in node.children:
|
|
189
211
|
if child.type == "constant_declaration":
|
|
@@ -194,6 +216,14 @@ def parse_declarations(node: tree_sitter.Node) -> list[Declarations]:
|
|
|
194
216
|
signal = parse_signal(child)
|
|
195
217
|
if signal is not None:
|
|
196
218
|
ret.append(signal)
|
|
219
|
+
elif child.type == "subtype_declaration":
|
|
220
|
+
subtype = parse_subtype_declaration(child)
|
|
221
|
+
if subtype is not None:
|
|
222
|
+
ret.append(subtype)
|
|
223
|
+
elif child.type == "type_declaration":
|
|
224
|
+
td = parse_type_declaration(child)
|
|
225
|
+
if td is not None:
|
|
226
|
+
ret.append(td)
|
|
197
227
|
elif child.type == "component_declaration":
|
|
198
228
|
component = parse_component(child)
|
|
199
229
|
if component is not None:
|
|
@@ -217,7 +247,7 @@ def _is_component_instantiation(node: tree_sitter.Node) -> bool:
|
|
|
217
247
|
return False
|
|
218
248
|
|
|
219
249
|
|
|
220
|
-
def parse_architecture( # ruff: ignore[complex-structure]
|
|
250
|
+
def parse_architecture( # ruff: ignore[complex-structure, too-many-branches]
|
|
221
251
|
node: tree_sitter.Node,
|
|
222
252
|
*,
|
|
223
253
|
context_items: Iterable[LibraryClause | UseClause] = [],
|
|
@@ -250,6 +280,10 @@ def parse_architecture( # ruff: ignore[complex-structure]
|
|
|
250
280
|
ccsa = parse_concurrent_conditional_signal_assignment(statement_node)
|
|
251
281
|
if ccsa is not None:
|
|
252
282
|
statements.append(ccsa)
|
|
283
|
+
elif statement_node.type == "process_statement":
|
|
284
|
+
ps = parse_process(statement_node)
|
|
285
|
+
if ps is not None:
|
|
286
|
+
statements.append(ps)
|
|
253
287
|
elif statement_node.type == "begin":
|
|
254
288
|
continue
|
|
255
289
|
else:
|
{pyvhdlmodeltreesitter-0.8.0 → pyvhdlmodeltreesitter-0.9.0}/src/pyVHDLModelTreesitter/_Document.py
RENAMED
|
@@ -19,9 +19,10 @@ from pyVHDLModelTreesitter._DesignUnit import (
|
|
|
19
19
|
parse_package_body,
|
|
20
20
|
parse_use_clauses,
|
|
21
21
|
)
|
|
22
|
-
from pyVHDLModelTreesitter.
|
|
23
|
-
from pyVHDLModelTreesitter.
|
|
24
|
-
from pyVHDLModelTreesitter.
|
|
22
|
+
from pyVHDLModelTreesitter.error import NodeMissingChildError, NotImplementedWarning
|
|
23
|
+
from pyVHDLModelTreesitter.queries import DesignUnits
|
|
24
|
+
from pyVHDLModelTreesitter.queries._query import PARSER
|
|
25
|
+
from pyVHDLModelTreesitter.queries._utils import pretty_sexpr
|
|
25
26
|
|
|
26
27
|
|
|
27
28
|
def _design_unit_sort_key(du: DesignUnit) -> tuple[str, str]:
|
{pyvhdlmodeltreesitter-0.8.0 → pyvhdlmodeltreesitter-0.9.0}/src/pyVHDLModelTreesitter/_Interface.py
RENAMED
|
@@ -20,19 +20,19 @@ if TYPE_CHECKING:
|
|
|
20
20
|
from pyVHDLModel.Symbol import SubtypeSymbol
|
|
21
21
|
|
|
22
22
|
from pyVHDLModelTreesitter._Base import parse_mode
|
|
23
|
-
from pyVHDLModelTreesitter.
|
|
23
|
+
from pyVHDLModelTreesitter._parse import parse_simple_expression
|
|
24
|
+
from pyVHDLModelTreesitter._subtype_indication import parse_subtype_indication
|
|
25
|
+
from pyVHDLModelTreesitter.error import (
|
|
24
26
|
NodeExtraChildError,
|
|
25
27
|
NodeMissingChildError,
|
|
26
28
|
NotImplementedWarning,
|
|
27
29
|
)
|
|
28
|
-
from pyVHDLModelTreesitter.
|
|
29
|
-
from pyVHDLModelTreesitter.
|
|
30
|
-
from pyVHDLModelTreesitter.
|
|
30
|
+
from pyVHDLModelTreesitter.queries import InterfaceDeclaration
|
|
31
|
+
from pyVHDLModelTreesitter.queries._protocol import inject_node
|
|
32
|
+
from pyVHDLModelTreesitter.queries._utils import (
|
|
31
33
|
get_node,
|
|
32
34
|
get_node_text,
|
|
33
|
-
inject_node,
|
|
34
35
|
)
|
|
35
|
-
from pyVHDLModelTreesitter.treesitter.query import InterfaceDeclaration
|
|
36
36
|
|
|
37
37
|
if TYPE_CHECKING:
|
|
38
38
|
from tree_sitter import Node
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"""Submodule defining parsers for classes from pyVHDLModel.Object."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
__all__ = [
|
|
6
|
+
"parse_constant",
|
|
7
|
+
"parse_signal",
|
|
8
|
+
"parse_variable",
|
|
9
|
+
]
|
|
10
|
+
|
|
11
|
+
from typing import TYPE_CHECKING, Any, TypeVar
|
|
12
|
+
|
|
13
|
+
from pyVHDLModel.Object import Constant, DeferredConstant, Signal, Variable
|
|
14
|
+
|
|
15
|
+
if TYPE_CHECKING:
|
|
16
|
+
import tree_sitter
|
|
17
|
+
|
|
18
|
+
from pyVHDLModelTreesitter._parse import parse_conditional_expression
|
|
19
|
+
from pyVHDLModelTreesitter._subtype_indication import parse_subtype_indication
|
|
20
|
+
from pyVHDLModelTreesitter.queries import (
|
|
21
|
+
ConstantDeclaration,
|
|
22
|
+
SignalDeclaration,
|
|
23
|
+
VariableDeclaration,
|
|
24
|
+
)
|
|
25
|
+
from pyVHDLModelTreesitter.queries._protocol import inject_node
|
|
26
|
+
from pyVHDLModelTreesitter.queries._utils import (
|
|
27
|
+
get_node,
|
|
28
|
+
get_node_text,
|
|
29
|
+
get_nodes,
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
T = TypeVar("T", Constant, Signal, Variable)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def _parse_object(
|
|
36
|
+
node: tree_sitter.Node,
|
|
37
|
+
cls: type[T],
|
|
38
|
+
) -> T | None:
|
|
39
|
+
"""Parse a constant, signal, or variable declaration."""
|
|
40
|
+
query: type[ConstantDeclaration | SignalDeclaration | VariableDeclaration]
|
|
41
|
+
if cls is Constant:
|
|
42
|
+
query = ConstantDeclaration
|
|
43
|
+
elif cls is Signal:
|
|
44
|
+
query = SignalDeclaration
|
|
45
|
+
else:
|
|
46
|
+
query = VariableDeclaration
|
|
47
|
+
captures = query.capture(node)
|
|
48
|
+
name_nodes = get_nodes(node, captures, "name")
|
|
49
|
+
identifiers = [get_node_text(name_node) for name_node in name_nodes]
|
|
50
|
+
subtype_node = get_node(node, captures, "type")
|
|
51
|
+
subtype = parse_subtype_indication(subtype_node)
|
|
52
|
+
if subtype is None:
|
|
53
|
+
return None
|
|
54
|
+
value_node = get_node(node, captures, "value", optional=True)
|
|
55
|
+
value: Any = None
|
|
56
|
+
if value_node is not None:
|
|
57
|
+
value = parse_conditional_expression(value_node)
|
|
58
|
+
if value is None:
|
|
59
|
+
return None
|
|
60
|
+
return inject_node(
|
|
61
|
+
cls(identifiers, subtype, value, documentation=""),
|
|
62
|
+
node,
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def parse_constant(node: tree_sitter.Node) -> Constant | DeferredConstant | None:
|
|
67
|
+
"""Create a Constant or DeferredConstant from a treesitter node."""
|
|
68
|
+
result = _parse_object(node, Constant)
|
|
69
|
+
if result is None:
|
|
70
|
+
return None
|
|
71
|
+
if result._defaultExpression is None: # ruff: ignore[private-member-access]
|
|
72
|
+
return inject_node(
|
|
73
|
+
DeferredConstant(
|
|
74
|
+
result._identifiers, # ruff: ignore[private-member-access]
|
|
75
|
+
result._subtype, # ruff: ignore[private-member-access]
|
|
76
|
+
documentation="",
|
|
77
|
+
),
|
|
78
|
+
node,
|
|
79
|
+
)
|
|
80
|
+
return result
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def parse_signal(node: tree_sitter.Node) -> Signal | None:
|
|
84
|
+
"""Create a Signal from a treesitter node."""
|
|
85
|
+
return _parse_object(node, Signal)
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
def parse_variable(node: tree_sitter.Node) -> Variable | None:
|
|
89
|
+
"""Create a Variable from a treesitter node."""
|
|
90
|
+
return _parse_object(node, Variable)
|