infinity-data 1.0.0__tar.gz → 1.1.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.
- {infinity_data-1.0.0/src/infinity_data.egg-info → infinity_data-1.1.0}/PKG-INFO +1 -1
- {infinity_data-1.0.0 → infinity_data-1.1.0}/pyproject.toml +1 -1
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data/frontend.py +1 -1
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data/infra/diagnostics.py +1 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data/parser/diagnostics.py +15 -0
- infinity_data-1.1.0/src/infinity_data/parser/parser.py +1172 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data/parser/token_stream.py +43 -6
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data/semantic/builder/builder.py +65 -19
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data/tokenizer/char_stream.py +6 -2
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data/tokenizer/diagnostics.py +28 -1
- infinity_data-1.1.0/src/infinity_data/tokenizer/tokenizer.py +718 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0/src/infinity_data.egg-info}/PKG-INFO +1 -1
- infinity_data-1.0.0/src/infinity_data/parser/parser.py +0 -988
- infinity_data-1.0.0/src/infinity_data/tokenizer/tokenizer.py +0 -531
- {infinity_data-1.0.0 → infinity_data-1.1.0}/LICENSE +0 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0}/README.md +0 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0}/setup.cfg +0 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data/__init__.py +0 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data/emit/__init__.py +0 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data/emit/converter.py +0 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data/infra/__init__.py +0 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data/infra/file.py +0 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data/infra/ll1_stream.py +0 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data/infra/location.py +0 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data/infra/path.py +0 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data/parser/__init__.py +0 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data/parser/models.py +0 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data/pipeline.py +0 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data/sandbox/__init__.py +0 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data/sandbox/config.py +0 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data/sandbox/errors.py +0 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data/sandbox/mediator.py +0 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data/sandbox/schema.py +0 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data/semantic/__init__.py +0 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data/semantic/builder/__init__.py +0 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data/semantic/builder/models.py +0 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data/semantic/constraints.py +0 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data/semantic/diagnostics.py +0 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data/semantic/executor/__init__.py +0 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data/semantic/executor/executor.py +0 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data/semantic/registry/__init__.py +0 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data/semantic/registry/_core.py +0 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data/semantic/registry/dict_constraints.py +0 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data/semantic/registry/general.py +0 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data/semantic/registry/logic.py +0 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data/semantic/registry/types.py +0 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data/semantic/resolver/__init__.py +0 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data/semantic/resolver/imports.py +0 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data/semantic/resolver/models.py +0 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data/semantic/resolver/resolver.py +0 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data/tokenizer/__init__.py +0 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data/tokenizer/finalizer.py +0 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data/tokenizer/models/__init__.py +0 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data/tokenizer/models/raw_tokens.py +0 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data/tokenizer/models/tokens.py +0 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data.egg-info/SOURCES.txt +0 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data.egg-info/dependency_links.txt +0 -0
- {infinity_data-1.0.0 → infinity_data-1.1.0}/src/infinity_data.egg-info/top_level.txt +0 -0
|
@@ -30,7 +30,7 @@ def parse_source(
|
|
|
30
30
|
|
|
31
31
|
raw_tokens = RawTokenizer(file=file, error_collector=collector)
|
|
32
32
|
tokens = FinalTokenizer(raw_tokens, error_collector=collector)
|
|
33
|
-
parser = Parser(tokens,
|
|
33
|
+
parser = Parser(tokens, collector=collector)
|
|
34
34
|
doc = parser.parse()
|
|
35
35
|
|
|
36
36
|
# 词法/语法错误统一为 Diagnostic(纯数据,直接聚合)
|
|
@@ -43,6 +43,11 @@ register_diagnostic_define(
|
|
|
43
43
|
'[{location}] 元素之间缺少分隔符(逗号或换行,空格不构成分隔)',
|
|
44
44
|
en='[{location}] missing separator between elements (comma or newline; space is not a separator)',
|
|
45
45
|
),
|
|
46
|
+
diagnostic_define(
|
|
47
|
+
'parse.import_missing_comma',
|
|
48
|
+
'[{location}] 导入项之间必须用逗号分隔(import 列表不接受换行/空格分隔)',
|
|
49
|
+
en='[{location}] import items must be separated by commas (newlines/spaces are not allowed)',
|
|
50
|
+
),
|
|
46
51
|
diagnostic_define(
|
|
47
52
|
'parse.value_field',
|
|
48
53
|
'[{location}] 值位置出现字段定义 {name}(外层数组/对象未闭合)',
|
|
@@ -58,6 +63,11 @@ register_diagnostic_define(
|
|
|
58
63
|
'[{location}] 模板字段 {field} 必须有类型标注(如 {field}: int)',
|
|
59
64
|
en='[{location}] template field {field} requires a type annotation (e.g. {field}: int)',
|
|
60
65
|
),
|
|
66
|
+
diagnostic_define(
|
|
67
|
+
'parse.empty_type_annotation',
|
|
68
|
+
'[{location}] 字段 {field} 的类型标注为空({field}: 后缺少约束)',
|
|
69
|
+
en='[{location}] field {field} has an empty type annotation (no constraint after {field}:)',
|
|
70
|
+
),
|
|
61
71
|
diagnostic_define(
|
|
62
72
|
'parse.invalid_cast',
|
|
63
73
|
'[{location}] 未知的类型转换 {type}(合法: bool/int/float/str)',
|
|
@@ -84,6 +94,11 @@ register_diagnostic_define(
|
|
|
84
94
|
'[{location}] 模板配置 {key} 必须是字面量(不支持 $ 引用 / 模板调用)',
|
|
85
95
|
en='[{location}] template config {key} must be a literal (no $ refs / template calls)',
|
|
86
96
|
),
|
|
97
|
+
diagnostic_define(
|
|
98
|
+
'parse.nesting_too_deep',
|
|
99
|
+
'[{location}] 嵌套层级超过上限 {limit},深层内容被跳过',
|
|
100
|
+
en='[{location}] nesting depth exceeds limit {limit}; deeper content skipped',
|
|
101
|
+
),
|
|
87
102
|
)
|
|
88
103
|
|
|
89
104
|
|