minecraft-datapack-language 15.4.28__py3-none-any.whl → 15.4.29__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.
- minecraft_datapack_language/__init__.py +17 -2
- minecraft_datapack_language/_version.py +2 -2
- minecraft_datapack_language/ast_nodes.py +87 -59
- minecraft_datapack_language/mdl_compiler.py +470 -0
- minecraft_datapack_language/mdl_errors.py +14 -0
- minecraft_datapack_language/mdl_lexer.py +624 -0
- minecraft_datapack_language/mdl_parser.py +573 -0
- minecraft_datapack_language-15.4.29.dist-info/METADATA +266 -0
- minecraft_datapack_language-15.4.29.dist-info/RECORD +16 -0
- minecraft_datapack_language/cli.py +0 -159
- minecraft_datapack_language/cli_build.py +0 -1292
- minecraft_datapack_language/cli_check.py +0 -155
- minecraft_datapack_language/cli_colors.py +0 -264
- minecraft_datapack_language/cli_help.py +0 -508
- minecraft_datapack_language/cli_new.py +0 -300
- minecraft_datapack_language/cli_utils.py +0 -276
- minecraft_datapack_language/expression_processor.py +0 -352
- minecraft_datapack_language/linter.py +0 -409
- minecraft_datapack_language/mdl_lexer_js.py +0 -754
- minecraft_datapack_language/mdl_parser_js.py +0 -1049
- minecraft_datapack_language/pack.py +0 -758
- minecraft_datapack_language-15.4.28.dist-info/METADATA +0 -1274
- minecraft_datapack_language-15.4.28.dist-info/RECORD +0 -25
- {minecraft_datapack_language-15.4.28.dist-info → minecraft_datapack_language-15.4.29.dist-info}/WHEEL +0 -0
- {minecraft_datapack_language-15.4.28.dist-info → minecraft_datapack_language-15.4.29.dist-info}/entry_points.txt +0 -0
- {minecraft_datapack_language-15.4.28.dist-info → minecraft_datapack_language-15.4.29.dist-info}/licenses/LICENSE +0 -0
- {minecraft_datapack_language-15.4.28.dist-info → minecraft_datapack_language-15.4.29.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,21 @@
|
|
1
1
|
|
2
|
-
from .
|
3
|
-
|
2
|
+
from .mdl_lexer import MDLLexer, Token, TokenType
|
3
|
+
from .mdl_parser import MDLParser
|
4
|
+
from .ast_nodes import *
|
5
|
+
from .dir_map import DirMap
|
6
|
+
|
7
|
+
__all__ = [
|
8
|
+
"MDLLexer", "Token", "TokenType",
|
9
|
+
"MDLParser",
|
10
|
+
"ASTNode", "Program", "PackDeclaration", "NamespaceDeclaration", "TagDeclaration",
|
11
|
+
"VariableDeclaration", "VariableAssignment", "VariableSubstitution", "FunctionDeclaration",
|
12
|
+
"FunctionCall", "IfStatement", "WhileLoop", "HookDeclaration", "RawBlock",
|
13
|
+
"SayCommand", "TellrawCommand", "ExecuteCommand", "ScoreboardCommand",
|
14
|
+
"BinaryExpression", "UnaryExpression", "ParenthesizedExpression", "LiteralExpression",
|
15
|
+
"ScopeSelector",
|
16
|
+
"DirMap"
|
17
|
+
]
|
18
|
+
|
4
19
|
try:
|
5
20
|
from ._version import version as __version__ # written by setuptools-scm
|
6
21
|
except Exception:
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
28
28
|
commit_id: COMMIT_ID
|
29
29
|
__commit_id__: COMMIT_ID
|
30
30
|
|
31
|
-
__version__ = version = '15.4.
|
32
|
-
__version_tuple__ = version_tuple = (15, 4,
|
31
|
+
__version__ = version = '15.4.29'
|
32
|
+
__version_tuple__ = version_tuple = (15, 4, 29)
|
33
33
|
|
34
34
|
__commit_id__ = commit_id = None
|
@@ -1,9 +1,10 @@
|
|
1
1
|
"""
|
2
2
|
AST Node Definitions - Data classes for the MDL Abstract Syntax Tree
|
3
|
+
Updated to match the new language specification
|
3
4
|
"""
|
4
5
|
|
5
6
|
from dataclasses import dataclass
|
6
|
-
from typing import List, Optional, Any
|
7
|
+
from typing import List, Optional, Any, Union
|
7
8
|
|
8
9
|
|
9
10
|
@dataclass
|
@@ -14,6 +15,7 @@ class ASTNode:
|
|
14
15
|
|
15
16
|
@dataclass
|
16
17
|
class PackDeclaration(ASTNode):
|
18
|
+
"""Pack declaration with name, description, and pack format."""
|
17
19
|
name: str
|
18
20
|
description: str
|
19
21
|
pack_format: int
|
@@ -21,131 +23,157 @@ class PackDeclaration(ASTNode):
|
|
21
23
|
|
22
24
|
@dataclass
|
23
25
|
class NamespaceDeclaration(ASTNode):
|
26
|
+
"""Namespace declaration."""
|
24
27
|
name: str
|
25
28
|
|
26
29
|
|
27
30
|
@dataclass
|
28
|
-
class
|
31
|
+
class TagDeclaration(ASTNode):
|
32
|
+
"""Tag declaration for datapack resources."""
|
33
|
+
tag_type: str # recipe, loot_table, advancement, item_modifier, predicate, structure
|
29
34
|
name: str
|
30
|
-
|
35
|
+
file_path: str
|
31
36
|
|
32
37
|
|
33
38
|
@dataclass
|
34
39
|
class VariableDeclaration(ASTNode):
|
40
|
+
"""Variable declaration with explicit scope."""
|
41
|
+
var_type: str # num
|
35
42
|
name: str
|
36
|
-
scope:
|
37
|
-
|
43
|
+
scope: str # <@s>, <@a>, <@e[type=armor_stand]>, etc.
|
44
|
+
initial_value: Any
|
38
45
|
|
39
46
|
|
40
47
|
@dataclass
|
41
48
|
class VariableAssignment(ASTNode):
|
49
|
+
"""Variable assignment with explicit scope."""
|
42
50
|
name: str
|
43
|
-
scope:
|
51
|
+
scope: str # <@s>, <@a>, etc.
|
44
52
|
value: Any
|
45
53
|
|
46
54
|
|
47
55
|
@dataclass
|
48
|
-
class
|
49
|
-
|
50
|
-
|
51
|
-
|
56
|
+
class VariableSubstitution(ASTNode):
|
57
|
+
"""Variable substitution for reading values."""
|
58
|
+
name: str
|
59
|
+
scope: str # <@s>, <@a>, etc.
|
52
60
|
|
53
61
|
|
54
62
|
@dataclass
|
55
|
-
class
|
56
|
-
|
57
|
-
|
58
|
-
|
63
|
+
class FunctionDeclaration(ASTNode):
|
64
|
+
"""Function declaration with optional scope."""
|
65
|
+
namespace: str
|
66
|
+
name: str
|
67
|
+
scope: Optional[str] # Optional scope for the function
|
68
|
+
body: List[ASTNode]
|
59
69
|
|
60
70
|
|
61
71
|
@dataclass
|
62
72
|
class FunctionCall(ASTNode):
|
73
|
+
"""Function execution with exec keyword."""
|
74
|
+
namespace: str
|
63
75
|
name: str
|
76
|
+
scope: Optional[str] # Optional scope for the function call
|
64
77
|
|
65
78
|
|
66
79
|
@dataclass
|
67
|
-
class
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
class RawText(ASTNode):
|
73
|
-
content: str
|
80
|
+
class IfStatement(ASTNode):
|
81
|
+
"""If statement with condition and bodies."""
|
82
|
+
condition: Any # Expression
|
83
|
+
then_body: List[ASTNode]
|
84
|
+
else_body: Optional[List[ASTNode]]
|
74
85
|
|
75
86
|
|
76
87
|
@dataclass
|
77
|
-
class
|
78
|
-
|
88
|
+
class WhileLoop(ASTNode):
|
89
|
+
"""While loop with condition and body."""
|
90
|
+
condition: Any # Expression
|
91
|
+
body: List[ASTNode]
|
79
92
|
|
80
93
|
|
81
94
|
@dataclass
|
82
|
-
class
|
95
|
+
class HookDeclaration(ASTNode):
|
96
|
+
"""Hook declaration (on_load, on_tick)."""
|
97
|
+
hook_type: str # on_load, on_tick
|
98
|
+
namespace: str
|
83
99
|
name: str
|
100
|
+
scope: Optional[str] # Optional scope for the hook
|
84
101
|
|
85
102
|
|
86
103
|
@dataclass
|
87
|
-
class
|
88
|
-
|
89
|
-
|
104
|
+
class RawBlock(ASTNode):
|
105
|
+
"""Raw block of Minecraft commands."""
|
106
|
+
content: str
|
90
107
|
|
91
108
|
|
92
109
|
@dataclass
|
93
|
-
class
|
94
|
-
|
95
|
-
|
110
|
+
class SayCommand(ASTNode):
|
111
|
+
"""Say command that auto-converts to tellraw."""
|
112
|
+
message: str
|
113
|
+
variables: List[VariableSubstitution] # Variables to substitute
|
96
114
|
|
97
115
|
|
98
116
|
@dataclass
|
99
|
-
class
|
100
|
-
|
101
|
-
|
102
|
-
|
117
|
+
class TellrawCommand(ASTNode):
|
118
|
+
"""Tellraw command with JSON structure."""
|
119
|
+
target: str # @s, @a, etc.
|
120
|
+
json_content: str
|
103
121
|
|
104
122
|
|
105
123
|
@dataclass
|
106
|
-
class
|
107
|
-
|
108
|
-
|
124
|
+
class ExecuteCommand(ASTNode):
|
125
|
+
"""Execute command."""
|
126
|
+
command: str
|
109
127
|
|
110
128
|
|
111
129
|
@dataclass
|
112
|
-
class
|
113
|
-
|
114
|
-
|
115
|
-
values: List[str]
|
130
|
+
class ScoreboardCommand(ASTNode):
|
131
|
+
"""Scoreboard command."""
|
132
|
+
command: str
|
116
133
|
|
117
134
|
|
135
|
+
# Expression nodes
|
118
136
|
@dataclass
|
119
|
-
class
|
120
|
-
|
121
|
-
|
137
|
+
class BinaryExpression(ASTNode):
|
138
|
+
"""Binary expression with operator."""
|
139
|
+
left: Any
|
140
|
+
operator: str # +, -, *, /, ==, !=, >, <, >=, <=
|
141
|
+
right: Any
|
122
142
|
|
123
143
|
|
124
144
|
@dataclass
|
125
|
-
class
|
126
|
-
|
127
|
-
|
145
|
+
class UnaryExpression(ASTNode):
|
146
|
+
"""Unary expression."""
|
147
|
+
operator: str
|
148
|
+
operand: Any
|
128
149
|
|
129
150
|
|
130
151
|
@dataclass
|
131
|
-
class
|
132
|
-
|
133
|
-
|
152
|
+
class ParenthesizedExpression(ASTNode):
|
153
|
+
"""Expression in parentheses."""
|
154
|
+
expression: Any
|
134
155
|
|
135
156
|
|
136
157
|
@dataclass
|
137
|
-
class
|
138
|
-
|
139
|
-
|
158
|
+
class LiteralExpression(ASTNode):
|
159
|
+
"""Literal value."""
|
160
|
+
value: Union[str, int, float]
|
161
|
+
type: str # string, number
|
140
162
|
|
141
163
|
|
142
164
|
@dataclass
|
143
|
-
class
|
144
|
-
|
145
|
-
|
165
|
+
class ScopeSelector(ASTNode):
|
166
|
+
"""Scope selector like <@s>, <@a[team=red]>."""
|
167
|
+
selector: str # @s, @a[team=red], etc.
|
146
168
|
|
147
169
|
|
148
170
|
@dataclass
|
149
|
-
class
|
150
|
-
|
151
|
-
|
171
|
+
class Program(ASTNode):
|
172
|
+
"""Complete MDL program."""
|
173
|
+
pack: Optional[PackDeclaration]
|
174
|
+
namespace: Optional[NamespaceDeclaration]
|
175
|
+
tags: List[TagDeclaration]
|
176
|
+
variables: List[VariableDeclaration]
|
177
|
+
functions: List[FunctionDeclaration]
|
178
|
+
hooks: List[HookDeclaration]
|
179
|
+
statements: List[ASTNode] # Top-level statements
|