@bikky/replication 1.0.3 → 1.0.4

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.
Files changed (76) hide show
  1. package/.idea/Replication.iml +12 -0
  2. package/.idea/compiler.xml +6 -0
  3. package/.idea/inspectionProfiles/Project_Default.xml +6 -0
  4. package/.idea/modules.xml +8 -0
  5. package/.idea/vcs.xml +3 -1
  6. package/Expressions/Compiler/Grammar/Accessors.d.ts +32 -0
  7. package/Expressions/Compiler/Grammar/Accessors.js +227 -0
  8. package/Expressions/Compiler/Grammar/Accessors.js.map +1 -0
  9. package/Expressions/Compiler/Grammar/ControlFlow.d.ts +38 -0
  10. package/Expressions/Compiler/Grammar/ControlFlow.js +178 -0
  11. package/Expressions/Compiler/Grammar/ControlFlow.js.map +1 -0
  12. package/Expressions/Compiler/Grammar/Declarations.d.ts +22 -0
  13. package/Expressions/Compiler/Grammar/Declarations.js +84 -0
  14. package/Expressions/Compiler/Grammar/Declarations.js.map +1 -0
  15. package/Expressions/Compiler/Grammar/Function.d.ts +30 -0
  16. package/Expressions/Compiler/Grammar/Function.js +292 -0
  17. package/Expressions/Compiler/Grammar/Function.js.map +1 -0
  18. package/Expressions/Compiler/Grammar/General.d.ts +55 -0
  19. package/Expressions/Compiler/Grammar/General.js +248 -0
  20. package/Expressions/Compiler/Grammar/General.js.map +1 -0
  21. package/Expressions/Compiler/Grammar/Maths.d.ts +26 -0
  22. package/Expressions/Compiler/Grammar/Maths.js +164 -0
  23. package/Expressions/Compiler/Grammar/Maths.js.map +1 -0
  24. package/Expressions/Compiler/Grammar/Misc.d.ts +20 -0
  25. package/Expressions/Compiler/Grammar/Misc.js +50 -0
  26. package/Expressions/Compiler/Grammar/Misc.js.map +1 -0
  27. package/Expressions/Compiler/Grammar/Preprocessors.d.ts +18 -0
  28. package/Expressions/Compiler/Grammar/Preprocessors.js +43 -0
  29. package/Expressions/Compiler/Grammar/Preprocessors.js.map +1 -0
  30. package/Expressions/Compiler/Grammar/Struct.d.ts +21 -0
  31. package/Expressions/Compiler/Grammar/Struct.js +42 -0
  32. package/Expressions/Compiler/Grammar/Struct.js.map +1 -0
  33. package/Expressions/Compiler/Grammar/Tokens.d.ts +7 -0
  34. package/Expressions/Compiler/Grammar/Tokens.js +270 -0
  35. package/Expressions/Compiler/Grammar/Tokens.js.map +1 -0
  36. package/Expressions/Compiler/Grammar/Types.d.ts +35 -0
  37. package/Expressions/Compiler/Grammar/Types.js +230 -0
  38. package/Expressions/Compiler/Grammar/Types.js.map +1 -0
  39. package/Expressions/Compiler/GrammarRegistry.d.ts +20 -0
  40. package/Expressions/Compiler/GrammarRegistry.js +51 -0
  41. package/Expressions/Compiler/GrammarRegistry.js.map +1 -0
  42. package/Expressions/Compiler/Parser/Checks.d.ts +8 -0
  43. package/Expressions/Compiler/Parser/Checks.js +40 -0
  44. package/Expressions/Compiler/Parser/Checks.js.map +1 -0
  45. package/Expressions/Compiler/Parser/Enums.d.ts +73 -0
  46. package/Expressions/Compiler/Parser/Enums.js +77 -0
  47. package/Expressions/Compiler/Parser/Enums.js.map +1 -0
  48. package/Expressions/Compiler/Parser/Interfaces.d.ts +118 -0
  49. package/Expressions/Compiler/Parser/Interfaces.js +112 -0
  50. package/Expressions/Compiler/Parser/Interfaces.js.map +1 -0
  51. package/Expressions/Compiler/Parser/MatchGrammar.d.ts +15 -0
  52. package/Expressions/Compiler/Parser/MatchGrammar.js +128 -0
  53. package/Expressions/Compiler/Parser/MatchGrammar.js.map +1 -0
  54. package/Expressions/Compiler/Parser/MatchRepeatingRule.d.ts +4 -0
  55. package/Expressions/Compiler/Parser/MatchRepeatingRule.js +51 -0
  56. package/Expressions/Compiler/Parser/MatchRepeatingRule.js.map +1 -0
  57. package/Expressions/Compiler/Parser/MatchRule.d.ts +4 -0
  58. package/Expressions/Compiler/Parser/MatchRule.js +57 -0
  59. package/Expressions/Compiler/Parser/MatchRule.js.map +1 -0
  60. package/Expressions/Compiler/Parser/Parser.d.ts +26 -0
  61. package/Expressions/Compiler/Parser/Parser.js +67 -0
  62. package/Expressions/Compiler/Parser/Parser.js.map +1 -0
  63. package/Expressions/Compiler/Parser/Tokenizer.d.ts +12 -0
  64. package/Expressions/Compiler/Parser/Tokenizer.js +138 -0
  65. package/Expressions/Compiler/Parser/Tokenizer.js.map +1 -0
  66. package/Expressions/Compiler/Parser/TypesAndPrint.d.ts +29 -0
  67. package/Expressions/Compiler/Parser/TypesAndPrint.js +15 -0
  68. package/Expressions/Compiler/Parser/TypesAndPrint.js.map +1 -0
  69. package/Expressions/Compiler/Parser/Updates.d.ts +10 -0
  70. package/Expressions/Compiler/Parser/Updates.js +79 -0
  71. package/Expressions/Compiler/Parser/Updates.js.map +1 -0
  72. package/Networking.d.ts +3 -0
  73. package/Networking.js +19 -5
  74. package/Networking.js.map +1 -1
  75. package/package.json +28 -28
  76. package/tsconfig.tsbuildinfo +1 -1
@@ -0,0 +1,42 @@
1
+ import { NodeType, TokenType } from "../Parser/Enums.js";
2
+ import { GrammarRegistry } from "../GrammarRegistry.js";
3
+ import { Versions } from "../../../Constants/Versions.js";
4
+ var ExpressionSyntaxError = GrammarRegistry.ExpressionSyntaxError;
5
+ export function IsStructNode(node) {
6
+ return node.type === NodeType.STRUCT;
7
+ }
8
+ GrammarRegistry.AddRule(Versions.v1_0_0, NodeType.STRUCT, [[
9
+ { type: TokenType.KEYWORD, value: "struct" },
10
+ { type: TokenType.IDENTIFIER, name: "name" },
11
+ { type: TokenType.OPERATOR, value: "{" },
12
+ {
13
+ type: NodeType.PROPERTY_SIGNATURE,
14
+ name: "members",
15
+ repeat: [1, Number.POSITIVE_INFINITY],
16
+ repeatSeparator: { type: TokenType.OPERATOR, value: "," }
17
+ },
18
+ { type: TokenType.OPERATOR, value: "}" }
19
+ ]], {
20
+ runtimeExecute(scope, node, outputType) {
21
+ throw new ExpressionSyntaxError(`Structs are not currently supported`, node);
22
+ },
23
+ compileTimeTraversal(scope, node, outputType) {
24
+ throw new ExpressionSyntaxError(`Structs are not currently supported`, node);
25
+ }
26
+ });
27
+ export function IsPropertySignatureNode(node) {
28
+ return node.type === NodeType.PROPERTY_SIGNATURE;
29
+ }
30
+ GrammarRegistry.AddRule(Versions.v1_0_0, NodeType.PROPERTY_SIGNATURE, [[
31
+ { type: TokenType.IDENTIFIER, name: "identifier" },
32
+ { type: TokenType.OPERATOR, value: ":" },
33
+ { type: [NodeType.TYPE_UNION, NodeType.TYPE_DEFINITION], name: "type" },
34
+ ]], {
35
+ runtimeExecute(scope, node, outputType) {
36
+ throw new ExpressionSyntaxError(`Structs are not currently supported`, node);
37
+ },
38
+ compileTimeTraversal(scope, node, outputType) {
39
+ throw new ExpressionSyntaxError(`Structs are not currently supported`, node);
40
+ }
41
+ });
42
+ //# sourceMappingURL=Struct.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Struct.js","sourceRoot":"","sources":["Struct.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAG1D,IAAO,qBAAqB,GAAG,eAAe,CAAC,qBAAqB,CAAC;AAarE,MAAM,UAAU,YAAY,CAAC,IAAU;IACtC,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,MAAM,CAAC;AACtC,CAAC;AAED,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC1D,EAAE,IAAI,EAAE,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE;QAC5C,EAAE,IAAI,EAAE,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE;QAC5C,EAAE,IAAI,EAAE,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;QACxC;YACC,IAAI,EAAE,QAAQ,CAAC,kBAAkB;YACjC,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,iBAAiB,CAAC;YACrC,eAAe,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;SACzD;QACD,EAAE,IAAI,EAAE,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;KACxC,CAAC,EAAE;IACH,cAAc,CAAC,KAAK,EAAE,IAAgB,EAAE,UAAU;QACjD,MAAM,IAAI,qBAAqB,CAAC,qCAAqC,EAAE,IAAI,CAAC,CAAC;IAC9E,CAAC;IACD,oBAAoB,CAAC,KAAK,EAAE,IAAgB,EAAE,UAAU;QACvD,MAAM,IAAI,qBAAqB,CAAC,qCAAqC,EAAE,IAAI,CAAC,CAAC;IAC9E,CAAC;CACD,CAAC,CAAC;AAYH,MAAM,UAAU,uBAAuB,CAAC,IAAU;IACjD,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,kBAAkB,CAAC;AAClD,CAAC;AAED,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,kBAAkB,EAAE,CAAC;QACtE,EAAE,IAAI,EAAE,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE;QAClD,EAAE,IAAI,EAAE,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;QACxC,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;KACvE,CAAC,EAAE;IACH,cAAc,CAAC,KAAK,EAAE,IAA2B,EAAE,UAAU;QAC5D,MAAM,IAAI,qBAAqB,CAAC,qCAAqC,EAAE,IAAI,CAAC,CAAC;IAC9E,CAAC;IACD,oBAAoB,CAAC,KAAK,EAAE,IAA2B,EAAE,UAAU;QAClE,MAAM,IAAI,qBAAqB,CAAC,qCAAqC,EAAE,IAAI,CAAC,CAAC;IAC9E,CAAC;CACD,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { GrammarInterfaces } from "../Parser/Interfaces.js";
2
+ import TokenCategoryRule = GrammarInterfaces.TokenCategoryRule;
3
+ import Token = GrammarInterfaces.Token;
4
+ export declare const EAST_Tokens: {
5
+ [category: string]: TokenCategoryRule;
6
+ };
7
+ export declare function isToken(object: any): object is Token;
@@ -0,0 +1,270 @@
1
+ import { TokenPrecedence, TokenType } from "../Parser/Enums.js";
2
+ import { GrammarRegistry } from "../GrammarRegistry.js";
3
+ import { ChainNumber, ChainString } from "../../TypeRegistry/Primitive.js";
4
+ import { GrammarInterfaces } from "../Parser/Interfaces.js";
5
+ var ExpressionSyntaxError = GrammarRegistry.ExpressionSyntaxError;
6
+ var isAssignableCompile = GrammarInterfaces.isAssignableCompile;
7
+ var collapseTypeLive = GrammarInterfaces.collapseTypeLive;
8
+ import { ErrorStack } from "../../../Constants/Errors.js";
9
+ // noinspection RegExpUnnecessaryNonCapturingGroup
10
+ export const EAST_Tokens = {
11
+ Builtin_BlockComment: {
12
+ type: TokenType.BLOCK_COMMENT,
13
+ versions: [/\/\*(.|\n|\r)*?\*\//g],
14
+ debug_name: "Block Comment",
15
+ precedence: TokenPrecedence.Block,
16
+ execution: {
17
+ runtimeExecute(scope, currentNode, outputType) {
18
+ return {
19
+ type: null,
20
+ value: null
21
+ };
22
+ },
23
+ compileTimeTraversal(scope, currentNode, outputType) {
24
+ if (outputType !== null) {
25
+ throw new ExpressionSyntaxError("Block comments cannot return values", currentNode);
26
+ }
27
+ return null;
28
+ },
29
+ }
30
+ },
31
+ Builtin_LineComment: {
32
+ type: TokenType.LINE_COMMENT,
33
+ versions: [/\/\/.*/g],
34
+ debug_name: "Line Comment",
35
+ precedence: TokenPrecedence.Line,
36
+ execution: {
37
+ runtimeExecute(scope, currentNode, outputType) {
38
+ return {
39
+ type: null,
40
+ value: null
41
+ };
42
+ },
43
+ compileTimeTraversal(scope, currentNode, outputType) {
44
+ if (outputType !== null) {
45
+ throw new ExpressionSyntaxError("Line comments cannot return values", currentNode);
46
+ }
47
+ return null;
48
+ }
49
+ }
50
+ },
51
+ Buildin_BlockString: {
52
+ type: TokenType.BLOCK_STRING,
53
+ versions: [/`(.|\n|\r)*?`/g],
54
+ debug_name: "Block String",
55
+ precedence: TokenPrecedence.Block,
56
+ execution: {
57
+ runtimeExecute(scope, node, outputType) {
58
+ return {
59
+ type: ChainString,
60
+ value: node.data.slice(1, -1),
61
+ };
62
+ },
63
+ compileTimeTraversal(scope, currentNode, outputType) {
64
+ return {
65
+ type: [ChainString],
66
+ };
67
+ }
68
+ }
69
+ },
70
+ Builtin_LineString: {
71
+ type: TokenType.LINE_STRING,
72
+ versions: [/(?:".*?")|(?:'.*?')/g],
73
+ debug_name: "String",
74
+ precedence: TokenPrecedence.Intricate_Builtins,
75
+ execution: {
76
+ runtimeExecute(scope, node, outputType) {
77
+ return {
78
+ type: ChainString,
79
+ value: node.data.slice(1, -1),
80
+ };
81
+ },
82
+ compileTimeTraversal(scope, currentNode, outputType) {
83
+ return {
84
+ type: [ChainString],
85
+ };
86
+ }
87
+ }
88
+ },
89
+ Builtin_Preprocessor: {
90
+ type: TokenType.PREPROCESSOR,
91
+ versions: [/#.*/gm],
92
+ debug_name: "Preprocessor Directive",
93
+ precedence: TokenPrecedence.Line,
94
+ execution: {
95
+ runtimeExecute(scope, currentNode, outputType) {
96
+ throw new ExpressionSyntaxError("Preprocessor directives are not yet supported", currentNode);
97
+ },
98
+ compileTimeTraversal(scope, currentNode, outputType) {
99
+ throw new ExpressionSyntaxError("Preprocessor directives are not yet supported", currentNode);
100
+ }
101
+ }
102
+ },
103
+ //Precedence 3 so that it is a lower priority than number (because of '.').
104
+ Builtin_Hex: {
105
+ type: TokenType.HEX,
106
+ versions: [/\b0x[0-9abcdef]+\b/g],
107
+ debug_name: "Hex Number",
108
+ precedence: TokenPrecedence.Intricate_Builtins,
109
+ execution: {
110
+ runtimeExecute(scope, currentNode, outputType) {
111
+ return {
112
+ type: ChainNumber,
113
+ value: parseInt(currentNode.data, 16),
114
+ };
115
+ },
116
+ compileTimeTraversal(scope, currentNode, outputType) {
117
+ return {
118
+ type: [ChainNumber],
119
+ };
120
+ }
121
+ }
122
+ },
123
+ //Precedence 2 so that it is a lower priority than float and hex.
124
+ Builtin_Integer: {
125
+ type: TokenType.INTEGER,
126
+ versions: [/\b[0-9]+\b/g],
127
+ debug_name: "Integer",
128
+ precedence: TokenPrecedence.Standard_Builtins,
129
+ execution: {
130
+ runtimeExecute(scope, currentNode, outputType) {
131
+ return {
132
+ type: ChainNumber,
133
+ value: parseInt(currentNode.data),
134
+ };
135
+ },
136
+ compileTimeTraversal(scope, currentNode, outputType) {
137
+ return {
138
+ type: [ChainNumber],
139
+ };
140
+ }
141
+ }
142
+ },
143
+ Builtin_Float: {
144
+ type: TokenType.FLOAT,
145
+ versions: [/\b([0-9]+[.][0-9]+([eE][0-9]+)?)|([0-9]+[fF])\b/g],
146
+ debug_name: "Float",
147
+ precedence: TokenPrecedence.Intricate_Builtins,
148
+ execution: {
149
+ runtimeExecute(scope, currentNode, outputType) {
150
+ return {
151
+ type: ChainNumber,
152
+ value: parseFloat(currentNode.data),
153
+ };
154
+ },
155
+ compileTimeTraversal(scope, currentNode, outputType) {
156
+ return {
157
+ type: [ChainNumber],
158
+ };
159
+ }
160
+ }
161
+ },
162
+ //Lower priority than builtin, keyword and hex.
163
+ Identifier: {
164
+ type: TokenType.IDENTIFIER,
165
+ versions: [/\b[a-zA-Z_][a-zA-Z0-9_]+\b/g],
166
+ debug_name: "Identifier",
167
+ precedence: TokenPrecedence.User_Identifiers,
168
+ execution: {
169
+ runtimeExecute(scope, node, outputType) {
170
+ let data = scope.local[node.data] || scope.global[node.data];
171
+ if (data !== undefined) {
172
+ let type = collapseTypeLive(scope, node, data.value, data.type);
173
+ return {
174
+ type: type,
175
+ value: data.value,
176
+ };
177
+ }
178
+ return {
179
+ type: null,
180
+ value: null
181
+ };
182
+ },
183
+ runtimeExecuteWithValidation(scope, node, outputType) {
184
+ let data = scope.local[node.data] || scope.global[node.data];
185
+ if (!data) {
186
+ throw new Error(`Identifier ${node.data} not found in current scope.`);
187
+ }
188
+ if (outputType) {
189
+ let stack = new ErrorStack({ Version: scope.version, SourceFile: node.file.sourceLocation });
190
+ if (!isAssignableCompile(scope.version, outputType, data.type, node, stack)) {
191
+ throw new ExpressionSyntaxError(`Variable returns types ${data.type} but expected ${outputType}\n` + stack.toString(`GT_IDEN_01`), node);
192
+ }
193
+ }
194
+ if (data !== undefined) {
195
+ let type = collapseTypeLive(scope, node, data.value, data.type);
196
+ return {
197
+ type: type,
198
+ value: data.value,
199
+ };
200
+ }
201
+ return {
202
+ type: null,
203
+ value: null
204
+ };
205
+ },
206
+ compileTimeTraversal(scope, node, outputType) {
207
+ let data = scope.local[node.data] || scope.global[node.data];
208
+ if (!data) {
209
+ throw new Error(`Identifier ${node.data} not found in current scope.`);
210
+ }
211
+ if (outputType) {
212
+ let stack = new ErrorStack({ Version: scope.version, SourceFile: node.file.sourceLocation });
213
+ if (!isAssignableCompile(scope.version, outputType, data.type, node, stack)) {
214
+ throw new ExpressionSyntaxError(`Variable returns types ${data.type} but expected ${outputType}\n` + stack.toString(`GT_IDEN_01`), node);
215
+ }
216
+ }
217
+ return {
218
+ type: data.type,
219
+ };
220
+ },
221
+ }
222
+ },
223
+ //The regex for this might be a bit limited, it should probably be revisited.
224
+ Builtin_Whitespace: {
225
+ type: TokenType.WHITESPACE,
226
+ versions: [/[ \t\r\n]+/g],
227
+ debug_name: "Whitespace",
228
+ precedence: TokenPrecedence.Intricate_Builtins,
229
+ execution: {
230
+ runtimeExecute(scope, node, outputType) {
231
+ throw new ExpressionSyntaxError("Whitespace is not supported", node);
232
+ },
233
+ compileTimeTraversal(scope, node, outputType) {
234
+ throw new ExpressionSyntaxError("Whitespace is not supported", node);
235
+ }
236
+ }
237
+ },
238
+ Operator: {
239
+ versions: [new Set([".", "(", ")", "[]", "[", "]", "{}", ",", "=", ":", "=>", "==", "!=", "<", "<=", ">", ">=", "+", "-", "*", "/", "%", "&&", "||", "&", "|", "^", "~"])],
240
+ type: TokenType.OPERATOR,
241
+ debug_name: "Operator",
242
+ precedence: TokenPrecedence.Operators,
243
+ execution: {
244
+ runtimeExecute(scope, node, outputType) {
245
+ throw new ExpressionSyntaxError("Raw operators are not supported", node);
246
+ },
247
+ compileTimeTraversal(scope, node, outputType) {
248
+ throw new ExpressionSyntaxError("Raw operators are not supported", node);
249
+ }
250
+ }
251
+ },
252
+ Keyword: {
253
+ versions: [new Set(["if", "else", "while", "for", "return", "break", "continue", "switch", "case", "default", "struct", "var", "function"])],
254
+ type: TokenType.KEYWORD,
255
+ debug_name: "Keyword",
256
+ precedence: TokenPrecedence.Standard_Builtins,
257
+ execution: {
258
+ runtimeExecute(scope, node, outputType) {
259
+ throw new ExpressionSyntaxError("Raw keywords are not supported", node);
260
+ },
261
+ compileTimeTraversal(scope, node, outputType) {
262
+ throw new ExpressionSyntaxError("Raw keywords are not supported", node);
263
+ }
264
+ }
265
+ }
266
+ };
267
+ export function isToken(object) {
268
+ return "type" in object && typeof TokenType[object.type] !== "undefined";
269
+ }
270
+ //# sourceMappingURL=Tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tokens.js","sourceRoot":"","sources":["Tokens.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import { GrammarInterfaces } from "../Parser/Interfaces.js";
2
+ import { NodeType } from "../Parser/Enums.js";
3
+ import { ArrayAccessSequenceNode } from "./Accessors.js";
4
+ import { FunctionCallNode } from "./Function.js";
5
+ import { ParenthetisedExpressionNode } from "./General.js";
6
+ import { LiteralNode } from "./Misc.js";
7
+ import EAST_Token = GrammarInterfaces.EAST_Token;
8
+ import Node = GrammarInterfaces.Node;
9
+ import EAST_Complex_Node = GrammarInterfaces.EAST_Complex_Node;
10
+ export interface TypeDefinitionNode extends GrammarInterfaces.EAST_Complex_Node {
11
+ type: NodeType.TYPE_DEFINITION;
12
+ values: {
13
+ type: EAST_Token;
14
+ array?: EAST_Token[];
15
+ dictKey?: EAST_Token;
16
+ mapKey?: EAST_Token;
17
+ };
18
+ }
19
+ export declare function IsDeclarationTypeNode(node: Node): node is TypeDefinitionNode;
20
+ export interface TypeUnionNode extends EAST_Complex_Node {
21
+ type: NodeType.TYPE_UNION;
22
+ values: {
23
+ lhs: TypeDefinitionNode;
24
+ rhs: TypeDefinitionNode;
25
+ };
26
+ }
27
+ export declare function IsTypeIntersectionNode(node: Node): node is TypeUnionNode;
28
+ export interface CastNode extends EAST_Complex_Node {
29
+ type: NodeType.CAST;
30
+ values: {
31
+ expression: ArrayAccessSequenceNode | FunctionCallNode | ParenthetisedExpressionNode | EAST_Token | LiteralNode;
32
+ castType: TypeDefinitionNode | TypeUnionNode;
33
+ };
34
+ }
35
+ export declare function IsCastNode(node: Node): node is CastNode;
@@ -0,0 +1,230 @@
1
+ import { GrammarInterfaces } from "../Parser/Interfaces.js";
2
+ import { CollectionType, NodeType, TokenType } from "../Parser/Enums.js";
3
+ import { GrammarRegistry } from "../GrammarRegistry.js";
4
+ import { Versions } from "../../../Constants/Versions.js";
5
+ import { ValidExpressionTypes } from "../../TypeRegistry/Registry.js";
6
+ var GetTypeChain = ValidExpressionTypes.GetTypeChain;
7
+ var ExpressionSyntaxError = GrammarRegistry.ExpressionSyntaxError;
8
+ var assertIsAssignable = GrammarInterfaces.isAssignableCompile;
9
+ var isAssignableCompile = GrammarInterfaces.isAssignableCompile;
10
+ import { ErrorStack } from "../../../Constants/Errors.js";
11
+ var collapseTypeLive = GrammarInterfaces.collapseTypeLive;
12
+ export function IsDeclarationTypeNode(node) {
13
+ return node.type === NodeType.TYPE_DEFINITION;
14
+ }
15
+ //TODO: Support intersection compile-time values.
16
+ GrammarRegistry.AddRule(Versions.v1_0_0, NodeType.TYPE_DEFINITION, [
17
+ [
18
+ { type: TokenType.IDENTIFIER, value: "Map" },
19
+ { type: TokenType.OPERATOR, value: "<" },
20
+ { type: TokenType.IDENTIFIER, name: "mapKey" },
21
+ { type: TokenType.OPERATOR, value: "," },
22
+ { type: TokenType.IDENTIFIER, name: "type" },
23
+ { type: TokenType.OPERATOR, value: ">" },
24
+ ],
25
+ [
26
+ { type: TokenType.IDENTIFIER, name: "type" },
27
+ { type: TokenType.OPERATOR, value: "[]", repeat: [0, 2], name: "array" },
28
+ ],
29
+ [
30
+ { type: TokenType.OPERATOR, value: "{" },
31
+ { type: TokenType.OPERATOR, value: "[" },
32
+ { type: TokenType.IDENTIFIER, name: "dictKey" },
33
+ { type: TokenType.OPERATOR, value: "]" },
34
+ { type: TokenType.OPERATOR, value: ":" },
35
+ { type: TokenType.IDENTIFIER, name: "type" },
36
+ { type: TokenType.OPERATOR, value: "}" },
37
+ ],
38
+ ], {
39
+ runtimeExecute(scope, currentNode, outputType) {
40
+ var style = CollectionType.Single;
41
+ if (currentNode.values.array) {
42
+ style = currentNode.values.array.length == 2 ? CollectionType.Array2 : CollectionType.Array;
43
+ }
44
+ if (currentNode.values.dictKey) {
45
+ style = CollectionType.Dict;
46
+ }
47
+ if (currentNode.values.mapKey) {
48
+ style = CollectionType.Map;
49
+ }
50
+ const type = GetTypeChain(currentNode.values.type.data, style);
51
+ if (!type) {
52
+ throw new ExpressionSyntaxError(`Unknown type '${currentNode.values.type.data}'`, currentNode);
53
+ }
54
+ return {
55
+ castType: [type],
56
+ type: null,
57
+ value: null,
58
+ };
59
+ },
60
+ compileTimeTraversal(scope, currentNode, outputType) {
61
+ var style = CollectionType.Single;
62
+ if (currentNode.values.array) {
63
+ style = currentNode.values.array.length == 2 ? CollectionType.Array2 : CollectionType.Array;
64
+ }
65
+ if (currentNode.values.dictKey) {
66
+ style = CollectionType.Dict;
67
+ }
68
+ if (currentNode.values.mapKey) {
69
+ style = CollectionType.Map;
70
+ }
71
+ const type = GetTypeChain(currentNode.values.type.data, style);
72
+ if (!type) {
73
+ throw new ExpressionSyntaxError(`Unknown type '${currentNode.values.type.data}'`, currentNode);
74
+ }
75
+ let stack = new ErrorStack({ Version: scope.version, SourceFile: currentNode.file.sourceLocation });
76
+ if (outputType && !assertIsAssignable(scope.version, outputType, [type], currentNode, stack)) {
77
+ throw new ExpressionSyntaxError(`Type '${currentNode.values.type.data}' does not match expected type.\n\n` + stack.toString(`GT_CAST_TD_01`), currentNode);
78
+ }
79
+ return {
80
+ castType: [type],
81
+ type: null
82
+ };
83
+ }
84
+ });
85
+ export function IsTypeIntersectionNode(node) {
86
+ return node.type === NodeType.TYPE_UNION;
87
+ }
88
+ GrammarRegistry.AddRule(Versions.v1_0_0, NodeType.TYPE_UNION, [
89
+ [{ type: NodeType.TYPE_DEFINITION, name: "lhs" }],
90
+ [{ type: TokenType.OPERATOR, value: "|" }],
91
+ [{ type: [NodeType.TYPE_UNION, NodeType.TYPE_DEFINITION], name: "rhs" }],
92
+ ], {
93
+ runtimeExecute(scope, currentNode, outputType) {
94
+ const lhs = currentNode.values.lhs.execute.runtimeExecute(scope, currentNode.values.lhs, outputType);
95
+ const rhs = currentNode.values.rhs.execute.runtimeExecute(scope, currentNode.values.rhs, outputType);
96
+ if (!lhs.castType || !rhs.castType) {
97
+ throw new ExpressionSyntaxError(`Cannot intersect types`, currentNode);
98
+ }
99
+ let castType = [...lhs.castType, ...rhs.castType];
100
+ let stack = new ErrorStack({ Version: scope.version, SourceFile: currentNode.file.sourceLocation });
101
+ if (outputType && assertIsAssignable(scope.version, outputType, castType, currentNode, stack)) {
102
+ throw new ExpressionSyntaxError(`Type does not match expected type.\n\n` + stack.toString(`GT_CAST_UN_01`), currentNode);
103
+ }
104
+ return {
105
+ castType,
106
+ type: null,
107
+ value: null,
108
+ };
109
+ },
110
+ compileTimeTraversal(scope, currentNode, outputType) {
111
+ const lhs = currentNode.values.lhs.execute.compileTimeTraversal(scope, currentNode.values.lhs, outputType);
112
+ const rhs = currentNode.values.rhs.execute.compileTimeTraversal(scope, currentNode.values.rhs, outputType);
113
+ if (!lhs?.castType || !rhs?.castType) {
114
+ throw new ExpressionSyntaxError(`Cannot intersect types`, currentNode);
115
+ }
116
+ let castType = [...lhs.castType, ...rhs.castType];
117
+ let stack = new ErrorStack({ Version: scope.version, SourceFile: currentNode.file.sourceLocation });
118
+ if (outputType && assertIsAssignable(scope.version, outputType, castType, currentNode, stack)) {
119
+ throw new ExpressionSyntaxError(`Type does not match expected type.\n\n` + stack.toString(`GT_CAST_UN_02`), currentNode);
120
+ }
121
+ return {
122
+ castType,
123
+ type: null
124
+ };
125
+ }
126
+ });
127
+ export function IsCastNode(node) {
128
+ return node.type === NodeType.CAST;
129
+ }
130
+ GrammarRegistry.AddRule(Versions.v1_0_0, NodeType.CAST, [[
131
+ {
132
+ type: [
133
+ NodeType.ARRAY_ACCESS_SEQUENCE,
134
+ NodeType.FUNCTION_CALL,
135
+ NodeType.PARENTHETISED_EXPRESSION,
136
+ TokenType.BUILTIN,
137
+ NodeType.LITERAL,
138
+ TokenType.IDENTIFIER,
139
+ ],
140
+ name: "expression"
141
+ },
142
+ { type: TokenType.OPERATOR, value: ":" },
143
+ { type: [NodeType.TYPE_DEFINITION, NodeType.TYPE_UNION], name: "castType" }
144
+ ]], {
145
+ runtimeExecute(scope, node, outputType) {
146
+ const castTypes = node.values.castType.execute.runtimeExecute(scope, node, null);
147
+ if (!castTypes.castType) {
148
+ throw new ExpressionSyntaxError(`Cannot cast to invalid cast sequence`, node);
149
+ }
150
+ let stack = new ErrorStack({ Version: scope.version, SourceFile: node.file.sourceLocation });
151
+ if (outputType && !isAssignableCompile(scope.version, outputType, castTypes.castType, node, stack)) {
152
+ throw new ExpressionSyntaxError(`Type does not match expected type.\n\n` + stack.toString(`GT_CAST_CAST_01`), node);
153
+ }
154
+ let value = node.values.expression.execute.runtimeExecute(scope, node.values.expression, castTypes.castType);
155
+ let finalType = collapseTypeLive(scope, node, value.value, castTypes.castType);
156
+ if (!finalType) {
157
+ throw new ExpressionSyntaxError(`Value is not castable to type.`, node);
158
+ }
159
+ return {
160
+ type: finalType,
161
+ value: value.value
162
+ };
163
+ },
164
+ compileTimeTraversal(scope, node, outputType) {
165
+ const castTypes = node.values.castType.execute.compileTimeTraversal(scope, node, null);
166
+ if (!castTypes?.castType) {
167
+ throw new ExpressionSyntaxError(`Cannot cast to invalid cast sequence`, node);
168
+ }
169
+ let stack = new ErrorStack({ Version: scope.version, SourceFile: node.file.sourceLocation });
170
+ if (outputType && !isAssignableCompile(scope.version, outputType, castTypes.castType, node, stack)) {
171
+ throw new ExpressionSyntaxError(`Type does not match expected type.\n\n` + stack.toString(`GT_CAST_CAST_02`), node);
172
+ }
173
+ let value = node.values.expression.execute.compileTimeTraversal(scope, node.values.expression, castTypes.castType);
174
+ if (!value?.type) {
175
+ throw new ExpressionSyntaxError(`Cannot cast expression that returns void to a value.`, node);
176
+ }
177
+ let valid = false;
178
+ for (let type of value.type) {
179
+ if (isAssignableCompile(scope.version, castTypes.castType, [type], node, stack)) {
180
+ valid = true;
181
+ break;
182
+ }
183
+ }
184
+ if (!valid) {
185
+ throw new ExpressionSyntaxError(`Cannot cast value to type, there is no overlap between the operands.`, node);
186
+ }
187
+ return {
188
+ type: castTypes.castType,
189
+ };
190
+ }
191
+ });
192
+ //-------------------------------------------------FORCE CAST-----------------------------------------------
193
+ //Disabled for now - might be supplanted but the newly fixed cast operator above.
194
+ // export interface ForceCastNode extends EAST_Complex_Node {
195
+ // type: NodeType.FORCE_CAST;
196
+ // values: {
197
+ // expression:
198
+ // | ArrayAccessSequenceNode
199
+ // | FunctionCallNode
200
+ // | ParenthetisedExpressionNode
201
+ // | EAST_Token
202
+ // | LiteralNode
203
+ // | MemberAccessNode;
204
+ // castType: EAST_Token;
205
+ // };
206
+ // }
207
+ //
208
+ // export function IsForceCastNode(node: Node): node is ForceCastNode {
209
+ // return node.type === NodeType.FORCE_CAST;
210
+ // }
211
+ //
212
+ // GrammarRegistry.AddRule(Versions.v1_0_0, NodeType.FORCE_CAST, [
213
+ // {
214
+ // type: [
215
+ // NodeType.ARRAY_ACCESS_SEQUENCE,
216
+ // NodeType.FUNCTION_CALL,
217
+ // NodeType.PARENTHETISED_EXPRESSION,
218
+ // TokenType.BUILTIN,
219
+ // NodeType.LITERAL,
220
+ // TokenType.IDENTIFIER
221
+ // ],
222
+ // name: "expression"
223
+ // },
224
+ // { type: TokenType.OPERATOR, value: ":" },
225
+ // { type: TokenType.OPERATOR, value: "=" },
226
+ // { type: [ TokenType.IDENTIFIER ],
227
+ // name: "castType"
228
+ // }
229
+ // ]);
230
+ //# sourceMappingURL=Types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Types.js","sourceRoot":"","sources":["Types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { NodeNames, NodeType } from "./Parser/Enums.js";
2
+ import { GrammarInterfaces } from "./Parser/Interfaces.js";
3
+ import { ExpressionNode } from "./Grammar/General.js";
4
+ export declare namespace GrammarRegistry {
5
+ import ExpressionSource = GrammarInterfaces.ExpressionSource;
6
+ import EAST_Token = GrammarInterfaces.EAST_Token;
7
+ import Node = GrammarInterfaces.Node;
8
+ import Rule = GrammarInterfaces.Rule;
9
+ import NodeExecution = GrammarInterfaces.NodeExecution;
10
+ import EAST_Complex_Node = GrammarInterfaces.EAST_Complex_Node;
11
+ function AddRule<NodeTokenType extends EAST_Complex_Node>(version: string, name: (typeof NodeType)[NodeNames], rules: Rule[][], execute: NodeExecution<NodeTokenType>): void;
12
+ function getRule(versionIdx: number, name: (typeof NodeType)[NodeNames]): GrammarInterfaces.NodeDefinition;
13
+ function MarkIncidentLocation(source: ExpressionSource, location: number): string;
14
+ class ExpressionSyntaxError extends Error {
15
+ source: ExpressionSource;
16
+ location: number;
17
+ constructor(msg: string, source: ExpressionSource, location: number);
18
+ constructor(msg: string, node: EAST_Token | ExpressionNode | Node);
19
+ }
20
+ }