@bikky/replication 1.0.2 → 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.
- package/.idea/Replication.iml +12 -0
- package/.idea/compiler.xml +6 -0
- package/.idea/encodings.xml +4 -0
- package/.idea/inspectionProfiles/Project_Default.xml +6 -0
- package/.idea/modules.xml +8 -0
- package/.idea/vcs.xml +6 -0
- package/Constants/Errors.js +1 -0
- package/Constants/Errors.js.map +1 -0
- package/Constants/Logging.d.ts +1 -0
- package/Constants/Logging.js +2 -2
- package/Constants/Logging.js.map +1 -0
- package/Constants/ReplicableRegistry.d.ts +4 -3
- package/Constants/ReplicableRegistry.js +7 -8
- package/Constants/ReplicableRegistry.js.map +1 -0
- package/Constants/SerialisationTypes.js +4 -4
- package/Constants/SerialisationTypes.js.map +1 -0
- package/Constants/SourceMaps.js +1 -0
- package/Constants/SourceMaps.js.map +1 -0
- package/Constants/TraversalStep.js +1 -0
- package/Constants/TraversalStep.js.map +1 -0
- package/Constants/Versions.d.ts +2 -1
- package/Constants/Versions.js +1 -0
- package/Constants/Versions.js.map +1 -0
- package/Expressions/Compiler/BuiltinGrammar.js +1 -0
- package/Expressions/Compiler/BuiltinGrammar.js.map +1 -0
- package/Expressions/Compiler/ExpressionGrammar.js +1 -0
- package/Expressions/Compiler/ExpressionGrammar.js.map +1 -0
- package/Expressions/Compiler/Grammar/Accessors.d.ts +32 -0
- package/Expressions/Compiler/Grammar/Accessors.js +227 -0
- package/Expressions/Compiler/Grammar/Accessors.js.map +1 -0
- package/Expressions/Compiler/Grammar/ControlFlow.d.ts +38 -0
- package/Expressions/Compiler/Grammar/ControlFlow.js +178 -0
- package/Expressions/Compiler/Grammar/ControlFlow.js.map +1 -0
- package/Expressions/Compiler/Grammar/Declarations.d.ts +22 -0
- package/Expressions/Compiler/Grammar/Declarations.js +84 -0
- package/Expressions/Compiler/Grammar/Declarations.js.map +1 -0
- package/Expressions/Compiler/Grammar/Function.d.ts +30 -0
- package/Expressions/Compiler/Grammar/Function.js +292 -0
- package/Expressions/Compiler/Grammar/Function.js.map +1 -0
- package/Expressions/Compiler/Grammar/General.d.ts +55 -0
- package/Expressions/Compiler/Grammar/General.js +248 -0
- package/Expressions/Compiler/Grammar/General.js.map +1 -0
- package/Expressions/Compiler/Grammar/Maths.d.ts +26 -0
- package/Expressions/Compiler/Grammar/Maths.js +164 -0
- package/Expressions/Compiler/Grammar/Maths.js.map +1 -0
- package/Expressions/Compiler/Grammar/Misc.d.ts +20 -0
- package/Expressions/Compiler/Grammar/Misc.js +50 -0
- package/Expressions/Compiler/Grammar/Misc.js.map +1 -0
- package/Expressions/Compiler/Grammar/Preprocessors.d.ts +18 -0
- package/Expressions/Compiler/Grammar/Preprocessors.js +43 -0
- package/Expressions/Compiler/Grammar/Preprocessors.js.map +1 -0
- package/Expressions/Compiler/Grammar/Struct.d.ts +21 -0
- package/Expressions/Compiler/Grammar/Struct.js +42 -0
- package/Expressions/Compiler/Grammar/Struct.js.map +1 -0
- package/Expressions/Compiler/Grammar/Tokens.d.ts +7 -0
- package/Expressions/Compiler/Grammar/Tokens.js +270 -0
- package/Expressions/Compiler/Grammar/Tokens.js.map +1 -0
- package/Expressions/Compiler/Grammar/Types.d.ts +35 -0
- package/Expressions/Compiler/Grammar/Types.js +230 -0
- package/Expressions/Compiler/Grammar/Types.js.map +1 -0
- package/Expressions/Compiler/GrammarRegistry.d.ts +20 -0
- package/Expressions/Compiler/GrammarRegistry.js +51 -0
- package/Expressions/Compiler/GrammarRegistry.js.map +1 -0
- package/Expressions/Compiler/Parser/Checks.d.ts +8 -0
- package/Expressions/Compiler/Parser/Checks.js +40 -0
- package/Expressions/Compiler/Parser/Checks.js.map +1 -0
- package/Expressions/Compiler/Parser/Enums.d.ts +73 -0
- package/Expressions/Compiler/Parser/Enums.js +77 -0
- package/Expressions/Compiler/Parser/Enums.js.map +1 -0
- package/Expressions/Compiler/Parser/Interfaces.d.ts +118 -0
- package/Expressions/Compiler/Parser/Interfaces.js +112 -0
- package/Expressions/Compiler/Parser/Interfaces.js.map +1 -0
- package/Expressions/Compiler/Parser/MatchGrammar.d.ts +15 -0
- package/Expressions/Compiler/Parser/MatchGrammar.js +128 -0
- package/Expressions/Compiler/Parser/MatchGrammar.js.map +1 -0
- package/Expressions/Compiler/Parser/MatchRepeatingRule.d.ts +4 -0
- package/Expressions/Compiler/Parser/MatchRepeatingRule.js +51 -0
- package/Expressions/Compiler/Parser/MatchRepeatingRule.js.map +1 -0
- package/Expressions/Compiler/Parser/MatchRule.d.ts +4 -0
- package/Expressions/Compiler/Parser/MatchRule.js +57 -0
- package/Expressions/Compiler/Parser/MatchRule.js.map +1 -0
- package/Expressions/Compiler/Parser/Parser.d.ts +26 -0
- package/Expressions/Compiler/Parser/Parser.js +67 -0
- package/Expressions/Compiler/Parser/Parser.js.map +1 -0
- package/Expressions/Compiler/Parser/Tokenizer.d.ts +12 -0
- package/Expressions/Compiler/Parser/Tokenizer.js +138 -0
- package/Expressions/Compiler/Parser/Tokenizer.js.map +1 -0
- package/Expressions/Compiler/Parser/TypesAndPrint.d.ts +29 -0
- package/Expressions/Compiler/Parser/TypesAndPrint.js +15 -0
- package/Expressions/Compiler/Parser/TypesAndPrint.js.map +1 -0
- package/Expressions/Compiler/Parser/Updates.d.ts +10 -0
- package/Expressions/Compiler/Parser/Updates.js +79 -0
- package/Expressions/Compiler/Parser/Updates.js.map +1 -0
- package/Expressions/Compiler/Parser.js +27 -18
- package/Expressions/Compiler/Parser.js.map +1 -0
- package/Expressions/Compiler/Tokenizer.js +1 -0
- package/Expressions/Compiler/Tokenizer.js.map +1 -0
- package/Expressions/Compiler/__tests__/Replicable.Expressions.Parser.test.js +1 -0
- package/Expressions/Compiler/__tests__/Replicable.Expressions.Parser.test.js.map +1 -0
- package/Expressions/Compiler/__tests__/Replicable.Expressions.Tokenizer.test.js +1 -0
- package/Expressions/Compiler/__tests__/Replicable.Expressions.Tokenizer.test.js.map +1 -0
- package/Expressions/CreateEvaluator.js +1 -0
- package/Expressions/CreateEvaluator.js.map +1 -0
- package/Expressions/EvaluatorChain.js +6 -1
- package/Expressions/EvaluatorChain.js.map +1 -0
- package/Expressions/EvaluatorSteps.js +1 -0
- package/Expressions/EvaluatorSteps.js.map +1 -0
- package/Expressions/EvaluatorString.js +1 -0
- package/Expressions/EvaluatorString.js.map +1 -0
- package/Expressions/Expression.js +10 -3
- package/Expressions/Expression.js.map +1 -0
- package/Expressions/Traverser.js +2 -2
- package/Expressions/Traverser.js.map +1 -0
- package/Expressions/TypeRegistry/Accessors.js +1 -0
- package/Expressions/TypeRegistry/Accessors.js.map +1 -0
- package/Expressions/TypeRegistry/ChainCollections.js +1 -0
- package/Expressions/TypeRegistry/ChainCollections.js.map +1 -0
- package/Expressions/TypeRegistry/ChainTypes.js +1 -0
- package/Expressions/TypeRegistry/ChainTypes.js.map +1 -0
- package/Expressions/TypeRegistry/CustomAPI.d.ts +6 -4
- package/Expressions/TypeRegistry/CustomAPI.js +16 -34
- package/Expressions/TypeRegistry/CustomAPI.js.map +1 -0
- package/Expressions/TypeRegistry/Primitive.js +1 -0
- package/Expressions/TypeRegistry/Primitive.js.map +1 -0
- package/Expressions/TypeRegistry/Registry.js +6 -6
- package/Expressions/TypeRegistry/Registry.js.map +1 -0
- package/Expressions/TypeRegistry/ReplAPI.d.ts +7 -5
- package/Expressions/TypeRegistry/ReplAPI.js +9 -22
- package/Expressions/TypeRegistry/ReplAPI.js.map +1 -0
- package/Expressions/TypeRegistry/Scope.js +1 -0
- package/Expressions/TypeRegistry/Scope.js.map +1 -0
- package/Expressions/TypeRegistry/Types.js +1 -0
- package/Expressions/TypeRegistry/Types.js.map +1 -0
- package/Expressions/TypeRegistry/__tests__/Replicable.Expressions.Accessors.test.js +1 -0
- package/Expressions/TypeRegistry/__tests__/Replicable.Expressions.Accessors.test.js.map +1 -0
- package/Expressions/__tests__/ExpressionExamples.js +1 -0
- package/Expressions/__tests__/ExpressionExamples.js.map +1 -0
- package/Expressions/__tests__/Replicable.Expressions.Expressions.test.js +4 -3
- package/Expressions/__tests__/Replicable.Expressions.Expressions.test.js.map +1 -0
- package/IDPool.data.d.ts +2 -0
- package/IDPool.js +1 -0
- package/IDPool.js.map +1 -0
- package/Main.js +1 -0
- package/Main.js.map +1 -0
- package/Networking.d.ts +3 -0
- package/Networking.js +22 -9
- package/Networking.js.map +1 -0
- package/Replicatable.js +5 -6
- package/Replicatable.js.map +1 -0
- package/Tracking/Buffable.d.ts +3 -2
- package/Tracking/Buffable.js +1 -0
- package/Tracking/Buffable.js.map +1 -0
- package/Tracking/Class.d.ts +6 -4
- package/Tracking/Class.js +37 -19
- package/Tracking/Class.js.map +1 -0
- package/Tracking/Functions.js +3 -2
- package/Tracking/Functions.js.map +1 -0
- package/Tracking/GlobalGroup.js +2 -2
- package/Tracking/GlobalGroup.js.map +1 -0
- package/Tracking/Property.d.ts +3 -2
- package/Tracking/Property.js +9 -5
- package/Tracking/Property.js.map +1 -0
- package/Tracking/Types.js +1 -0
- package/Tracking/Types.js.map +1 -0
- package/Tracking/__tests__/Replicable.Tracking.Decorator.test.js +1 -0
- package/Tracking/__tests__/Replicable.Tracking.Decorator.test.js.map +1 -0
- package/Tracking/__tests__/Replicable.Tracking.Deserialisation.test.js +1 -0
- package/Tracking/__tests__/Replicable.Tracking.Deserialisation.test.js.map +1 -0
- package/Tracking/__tests__/Replicable.Tracking.MixinSchemaGeneration.test.js +1 -0
- package/Tracking/__tests__/Replicable.Tracking.MixinSchemaGeneration.test.js.map +1 -0
- package/Tracking/__tests__/Replicable.Tracking.Struct.test.js +1 -0
- package/Tracking/__tests__/Replicable.Tracking.Struct.test.js.map +1 -0
- package/Tracking/__tests__/Replicable.Tracking.Type.test.js +1 -0
- package/Tracking/__tests__/Replicable.Tracking.Type.test.js.map +1 -0
- package/Transformers/Configurer.d.ts +15 -1
- package/Transformers/Configurer.js +130 -21
- package/Transformers/Configurer.js.map +1 -0
- package/Transformers/Constructor.js +1 -0
- package/Transformers/Constructor.js.map +1 -0
- package/Transformers/Definitions.d.ts +3 -3
- package/Transformers/Definitions.js +41 -21
- package/Transformers/Definitions.js.map +1 -0
- package/Transformers/Loader.js +21 -11
- package/Transformers/Loader.js.map +1 -0
- package/Transformers/Progress.js +19 -13
- package/Transformers/Progress.js.map +1 -0
- package/Transformers/Reference.js +3 -2
- package/Transformers/Reference.js.map +1 -0
- package/Transformers/SchemaGenerator.d.ts +2 -2
- package/Transformers/SchemaGenerator.js +89 -7
- package/Transformers/SchemaGenerator.js.map +1 -0
- package/Transformers/Serialiser.js +1 -0
- package/Transformers/Serialiser.js.map +1 -0
- package/Transformers/Utils.d.ts +1 -1
- package/Transformers/Utils.js +43 -26
- package/Transformers/Utils.js.map +1 -0
- package/Transformers/__tests__/Examples.d.ts +36 -0
- package/Transformers/__tests__/Examples.js +40 -0
- package/Transformers/__tests__/Examples.js.map +1 -0
- package/Transformers/__tests__/Replicable.Transformers.Definitions.test.js +18 -16
- package/Transformers/__tests__/Replicable.Transformers.Definitions.test.js.map +1 -0
- package/Transformers/__tests__/Replicable.Transformers.Loader.test.js +2 -0
- package/Transformers/__tests__/Replicable.Transformers.Loader.test.js.map +1 -0
- package/Transformers/__tests__/Replicable.Transformers.Progress.test.js +1 -0
- package/Transformers/__tests__/Replicable.Transformers.Progress.test.js.map +1 -0
- package/Transformers/__tests__/Replicable.Transformers.Reference.test.js +1 -0
- package/Transformers/__tests__/Replicable.Transformers.Reference.test.js.map +1 -0
- package/Transformers/__tests__/Replicable.Transformers.SchemaGenerator.test.js +14 -2
- package/Transformers/__tests__/Replicable.Transformers.SchemaGenerator.test.js.map +1 -0
- package/Transformers/__tests__/Replicable.Transformers.SchemaGeneratorOutput.test.js +1 -0
- package/Transformers/__tests__/Replicable.Transformers.SchemaGeneratorOutput.test.js.map +1 -0
- package/Transformers/__tests__/Replicable.Transformers.Serialiser.test.js +11 -2
- package/Transformers/__tests__/Replicable.Transformers.Serialiser.test.js.map +1 -0
- package/Transformers/__tests__/Replicable.Transformers.Utils.test.js +95 -82
- package/Transformers/__tests__/Replicable.Transformers.Utils.test.js.map +1 -0
- package/__tests__/Configuration/Mocks.d.ts +2 -0
- package/__tests__/Configuration/Mocks.js +98 -0
- package/__tests__/Configuration/Mocks.js.map +1 -0
- package/__tests__/Configuration/Setup.d.ts +1 -0
- package/__tests__/Configuration/Setup.js +14 -0
- package/__tests__/Configuration/Setup.js.map +1 -0
- package/__tests__/Configuration/TestTypes.d.ts +33 -0
- package/__tests__/Replicable.Expressions.test.js +1 -0
- package/__tests__/Replicable.Expressions.test.js.map +1 -0
- package/__tests__/Replicable.IDPool.test.js +1 -0
- package/__tests__/Replicable.IDPool.test.js.map +1 -0
- package/__tests__/Replicable.ReplicableRegistry.test.js +23 -13
- package/__tests__/Replicable.ReplicableRegistry.test.js.map +1 -0
- package/__tests__/Replicable.Serialisation.test.js +1 -0
- package/__tests__/Replicable.Serialisation.test.js.map +1 -0
- package/package.json +28 -18
- package/tsconfig.json +7 -4
- package/tsconfig.tsbuildinfo +1 -0
- package/vitest.config.d.ts +2 -0
- package/vitest.config.js +32 -0
- package/vitest.config.js.map +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Function.js","sourceRoot":"","sources":["Function.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { GrammarInterfaces } from "../Parser/Interfaces.js";
|
|
2
|
+
import { NodeType } from "../Parser/Enums.js";
|
|
3
|
+
import { ArrayAccessSequenceNode, MemberAccessNode } from "./Accessors.js";
|
|
4
|
+
import EAST_Token = GrammarInterfaces.EAST_Token;
|
|
5
|
+
import Node = GrammarInterfaces.Node;
|
|
6
|
+
import EAST_Complex_Node = GrammarInterfaces.EAST_Complex_Node;
|
|
7
|
+
import { CommentNode, PreprocessorCommandNode } from "./Preprocessors.js";
|
|
8
|
+
import { FunctionCallNode, FunctionDeclarationNode } from "./Function.js";
|
|
9
|
+
import { AssignmentNode, LiteralNode } from "./Misc.js";
|
|
10
|
+
import { BinaryExpressionNode, UnaryExpressionNode } from "./Maths.js";
|
|
11
|
+
import { DeclarationNode } from "./Declarations.js";
|
|
12
|
+
import { CastNode } from "./Types.js";
|
|
13
|
+
export interface FileNode extends EAST_Complex_Node {
|
|
14
|
+
type: NodeType.FILE;
|
|
15
|
+
text: string;
|
|
16
|
+
sourceLocation: string;
|
|
17
|
+
version: string;
|
|
18
|
+
values: {
|
|
19
|
+
lines: (CommentNode | PreprocessorCommandNode | FunctionDeclarationNode | DeclarationNode | ExpressionNode)[];
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export declare function IsFileNode(node: Node): node is FileNode;
|
|
23
|
+
export interface BlockNode<Extensions extends EAST_Complex_Node | never> extends GrammarInterfaces.EAST_Complex_Node {
|
|
24
|
+
type: NodeType.BLOCK;
|
|
25
|
+
values: {
|
|
26
|
+
lines: (Extensions | CommentNode | DeclarationNode | StatementNode)[];
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
export declare function IsBlockNode(node: Node): node is BlockNode<GrammarInterfaces.EAST_Complex_Node>;
|
|
30
|
+
export interface StatementNode extends EAST_Complex_Node {
|
|
31
|
+
type: NodeType.STATEMENT;
|
|
32
|
+
values: {
|
|
33
|
+
expression: ExpressionNode["values"]["expression"];
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
export declare function IsStatementNode(node: Node): node is StatementNode;
|
|
37
|
+
export interface ExpressionNode extends EAST_Complex_Node {
|
|
38
|
+
type: NodeType.EXPRESSION;
|
|
39
|
+
values: {
|
|
40
|
+
expression: ArrayAccessSequenceNode | FunctionCallNode | MemberAccessNode | BinaryExpressionNode | ParenthetisedExpressionNode | UnaryExpressionNode | CastNode | AssignmentNode | EAST_Token | LiteralNode;
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
export declare function IsExpressionNode(node: Node): node is ExpressionNode;
|
|
44
|
+
export interface ParenthetisedExpressionNode extends EAST_Complex_Node {
|
|
45
|
+
type: NodeType.PARENTHETISED_EXPRESSION;
|
|
46
|
+
values: ExpressionNode["values"];
|
|
47
|
+
}
|
|
48
|
+
export declare function IsParenthetisedExpressionNode(node: Node): node is ParenthetisedExpressionNode;
|
|
49
|
+
export interface IdentifierNode extends EAST_Complex_Node {
|
|
50
|
+
type: NodeType.IDENTIFIER;
|
|
51
|
+
values: {
|
|
52
|
+
name: EAST_Token;
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
export declare function IdentifierNode(node: Node): node is ParenthetisedExpressionNode;
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
import { GrammarInterfaces } from "../Parser/Interfaces.js";
|
|
2
|
+
import { NodeType, TokenType } from "../Parser/Enums.js";
|
|
3
|
+
import { GrammarRegistry } from "../GrammarRegistry.js";
|
|
4
|
+
import { Versions } from "../../../Constants/Versions.js";
|
|
5
|
+
import { CONTROL_FLOW_STATEMENTS } from "./ControlFlow.js";
|
|
6
|
+
var SpecialType = GrammarInterfaces.SpecialType;
|
|
7
|
+
var ExpressionSyntaxError = GrammarRegistry.ExpressionSyntaxError;
|
|
8
|
+
var isAssignableCompile = GrammarInterfaces.isAssignableCompile;
|
|
9
|
+
import { ErrorStack } from "../../../Constants/Errors.js";
|
|
10
|
+
import { describeObject } from "../../../Constants/SerialisationTypes.js";
|
|
11
|
+
export function IsFileNode(node) {
|
|
12
|
+
return node.type === NodeType.FILE;
|
|
13
|
+
}
|
|
14
|
+
GrammarRegistry.AddRule(Versions.v1_0_0, NodeType.FILE, [[
|
|
15
|
+
{
|
|
16
|
+
type: [NodeType.COMMENT, NodeType.PREPROCESSOR_COMMAND, NodeType.FUNCTION_DECLARATION, NodeType.DECLARATION, NodeType.EXPRESSION],
|
|
17
|
+
name: "lines",
|
|
18
|
+
repeat: [0, Number.POSITIVE_INFINITY]
|
|
19
|
+
}
|
|
20
|
+
]], {
|
|
21
|
+
runtimeExecute(scope, node, outputType) {
|
|
22
|
+
let output = null;
|
|
23
|
+
for (const line of node.values.lines) {
|
|
24
|
+
let result = line.execute.runtimeExecute(scope, line, null);
|
|
25
|
+
if (result) {
|
|
26
|
+
if (output) {
|
|
27
|
+
throw new ExpressionSyntaxError(`Cannot output more than one value from an expression`, node);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
let stack = new ErrorStack({ Version: scope.version, SourceFile: node.file.sourceLocation });
|
|
31
|
+
if (!isAssignableCompile(scope.version, result.type ? [result.type] : null, outputType, node, stack)) {
|
|
32
|
+
throw new Error(`Cannot assign "${result.type}" to "${outputType}".\n` + stack.toString(`EXP_GR_GFN_01`));
|
|
33
|
+
}
|
|
34
|
+
output = result;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
if (result.interrupt) {
|
|
38
|
+
throw new ExpressionSyntaxError(`Cannot ${result.interrupt} from a file`, node);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
if (!output && outputType) {
|
|
42
|
+
throw new ExpressionSyntaxError(`Expression requires that a value is returned matching ${outputType.map((e) => describeObject(e)).join(",")}`, node);
|
|
43
|
+
}
|
|
44
|
+
return output ?? {
|
|
45
|
+
type: null,
|
|
46
|
+
value: undefined
|
|
47
|
+
};
|
|
48
|
+
},
|
|
49
|
+
compileTimeTraversal(scope, node, outputType) {
|
|
50
|
+
let output = null;
|
|
51
|
+
for (const line of node.values.lines) {
|
|
52
|
+
let result = line.execute.compileTimeTraversal(scope, line, null);
|
|
53
|
+
if (result) {
|
|
54
|
+
if (output) {
|
|
55
|
+
throw new ExpressionSyntaxError(`Cannot output more than one value from an expression`, node);
|
|
56
|
+
}
|
|
57
|
+
let stack = new ErrorStack({ Version: scope.version, SourceFile: node.file.sourceLocation });
|
|
58
|
+
if (!isAssignableCompile(scope.version, result.type, outputType, node, stack)) {
|
|
59
|
+
throw new Error(`Cannot assign "${result.type}" to "${outputType}".\n` + stack.toString(`EXP_GR_GFN_01`));
|
|
60
|
+
}
|
|
61
|
+
output = result;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
if (!output && outputType) {
|
|
65
|
+
throw new ExpressionSyntaxError(`Expression requires that a value is returned matching ${outputType.map((e) => describeObject(e)).join(",")}`, node);
|
|
66
|
+
}
|
|
67
|
+
return output;
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
export function IsBlockNode(node) {
|
|
71
|
+
return node.type === NodeType.BLOCK;
|
|
72
|
+
}
|
|
73
|
+
GrammarRegistry.AddRule(Versions.v1_0_0, NodeType.BLOCK, [[
|
|
74
|
+
{ type: TokenType.OPERATOR, value: "{" },
|
|
75
|
+
{
|
|
76
|
+
type: [
|
|
77
|
+
NodeType.COMMENT,
|
|
78
|
+
NodeType.DECLARATION,
|
|
79
|
+
NodeType.STATEMENT,
|
|
80
|
+
...CONTROL_FLOW_STATEMENTS,
|
|
81
|
+
SpecialType.INPUT_TYPES
|
|
82
|
+
],
|
|
83
|
+
input: [SpecialType.INPUT_TYPES],
|
|
84
|
+
name: "lines",
|
|
85
|
+
repeat: [0, Number.POSITIVE_INFINITY]
|
|
86
|
+
},
|
|
87
|
+
{ type: TokenType.OPERATOR, value: "}" }
|
|
88
|
+
]], {
|
|
89
|
+
runtimeExecute(scope, node, outputType) {
|
|
90
|
+
for (const line of node.values.lines) {
|
|
91
|
+
let result = line.execute.runtimeExecute(scope, line, null);
|
|
92
|
+
if (result.interrupt === "return") {
|
|
93
|
+
return {
|
|
94
|
+
value: result.value,
|
|
95
|
+
type: result.type
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
else if (result.interrupt) {
|
|
99
|
+
throw new ExpressionSyntaxError(`Cannot ${result.interrupt} from a file`, node);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
if (outputType) {
|
|
103
|
+
throw new ExpressionSyntaxError(`Block requires that a value is returned matching ${outputType.map((e) => describeObject(e)).join(",")}`, node);
|
|
104
|
+
}
|
|
105
|
+
return {
|
|
106
|
+
type: null,
|
|
107
|
+
value: undefined
|
|
108
|
+
};
|
|
109
|
+
},
|
|
110
|
+
compileTimeTraversal(scope, node, outputType) {
|
|
111
|
+
for (const line of node.values.lines) {
|
|
112
|
+
let result = line.execute.compileTimeTraversal(scope, line, null);
|
|
113
|
+
if (result) {
|
|
114
|
+
let stack = new ErrorStack({ Version: scope.version, SourceFile: node.file.sourceLocation });
|
|
115
|
+
let valid = isAssignableCompile(scope.version, result.type, outputType, node, stack);
|
|
116
|
+
if (!valid) {
|
|
117
|
+
throw new Error(`Cannot assign "${result.type}" to "${outputType}".\n` + stack.toString(`EXP_GR_GFN_01`));
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
if (outputType) {
|
|
122
|
+
throw new ExpressionSyntaxError(`Block requires that a value is returned matching ${outputType.map((e) => describeObject(e)).join(",")}`, node);
|
|
123
|
+
}
|
|
124
|
+
return {
|
|
125
|
+
type: null,
|
|
126
|
+
value: undefined
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
export function IsStatementNode(node) {
|
|
131
|
+
return node.type === NodeType.STATEMENT;
|
|
132
|
+
}
|
|
133
|
+
GrammarRegistry.AddRule(Versions.v1_0_0, NodeType.STATEMENT, [[
|
|
134
|
+
{ type: NodeType.EXPRESSION, unroll: true },
|
|
135
|
+
{ type: TokenType.OPERATOR, value: ";" }
|
|
136
|
+
]], {
|
|
137
|
+
runtimeExecute(scope, node, outputType) {
|
|
138
|
+
return node.values.expression.execute.runtimeExecute(scope, node.values.expression, outputType);
|
|
139
|
+
},
|
|
140
|
+
compileTimeTraversal(scope, node, outputType) {
|
|
141
|
+
return node.values.expression.execute.compileTimeTraversal(scope, node.values.expression, outputType);
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
export function IsExpressionNode(node) {
|
|
145
|
+
return node.type === NodeType.EXPRESSION;
|
|
146
|
+
}
|
|
147
|
+
GrammarRegistry.AddRule(Versions.v1_0_0, NodeType.EXPRESSION, [[
|
|
148
|
+
{
|
|
149
|
+
type: [
|
|
150
|
+
NodeType.MEMBER_ACCESS,
|
|
151
|
+
NodeType.FORCE_CAST,
|
|
152
|
+
NodeType.ARRAY_ACCESS_SEQUENCE,
|
|
153
|
+
NodeType.FUNCTION_CALL,
|
|
154
|
+
NodeType.CAST,
|
|
155
|
+
NodeType.BINARY_EXPRESSION,
|
|
156
|
+
NodeType.PARENTHETISED_EXPRESSION,
|
|
157
|
+
NodeType.UNARY_EXPRESSION,
|
|
158
|
+
NodeType.ASSIGNMENT,
|
|
159
|
+
TokenType.BUILTIN,
|
|
160
|
+
NodeType.LITERAL,
|
|
161
|
+
TokenType.IDENTIFIER,
|
|
162
|
+
],
|
|
163
|
+
name: "expression"
|
|
164
|
+
}
|
|
165
|
+
]], {
|
|
166
|
+
runtimeExecute(scope, node, outputType) {
|
|
167
|
+
return node.values.expression.execute.runtimeExecute(scope, node.values.expression, outputType);
|
|
168
|
+
},
|
|
169
|
+
compileTimeTraversal(scope, node, outputType) {
|
|
170
|
+
return node.values.expression.execute.compileTimeTraversal(scope, node.values.expression, outputType);
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
export function IsParenthetisedExpressionNode(node) {
|
|
174
|
+
return node.type === NodeType.PARENTHETISED_EXPRESSION;
|
|
175
|
+
}
|
|
176
|
+
GrammarRegistry.AddRule(Versions.v1_0_0, NodeType.PARENTHETISED_EXPRESSION, [[
|
|
177
|
+
{ type: TokenType.OPERATOR, value: "(" },
|
|
178
|
+
{ type: NodeType.EXPRESSION, unroll: true },
|
|
179
|
+
{ type: TokenType.OPERATOR, value: ")" }
|
|
180
|
+
]], {
|
|
181
|
+
runtimeExecute(scope, node, outputType) {
|
|
182
|
+
return node.values.expression.execute.runtimeExecute(scope, node.values.expression, outputType);
|
|
183
|
+
},
|
|
184
|
+
compileTimeTraversal(scope, node, outputType) {
|
|
185
|
+
return node.values.expression.execute.compileTimeTraversal(scope, node.values.expression, outputType);
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
export function IdentifierNode(node) {
|
|
189
|
+
return node.type === NodeType.IDENTIFIER;
|
|
190
|
+
}
|
|
191
|
+
GrammarRegistry.AddRule(Versions.v1_0_0, NodeType.IDENTIFIER, [[
|
|
192
|
+
{ type: TokenType.IDENTIFIER, name: "name" },
|
|
193
|
+
]], {
|
|
194
|
+
runtimeExecute(scope, node, outputType) {
|
|
195
|
+
let lookupName = node.values.name.data;
|
|
196
|
+
let appendix = "";
|
|
197
|
+
let value = scope.local[lookupName] ?? scope.global[lookupName];
|
|
198
|
+
if (!value) {
|
|
199
|
+
throw new ExpressionSyntaxError(`Error: "${lookupName}" doesn't exist in this scope.` + appendix, node);
|
|
200
|
+
}
|
|
201
|
+
let selectedType;
|
|
202
|
+
let errorStack = new ErrorStack({ Version: scope.version, SourceFile: node.file.sourceLocation });
|
|
203
|
+
for (let type of value.type) {
|
|
204
|
+
if (type.kind == "value") {
|
|
205
|
+
if (type.isAssignable(scope.version, !!scope.data, value, errorStack)) {
|
|
206
|
+
selectedType = type;
|
|
207
|
+
break;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
//TODO: Do better typechecking for functions.
|
|
212
|
+
if (typeof value === "function") {
|
|
213
|
+
selectedType = type;
|
|
214
|
+
break;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
if (!selectedType) {
|
|
219
|
+
throw new ExpressionSyntaxError(`Error: "${lookupName}"'s contents don't have a valid value.` + errorStack.toString(`EXP_GR_GEN_ID_01`), node);
|
|
220
|
+
}
|
|
221
|
+
if (!isAssignableCompile(scope.version, value.type, outputType, node, errorStack)) {
|
|
222
|
+
throw new ExpressionSyntaxError(`Error: "${lookupName}" is not assignable to the expected type.`, node);
|
|
223
|
+
}
|
|
224
|
+
return {
|
|
225
|
+
type: selectedType,
|
|
226
|
+
value: value.value
|
|
227
|
+
};
|
|
228
|
+
},
|
|
229
|
+
compileTimeTraversal(scope, node, outputType) {
|
|
230
|
+
let lookupName = node.values.name.data;
|
|
231
|
+
let value = scope.local[lookupName] ?? scope.global[lookupName];
|
|
232
|
+
if (!value) {
|
|
233
|
+
let appendix = "";
|
|
234
|
+
//Kinda hacky, but since expressions are PascalCase by default, we can do a hard-coded reminder here.
|
|
235
|
+
//TODO: Actually check to see if the upper-case version exists.
|
|
236
|
+
if (lookupName[0].toLowerCase() == lookupName[0]) {
|
|
237
|
+
appendix = ` Did you mean to write "${lookupName[0].toUpperCase() + lookupName.slice(1)}"?`;
|
|
238
|
+
}
|
|
239
|
+
throw new ExpressionSyntaxError(`Error: "${lookupName}" doesn't exist in this scope.` + appendix, node);
|
|
240
|
+
}
|
|
241
|
+
let errorStack = new ErrorStack({ Version: scope.version, SourceFile: node.file.sourceLocation });
|
|
242
|
+
if (!isAssignableCompile(scope.version, value.type, outputType, node, errorStack)) {
|
|
243
|
+
throw new ExpressionSyntaxError(`Error: "${lookupName}" is not assignable to the expected type.`, node);
|
|
244
|
+
}
|
|
245
|
+
return value;
|
|
246
|
+
}
|
|
247
|
+
});
|
|
248
|
+
//# sourceMappingURL=General.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"General.js","sourceRoot":"","sources":["General.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { GrammarInterfaces } from "../Parser/Interfaces.js";
|
|
2
|
+
import { NodeType } from "../Parser/Enums.js";
|
|
3
|
+
import { ArrayAccessSequenceNode } from "./Accessors.js";
|
|
4
|
+
import { ExpressionNode, ParenthetisedExpressionNode } from "./General.js";
|
|
5
|
+
import { FunctionCallNode } from "./Function.js";
|
|
6
|
+
import { LiteralNode } from "./Misc.js";
|
|
7
|
+
import EAST_Token = GrammarInterfaces.EAST_Token;
|
|
8
|
+
import EAST_Complex_Node = GrammarInterfaces.EAST_Complex_Node;
|
|
9
|
+
import Node = GrammarInterfaces.Node;
|
|
10
|
+
export interface BinaryExpressionNode extends EAST_Complex_Node {
|
|
11
|
+
type: NodeType.BINARY_EXPRESSION;
|
|
12
|
+
values: {
|
|
13
|
+
lhs: ArrayAccessSequenceNode | FunctionCallNode | ParenthetisedExpressionNode | UnaryExpressionNode | LiteralNode | EAST_Token;
|
|
14
|
+
operator: EAST_Token;
|
|
15
|
+
rhs: ExpressionNode;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
export declare function IsBinaryExpressionNode(node: Node): node is BinaryExpressionNode;
|
|
19
|
+
export interface UnaryExpressionNode extends GrammarInterfaces.EAST_Complex_Node {
|
|
20
|
+
type: NodeType.UNARY_EXPRESSION;
|
|
21
|
+
values: {
|
|
22
|
+
operator: EAST_Token;
|
|
23
|
+
value: ExpressionNode;
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export declare function IsUnaryExpressionNode(node: Node): node is UnaryExpressionNode;
|
|
@@ -0,0 +1,164 @@
|
|
|
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 { ChainBoolean, ChainNumber } from "../../TypeRegistry/Primitive.js";
|
|
6
|
+
import { isToken } from "./Tokens.js";
|
|
7
|
+
var ExpressionSyntaxError = GrammarRegistry.ExpressionSyntaxError;
|
|
8
|
+
var isAssignableCompile = GrammarInterfaces.isAssignableCompile;
|
|
9
|
+
import { ErrorStack } from "../../../Constants/Errors.js";
|
|
10
|
+
export function IsBinaryExpressionNode(node) {
|
|
11
|
+
return node.type === NodeType.BINARY_EXPRESSION;
|
|
12
|
+
}
|
|
13
|
+
GrammarRegistry.AddRule(Versions.v1_0_0, NodeType.BINARY_EXPRESSION, [[
|
|
14
|
+
{
|
|
15
|
+
type: [
|
|
16
|
+
/* no recursion or assignments on the lhs */
|
|
17
|
+
NodeType.ARRAY_ACCESS_SEQUENCE,
|
|
18
|
+
NodeType.FUNCTION_CALL,
|
|
19
|
+
NodeType.PARENTHETISED_EXPRESSION,
|
|
20
|
+
NodeType.UNARY_EXPRESSION,
|
|
21
|
+
TokenType.BUILTIN,
|
|
22
|
+
NodeType.LITERAL,
|
|
23
|
+
TokenType.IDENTIFIER
|
|
24
|
+
],
|
|
25
|
+
name: "lhs"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
type: TokenType.OPERATOR,
|
|
29
|
+
values: ["==", "!=", ">", "<", ">=", "<=", "-", "+", "/", "*"],
|
|
30
|
+
name: "operator"
|
|
31
|
+
},
|
|
32
|
+
{ type: NodeType.EXPRESSION, name: "rhs" }
|
|
33
|
+
]], {
|
|
34
|
+
runtimeExecute(scope, node, outputType) {
|
|
35
|
+
const { lhs, rhs, operator } = node.values;
|
|
36
|
+
const resultType = ["==", "!=", "<", ">", "<=", ">="].includes(operator.data) ? ChainBoolean : ChainNumber;
|
|
37
|
+
const inputTypes = ["==", "!="].includes(operator.data) ? [ChainBoolean, ChainNumber] : [ChainNumber];
|
|
38
|
+
const left = lhs.execute.runtimeExecute(scope, lhs, inputTypes);
|
|
39
|
+
const right = rhs.execute.runtimeExecute(scope, rhs, inputTypes);
|
|
40
|
+
let value;
|
|
41
|
+
switch (operator.data) {
|
|
42
|
+
case "+":
|
|
43
|
+
value = left.value + right.value;
|
|
44
|
+
break;
|
|
45
|
+
case "-":
|
|
46
|
+
value = left.value - right.value;
|
|
47
|
+
break;
|
|
48
|
+
case "*":
|
|
49
|
+
value = left.value * right.value;
|
|
50
|
+
break;
|
|
51
|
+
case "/":
|
|
52
|
+
value = left.value / right.value;
|
|
53
|
+
break;
|
|
54
|
+
case "==":
|
|
55
|
+
value = left.value === right.value;
|
|
56
|
+
break;
|
|
57
|
+
case "!=":
|
|
58
|
+
value = left.value !== right.value;
|
|
59
|
+
break;
|
|
60
|
+
case "<":
|
|
61
|
+
value = left.value < right.value;
|
|
62
|
+
break;
|
|
63
|
+
case "<=":
|
|
64
|
+
value = left.value <= right.value;
|
|
65
|
+
break;
|
|
66
|
+
case ">":
|
|
67
|
+
value = left.value > right.value;
|
|
68
|
+
break;
|
|
69
|
+
case ">=":
|
|
70
|
+
value = left.value >= right.value;
|
|
71
|
+
break;
|
|
72
|
+
default:
|
|
73
|
+
throw new ExpressionSyntaxError(`Unsupported binary operator: ${operator.data}`, operator);
|
|
74
|
+
}
|
|
75
|
+
let stack = new ErrorStack({ Version: scope.version, SourceFile: node.file.sourceLocation });
|
|
76
|
+
if (!isAssignableCompile(scope.version, outputType, [resultType], node, stack)) {
|
|
77
|
+
throw new ExpressionSyntaxError(`Invalid output type for binary expression: ${operator.data}\n` + stack.toString("EXP_GM_BEN_01"), operator);
|
|
78
|
+
}
|
|
79
|
+
return {
|
|
80
|
+
type: resultType,
|
|
81
|
+
value
|
|
82
|
+
};
|
|
83
|
+
},
|
|
84
|
+
compileTimeTraversal(scope, node, outputType) {
|
|
85
|
+
const { lhs, rhs, operator } = node.values;
|
|
86
|
+
if (!["+", "-", "*", "/", "==", "!=", ">", ">=", "<", "<="].includes(operator.data)) {
|
|
87
|
+
throw new ExpressionSyntaxError(`Unsupported binary operator: ${operator.data}`, operator);
|
|
88
|
+
}
|
|
89
|
+
const resultType = ["==", "!=", "<", ">", "<=", ">="].includes(operator.data) ? [ChainBoolean] : [ChainNumber];
|
|
90
|
+
const inputTypes = ["==", "!="].includes(operator.data) ? [ChainBoolean, ChainNumber] : [ChainNumber];
|
|
91
|
+
let stack = new ErrorStack({ Version: scope.version, SourceFile: node.file.sourceLocation });
|
|
92
|
+
if (outputType && isAssignableCompile(scope.version, outputType, resultType, node, stack)) {
|
|
93
|
+
throw new ExpressionSyntaxError(`Invalid output type for binary expression: ${operator.data}\n` + stack.toString("EXP_GM_BEN_02"), operator);
|
|
94
|
+
}
|
|
95
|
+
if (isToken(lhs)) {
|
|
96
|
+
lhs.execute.compileTimeTraversal(scope, lhs, inputTypes);
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
lhs.execute.compileTimeTraversal(scope, lhs, inputTypes);
|
|
100
|
+
}
|
|
101
|
+
rhs.execute.compileTimeTraversal(scope, rhs, inputTypes);
|
|
102
|
+
return {
|
|
103
|
+
type: resultType,
|
|
104
|
+
style: CollectionType.Single
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
export function IsUnaryExpressionNode(node) {
|
|
109
|
+
return node.type === NodeType.UNARY_EXPRESSION;
|
|
110
|
+
}
|
|
111
|
+
GrammarRegistry.AddRule(Versions.v1_0_0, NodeType.UNARY_EXPRESSION, [[
|
|
112
|
+
{ type: TokenType.OPERATOR, values: ["!", "-"], name: "operator" },
|
|
113
|
+
{ type: NodeType.EXPRESSION, name: "value" }
|
|
114
|
+
]], {
|
|
115
|
+
runtimeExecute(scope, currentNode, outputType) {
|
|
116
|
+
const { operator, value } = currentNode.values;
|
|
117
|
+
switch (operator.data) {
|
|
118
|
+
case "!": {
|
|
119
|
+
const evaluated = value.execute.runtimeExecute(scope, value, [ChainBoolean]);
|
|
120
|
+
return {
|
|
121
|
+
type: evaluated.type,
|
|
122
|
+
value: !evaluated.value
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
case "-": {
|
|
126
|
+
const evaluated = value.execute.runtimeExecute(scope, value, [ChainNumber]);
|
|
127
|
+
return {
|
|
128
|
+
type: evaluated.type,
|
|
129
|
+
value: -evaluated.value
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
throw new ExpressionSyntaxError(`Unsupported unary operator: ${operator.data}`, operator);
|
|
134
|
+
},
|
|
135
|
+
compileTimeTraversal(scope, node, outputType) {
|
|
136
|
+
const { operator, value } = node.values;
|
|
137
|
+
switch (operator.data) {
|
|
138
|
+
case "!": {
|
|
139
|
+
let result = value.execute.compileTimeTraversal(scope, value, [ChainBoolean]);
|
|
140
|
+
let stack = new ErrorStack({ Version: scope.version, SourceFile: node.file.sourceLocation });
|
|
141
|
+
if (!isAssignableCompile(scope.version, outputType, result?.type ?? null, node, stack)) {
|
|
142
|
+
throw new ExpressionSyntaxError(`Unary expression outputs type that conflicts with required type: ${operator.data}\n` + stack.toString("EXP_GM_UNE_01"), operator);
|
|
143
|
+
}
|
|
144
|
+
return {
|
|
145
|
+
type: result?.type ?? null,
|
|
146
|
+
style: CollectionType.Single
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
case "-": {
|
|
150
|
+
let result = value.execute.compileTimeTraversal(scope, value, [ChainNumber]);
|
|
151
|
+
let stack = new ErrorStack({ Version: scope.version, SourceFile: node.file.sourceLocation });
|
|
152
|
+
if (!isAssignableCompile(scope.version, outputType, result?.type ?? null, node, stack)) {
|
|
153
|
+
throw new ExpressionSyntaxError(`Unary expression outputs type that conflicts with required type: ${operator.data}\n` + stack.toString("EXP_GM_UNE_02"), operator);
|
|
154
|
+
}
|
|
155
|
+
return {
|
|
156
|
+
type: result?.type ?? null,
|
|
157
|
+
style: CollectionType.Single
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
throw new ExpressionSyntaxError(`Unsupported unary operator: ${operator.data}`, operator);
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
//# sourceMappingURL=Maths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Maths.js","sourceRoot":"","sources":["Maths.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { GrammarInterfaces } from "../Parser/Interfaces.js";
|
|
2
|
+
import { NodeType } from "../Parser/Enums.js";
|
|
3
|
+
import { ExpressionNode } from "./General.js";
|
|
4
|
+
import EAST_Token = GrammarInterfaces.EAST_Token;
|
|
5
|
+
import Node = GrammarInterfaces.Node;
|
|
6
|
+
export interface LiteralNode extends GrammarInterfaces.EAST_Complex_Node {
|
|
7
|
+
type: NodeType.LITERAL;
|
|
8
|
+
values: {
|
|
9
|
+
value: EAST_Token;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export declare function IsLiteralNode(node: Node): node is LiteralNode;
|
|
13
|
+
export interface AssignmentNode extends GrammarInterfaces.EAST_Complex_Node {
|
|
14
|
+
type: NodeType.ASSIGNMENT;
|
|
15
|
+
values: {
|
|
16
|
+
lhs: EAST_Token;
|
|
17
|
+
rhs: ExpressionNode;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export declare function IsAssignmentNode(node: Node): node is AssignmentNode;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Versions } from "../../../Constants/Versions.js";
|
|
2
|
+
import { GrammarRegistry } from "../GrammarRegistry.js";
|
|
3
|
+
import { NodeType, TokenType } from "../Parser/Enums.js";
|
|
4
|
+
var ExpressionSyntaxError = GrammarRegistry.ExpressionSyntaxError;
|
|
5
|
+
export function IsLiteralNode(node) {
|
|
6
|
+
return node.type === NodeType.LITERAL;
|
|
7
|
+
}
|
|
8
|
+
GrammarRegistry.AddRule(Versions.v1_0_0, NodeType.LITERAL, [[
|
|
9
|
+
{ type: [TokenType.FLOAT, TokenType.INTEGER, TokenType.HEX, TokenType.BLOCK_STRING, TokenType.LINE_STRING], name: "value" }
|
|
10
|
+
]], {
|
|
11
|
+
runtimeExecute(scope, node, outputType) {
|
|
12
|
+
return node.values.value.execute.runtimeExecute(scope, node.values.value, outputType);
|
|
13
|
+
},
|
|
14
|
+
compileTimeTraversal(scope, node, outputType) {
|
|
15
|
+
return node.values.value.execute.compileTimeTraversal(scope, node.values.value, outputType);
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
export function IsAssignmentNode(node) {
|
|
19
|
+
return node.type === NodeType.ASSIGNMENT;
|
|
20
|
+
}
|
|
21
|
+
GrammarRegistry.AddRule(Versions.v1_0_0, NodeType.ASSIGNMENT, [[
|
|
22
|
+
{ type: [TokenType.IDENTIFIER, TokenType.BUILTIN], name: "lhs" },
|
|
23
|
+
{ type: TokenType.OPERATOR, value: "=" },
|
|
24
|
+
{ type: NodeType.EXPRESSION, name: "rhs" }
|
|
25
|
+
]], {
|
|
26
|
+
runtimeExecute(scope, node, outputType) {
|
|
27
|
+
const { lhs, rhs } = node.values;
|
|
28
|
+
const evaluated = rhs.execute.runtimeExecute(scope, rhs, outputType);
|
|
29
|
+
if (!evaluated.type) {
|
|
30
|
+
throw new ExpressionSyntaxError(`Cannot assign expression returning never to variable ${lhs.data}`, node);
|
|
31
|
+
}
|
|
32
|
+
scope.local[lhs.data] = {
|
|
33
|
+
type: [evaluated.type],
|
|
34
|
+
value: evaluated.value,
|
|
35
|
+
};
|
|
36
|
+
return evaluated;
|
|
37
|
+
},
|
|
38
|
+
compileTimeTraversal(scope, node, outputType) {
|
|
39
|
+
const { lhs, rhs } = node.values;
|
|
40
|
+
const evaluated = rhs.execute.compileTimeTraversal(scope, rhs, outputType);
|
|
41
|
+
if (!evaluated?.type) {
|
|
42
|
+
throw new ExpressionSyntaxError(`Cannot assign expression returning never to variable ${lhs.data}`, node);
|
|
43
|
+
}
|
|
44
|
+
scope.local[lhs.data] = {
|
|
45
|
+
type: evaluated.type,
|
|
46
|
+
};
|
|
47
|
+
return evaluated;
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
//# sourceMappingURL=Misc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Misc.js","sourceRoot":"","sources":["Misc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAIzD,IAAO,qBAAqB,GAAG,eAAe,CAAC,qBAAqB,CAAC;AAWrE,MAAM,UAAU,aAAa,CAAC,IAAU;IACvC,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,OAAO,CAAC;AACvC,CAAC;AAED,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;QAC3D,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,YAAY,EAAE,SAAS,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;KAC3H,CAAC,EAAE;IACH,cAAc,CAAC,KAAK,EAAE,IAAiB,EAAE,UAAU;QAClD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACvF,CAAC;IACD,oBAAoB,CAAC,KAAK,EAAE,IAAiB,EAAE,UAAU;QACxD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAC7F,CAAC;CACD,CAAC,CAAC;AAWH,MAAM,UAAU,gBAAgB,CAAC,IAAU;IAC1C,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,UAAU,CAAC;AAC1C,CAAC;AAED,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC9D,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE;QAChE,EAAE,IAAI,EAAE,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;QACxC,EAAE,IAAI,EAAE,QAAQ,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE;KAC1C,CAAC,EAAE;IACH,cAAc,CAAC,KAAK,EAAE,IAAoB,EAAE,UAAU;QACrD,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QACjC,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;QACrE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACrB,MAAM,IAAI,qBAAqB,CAAC,wDAAwD,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;QAC3G,CAAC;QACD,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG;YACvB,IAAI,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC;YACtB,KAAK,EAAE,SAAS,CAAC,KAAK;SACtB,CAAA;QACD,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,oBAAoB,CAAC,KAAK,EAAE,IAAoB,EAAE,UAAU;QAC3D,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QACjC,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,oBAAoB,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;QAC3E,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC;YACtB,MAAM,IAAI,qBAAqB,CAAC,wDAAwD,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;QAC3G,CAAC;QACD,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG;YACvB,IAAI,EAAE,SAAS,CAAC,IAAI;SACpB,CAAA;QACD,OAAO,SAAS,CAAC;IAClB,CAAC;CACD,CAAC,CAAC"}
|