nadata 0.1.0__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.
- nadata/__init__.py +15 -0
- nadata/api.py +894 -0
- nadata/cli.py +445 -0
- nadata/console.py +486 -0
- nadata/core/__init__.py +0 -0
- nadata/core/database/__init__.py +38 -0
- nadata/core/database/builtins.py +87 -0
- nadata/core/database/database.py +958 -0
- nadata/core/database/dumper.py +285 -0
- nadata/core/database/entity_id.py +142 -0
- nadata/core/database/instance.py +706 -0
- nadata/core/database/network_index.py +1142 -0
- nadata/core/database/page_manager.py +175 -0
- nadata/core/database/persistence/__init__.py +28 -0
- nadata/core/database/persistence/binary_cells.py +1141 -0
- nadata/core/database/persistence/compaction.py +97 -0
- nadata/core/database/persistence/dumper.py +798 -0
- nadata/core/database/persistence/lazy_instances.py +1537 -0
- nadata/core/database/persistence/loader.py +424 -0
- nadata/core/database/persistence/record_store.py +228 -0
- nadata/core/database/persistence/serialization.py +605 -0
- nadata/core/database/query_engine.py +222 -0
- nadata/core/database/queryset.py +508 -0
- nadata/core/database/reconciliation.py +287 -0
- nadata/core/database/slotted_page.py +190 -0
- nadata/core/database/spatial_index.py +1080 -0
- nadata/core/expressions/__init__.py +44 -0
- nadata/core/expressions/autograd.py +2909 -0
- nadata/core/expressions/builtins.py +4673 -0
- nadata/core/expressions/expression.py +2658 -0
- nadata/core/expressions/io_builtins.py +972 -0
- nadata/core/expressions/scope.py +336 -0
- nadata/core/expressions/statement.py +953 -0
- nadata/core/struct/__init__.py +14 -0
- nadata/core/struct/struct.py +218 -0
- nadata/core/struct/struct_attribute.py +100 -0
- nadata/core/struct/struct_method.py +324 -0
- nadata/core/types/__init__.py +33 -0
- nadata/core/types/bits/__init__.py +0 -0
- nadata/core/types/bits/bits.py +686 -0
- nadata/core/types/home_types/__init__.py +19 -0
- nadata/core/types/home_types/color.py +102 -0
- nadata/core/types/home_types/coordinate.py +1008 -0
- nadata/core/types/home_types/datetime.py +362 -0
- nadata/core/types/home_types/geogrid.py +92 -0
- nadata/core/types/home_types/geometry.py +1223 -0
- nadata/core/types/home_types/graph.py +0 -0
- nadata/core/types/home_types/planet.py +359 -0
- nadata/core/types/home_types/sea_level.py +98 -0
- nadata/core/types/home_types/vec.py +0 -0
- nadata/core/types/types.py +1345 -0
- nadata/core/values/__init__.py +14 -0
- nadata/core/values/values.py +1568 -0
- nadata/parser/__init__.py +0 -0
- nadata/parser/expressions/__init__.py +6 -0
- nadata/parser/expressions/dependencies.py +318 -0
- nadata/parser/expressions/expression_parser.py +993 -0
- nadata/parser/expressions/splitter.py +98 -0
- nadata/parser/expressions/statement_parser.py +1425 -0
- nadata/parser/expressions/tokenizer.py +402 -0
- nadata/parser/expressions/type_parser.py +187 -0
- nadata/parser/nadata_loader/__init__.py +8 -0
- nadata/parser/nadata_loader/loader.py +951 -0
- nadata/parser/nastruct_parser/__init__.py +0 -0
- nadata/parser/nastruct_parser/declaration.py +105 -0
- nadata/parser/nastruct_parser/imports.py +164 -0
- nadata/parser/nastruct_parser/nastruct_parser.py +209 -0
- nadata/parser/nastruct_parser/parse_attributes.py +149 -0
- nadata/parser/nastruct_parser/parse_callables.py +436 -0
- nadata/parser/nastruct_parser/parse_expression.py +59 -0
- nadata/parser/nastruct_parser/parse_structs.py +206 -0
- nadata/parser/nastruct_parser/parser_state.py +84 -0
- nadata/parser/nastruct_parser/resolver.py +1412 -0
- nadata/parser/nastruct_parser/struct_body_state.py +50 -0
- nadata/parser/nastruct_parser/tmp_structs.py +156 -0
- nadata/parser/utils/__init__.py +20 -0
- nadata/parser/utils/brackets.py +252 -0
- nadata/parser/utils/comments_remove.py +149 -0
- nadata/parser/utils/identifiers.py +121 -0
- nadata/session.py +868 -0
- nadata-0.1.0.dist-info/METADATA +191 -0
- nadata-0.1.0.dist-info/RECORD +86 -0
- nadata-0.1.0.dist-info/WHEEL +5 -0
- nadata-0.1.0.dist-info/entry_points.txt +2 -0
- nadata-0.1.0.dist-info/licenses/LICENSE +21 -0
- nadata-0.1.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Depth-aware token splitting utilities.
|
|
3
|
+
|
|
4
|
+
Provides helpers to locate or split token streams on separators appearing at
|
|
5
|
+
bracket depth zero, used for declaration parsing and parameter list parsing.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
# Import Modules
|
|
9
|
+
from __future__ import annotations
|
|
10
|
+
|
|
11
|
+
from nadata.parser.expressions.tokenizer import Token, TokenType
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def find_top_level(
|
|
15
|
+
tokens: list[Token],
|
|
16
|
+
value: str
|
|
17
|
+
) -> int:
|
|
18
|
+
"""
|
|
19
|
+
Finds the index of the first token with the given value at bracket depth zero.
|
|
20
|
+
|
|
21
|
+
Args:
|
|
22
|
+
tokens (list[Token]): Token stream to search (terminated by EOF).
|
|
23
|
+
value (str): Token value to search for (e.g. '=' or ':').
|
|
24
|
+
|
|
25
|
+
Returns:
|
|
26
|
+
int: Index of the first matching top-level token, or -1 if none.
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
depth: int = 0
|
|
30
|
+
|
|
31
|
+
# Single left-to-right scan tracking bracket depth
|
|
32
|
+
for index, token in enumerate(tokens):
|
|
33
|
+
|
|
34
|
+
# Stop at the EOF sentinel
|
|
35
|
+
if token.token_type == TokenType.EOF:
|
|
36
|
+
break
|
|
37
|
+
|
|
38
|
+
# Track bracket nesting
|
|
39
|
+
if token.value in "([{":
|
|
40
|
+
depth += 1
|
|
41
|
+
|
|
42
|
+
elif token.value in ")]}":
|
|
43
|
+
depth -= 1
|
|
44
|
+
|
|
45
|
+
# Separator found at depth zero
|
|
46
|
+
elif depth == 0 and token.value == value:
|
|
47
|
+
return index
|
|
48
|
+
|
|
49
|
+
return -1
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def split_top_level(
|
|
53
|
+
tokens: list[Token],
|
|
54
|
+
separator: str
|
|
55
|
+
) -> list[list[Token]]:
|
|
56
|
+
"""
|
|
57
|
+
Splits a token stream on separators appearing at bracket depth zero.
|
|
58
|
+
|
|
59
|
+
Args:
|
|
60
|
+
tokens (list[Token]): Token stream to split (terminated by EOF).
|
|
61
|
+
separator (str): Separator token value (e.g. ',').
|
|
62
|
+
|
|
63
|
+
Returns:
|
|
64
|
+
list[list[Token]]: Token segments between separators, in order. The
|
|
65
|
+
EOF token is excluded; a trailing separator yields a final
|
|
66
|
+
empty segment.
|
|
67
|
+
"""
|
|
68
|
+
|
|
69
|
+
segments: list[list[Token]] = []
|
|
70
|
+
|
|
71
|
+
current: list[Token] = []
|
|
72
|
+
depth: int = 0
|
|
73
|
+
|
|
74
|
+
# Single left-to-right scan tracking bracket depth
|
|
75
|
+
for token in tokens:
|
|
76
|
+
|
|
77
|
+
# Stop at the EOF sentinel
|
|
78
|
+
if token.token_type == TokenType.EOF:
|
|
79
|
+
break
|
|
80
|
+
|
|
81
|
+
# Track bracket nesting
|
|
82
|
+
if token.value in "([{":
|
|
83
|
+
depth += 1
|
|
84
|
+
|
|
85
|
+
elif token.value in ")]}":
|
|
86
|
+
depth -= 1
|
|
87
|
+
|
|
88
|
+
# Separator found at depth zero: close the current segment
|
|
89
|
+
if depth == 0 and token.value == separator:
|
|
90
|
+
segments.append(current)
|
|
91
|
+
current = []
|
|
92
|
+
continue
|
|
93
|
+
|
|
94
|
+
current.append(token)
|
|
95
|
+
|
|
96
|
+
segments.append(current)
|
|
97
|
+
|
|
98
|
+
return segments
|