circuitscript 0.1.29 → 0.1.31
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/dist/cjs/BaseVisitor.js +150 -21
- package/dist/cjs/antlr/CircuitScriptLexer.js +241 -236
- package/dist/cjs/antlr/CircuitScriptParser.js +568 -431
- package/dist/cjs/builtinMethods.js +6 -2
- package/dist/cjs/environment.js +4 -0
- package/dist/cjs/execute.js +88 -57
- package/dist/cjs/globals.js +4 -1
- package/dist/cjs/helpers.js +6 -2
- package/dist/cjs/objects/ExecutionScope.js +9 -0
- package/dist/cjs/objects/types.js +21 -2
- package/dist/cjs/parser.js +6 -2
- package/dist/cjs/validate/SymbolTable.js +7 -1
- package/dist/cjs/validate/SymbolValidatorVisitor.js +54 -7
- package/dist/cjs/visitor.js +15 -47
- package/dist/esm/BaseVisitor.js +152 -23
- package/dist/esm/antlr/CircuitScriptLexer.js +241 -236
- package/dist/esm/antlr/CircuitScriptParser.js +567 -429
- package/dist/esm/antlr/CircuitScriptVisitor.js +3 -1
- package/dist/esm/builtinMethods.js +7 -3
- package/dist/esm/environment.js +4 -0
- package/dist/esm/execute.js +89 -58
- package/dist/esm/globals.js +2 -0
- package/dist/esm/helpers.js +6 -2
- package/dist/esm/objects/ExecutionScope.js +9 -0
- package/dist/esm/objects/types.js +27 -1
- package/dist/esm/parser.js +6 -2
- package/dist/esm/validate/SymbolTable.js +5 -0
- package/dist/esm/validate/SymbolValidatorVisitor.js +53 -6
- package/dist/esm/visitor.js +16 -45
- package/dist/types/BaseVisitor.d.ts +12 -5
- package/dist/types/antlr/CircuitScriptLexer.d.ts +43 -42
- package/dist/types/antlr/CircuitScriptParser.d.ts +71 -45
- package/dist/types/antlr/CircuitScriptVisitor.d.ts +6 -2
- package/dist/types/environment.d.ts +1 -0
- package/dist/types/execute.d.ts +2 -2
- package/dist/types/globals.d.ts +2 -0
- package/dist/types/objects/ExecutionScope.d.ts +3 -1
- package/dist/types/objects/types.d.ts +22 -1
- package/dist/types/validate/SymbolTable.d.ts +1 -0
- package/dist/types/validate/SymbolValidatorVisitor.d.ts +6 -2
- package/dist/types/visitor.d.ts +3 -1
- package/package.json +4 -1
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { Array_exprContext, ArrayExprContext, ArrayIndexExprContext, Assignment_exprContext, Atom_exprContext, ExpressionContext, Flow_expressionsContext, Function_args_exprContext, Function_call_exprContext, Function_exprContext, Function_return_exprContext, FunctionCallExprContext, Import_exprContext, Operator_assignment_exprContext, ParametersContext, RoundedBracketsExprContext, ScriptContext, Trailer_expr2Context, Value_exprContext, ValueAtomExprContext } from "./antlr/CircuitScriptParser.js";
|
|
1
|
+
import { Array_exprContext, ArrayExprContext, ArrayIndexExprContext, Assignment_exprContext, Atom_exprContext, ExpressionContext, Flow_expressionsContext, Function_args_exprContext, Function_call_exprContext, Function_exprContext, Function_return_exprContext, FunctionCallExprContext, Import_all_simpleContext, Import_exprContext, Import_simpleContext, Import_specificContext, Operator_assignment_exprContext, ParametersContext, RoundedBracketsExprContext, ScriptContext, Trailer_expr2Context, Value_exprContext, ValueAtomExprContext } from "./antlr/CircuitScriptParser.js";
|
|
2
2
|
import { CircuitScriptVisitor } from "./antlr/CircuitScriptVisitor.js";
|
|
3
3
|
import { ExecutionContext } from "./execute.js";
|
|
4
4
|
import { Logger } from "./logger.js";
|
|
5
5
|
import { ClassComponent } from "./objects/ClassComponent.js";
|
|
6
6
|
import { Net } from "./objects/Net.js";
|
|
7
|
-
import { CallableParameter,
|
|
7
|
+
import { CallableParameter, ComplexType, Direction, FunctionDefinedParameter, AnyReference, ImportedModule, NewContextOptions, ImportFunctionHandling as ImportFunctionHandling } from "./objects/types.js";
|
|
8
8
|
import { ParserRuleContext } from 'antlr4ng';
|
|
9
9
|
import { ExecutionWarning } from "./utils.js";
|
|
10
10
|
import { BaseError } from './utils.js';
|
|
@@ -12,13 +12,13 @@ import { ExecutionScope } from './objects/ExecutionScope.js';
|
|
|
12
12
|
import { NodeScriptEnvironment } from "./environment.js";
|
|
13
13
|
import { PinId } from './objects/PinDefinition.js';
|
|
14
14
|
export declare class BaseVisitor extends CircuitScriptVisitor<ComplexType | AnyReference | any> {
|
|
15
|
-
indentLevel: number;
|
|
16
15
|
startingContext: ExecutionContext;
|
|
17
16
|
executionStack: ExecutionContext[];
|
|
18
17
|
silent: boolean;
|
|
19
18
|
logger: Logger;
|
|
20
19
|
printStream: string[];
|
|
21
20
|
printToConsole: boolean;
|
|
21
|
+
allowParseImports: boolean;
|
|
22
22
|
acceptedDirections: Direction[];
|
|
23
23
|
protected resultData: Map<ParserRuleContext, any>;
|
|
24
24
|
protected componentCtxLinks: Map<ParserRuleContext, ClassComponent>;
|
|
@@ -45,6 +45,10 @@ export declare class BaseVisitor extends CircuitScriptVisitor<ComplexType | AnyR
|
|
|
45
45
|
log2(message: string): void;
|
|
46
46
|
visitAsync(ctx: ParserRuleContext): Promise<void>;
|
|
47
47
|
visitScript: (ctx: ScriptContext) => Promise<void>;
|
|
48
|
+
private importCommon;
|
|
49
|
+
visitImport_simple: (ctx: Import_simpleContext) => Promise<void>;
|
|
50
|
+
visitImport_all_simple: (ctx: Import_all_simpleContext) => Promise<void>;
|
|
51
|
+
visitImport_specific: (ctx: Import_specificContext) => Promise<void>;
|
|
48
52
|
visitAssignment_expr: (ctx: Assignment_exprContext) => void;
|
|
49
53
|
visitOperator_assignment_expr: (ctx: Operator_assignment_exprContext) => void;
|
|
50
54
|
private getReference;
|
|
@@ -53,6 +57,8 @@ export declare class BaseVisitor extends CircuitScriptVisitor<ComplexType | AnyR
|
|
|
53
57
|
visitFunctionCallExpr: (ctx: FunctionCallExprContext) => void;
|
|
54
58
|
visitFunction_call_expr: (ctx: Function_call_exprContext) => void;
|
|
55
59
|
private handleFunctionCall;
|
|
60
|
+
protected handleEnterContext(executor: ExecutionContext, executionStack: ExecutionContext[], contextName: string, ctx: ParserRuleContext, options: NewContextOptions, funcDefinedParameters: FunctionDefinedParameter[], passedInParameters: CallableParameter[], isBreakContext?: boolean): ExecutionContext;
|
|
61
|
+
protected handlePopContext(executor: ExecutionContext, executionStack: ExecutionContext[], namespaceExtension: string, isBreakContext?: boolean): ExecutionContext;
|
|
56
62
|
visitValue_expr: (ctx: Value_exprContext) => void;
|
|
57
63
|
visitValueAtomExpr: (ctx: ValueAtomExprContext) => void;
|
|
58
64
|
visitFunction_args_expr: (ctx: Function_args_exprContext) => void;
|
|
@@ -68,14 +74,14 @@ export declare class BaseVisitor extends CircuitScriptVisitor<ComplexType | AnyR
|
|
|
68
74
|
protected linkComponentToCtx(ctx: ParserRuleContext, instance: ClassComponent, creationFlag?: boolean): void;
|
|
69
75
|
getComponentCtxLinks(): Map<ParserRuleContext, ClassComponent>;
|
|
70
76
|
visitResult(ctx: ParserRuleContext): any;
|
|
71
|
-
protected handleImportFile(name: string, throwErrors?: boolean, ctx?: ParserRuleContext | null): Promise<ImportFile>;
|
|
77
|
+
protected handleImportFile(name: string, importHandling: ImportFunctionHandling, throwErrors?: boolean, ctx?: ParserRuleContext | null, specificImports?: string[]): Promise<ImportFile>;
|
|
72
78
|
visitRoundedBracketsExpr: (ctx: RoundedBracketsExprContext) => void;
|
|
73
79
|
protected setupDefinedParameters(funcDefinedParameters: FunctionDefinedParameter[], passedInParameters: CallableParameter[], executor: ExecutionContext): void;
|
|
74
80
|
protected runExpressions(executor: ExecutionContext, expressions: ExpressionContext[] | Function_exprContext[]): ComplexType;
|
|
75
81
|
protected getNetNamespace(executorNetNamespace: string, passedNetNamespace: string | null): string;
|
|
76
82
|
protected setInstanceParam(object: ClassComponent, trailers: string[], value: any): void;
|
|
77
83
|
protected getInstanceParam<T>(object: ClassComponent, trailers: string[]): T;
|
|
78
|
-
protected enterNewChildContext(executionStack: ExecutionContext[], parentContext: ExecutionContext, executionContextName: string, options:
|
|
84
|
+
protected enterNewChildContext(executionStack: ExecutionContext[], parentContext: ExecutionContext, executionContextName: string, options: NewContextOptions, funcDefinedParameters: FunctionDefinedParameter[], passedInParameters: CallableParameter[]): ExecutionContext;
|
|
79
85
|
protected prepareStringValue(value: string): string;
|
|
80
86
|
protected throwWithContext(context: ParserRuleContext, messageOrError: string | BaseError): void;
|
|
81
87
|
protected validateType(value: any, context: ParserRuleContext, validateFunction: (value: any) => boolean, expectedType: string): boolean;
|
|
@@ -89,5 +95,6 @@ type ImportFile = {
|
|
|
89
95
|
hasError: boolean;
|
|
90
96
|
hasParseError: boolean;
|
|
91
97
|
pathExists: boolean;
|
|
98
|
+
importedModule: ImportedModule;
|
|
92
99
|
};
|
|
93
100
|
export {};
|
|
@@ -25,48 +25,49 @@ export declare class CircuitScriptLexer extends antlr.Lexer {
|
|
|
25
25
|
static readonly Return = 23;
|
|
26
26
|
static readonly Define = 24;
|
|
27
27
|
static readonly Import = 25;
|
|
28
|
-
static readonly
|
|
29
|
-
static readonly
|
|
30
|
-
static readonly
|
|
31
|
-
static readonly
|
|
32
|
-
static readonly
|
|
33
|
-
static readonly
|
|
34
|
-
static readonly
|
|
35
|
-
static readonly
|
|
36
|
-
static readonly
|
|
37
|
-
static readonly
|
|
38
|
-
static readonly
|
|
39
|
-
static readonly
|
|
40
|
-
static readonly
|
|
41
|
-
static readonly
|
|
42
|
-
static readonly
|
|
43
|
-
static readonly
|
|
44
|
-
static readonly
|
|
45
|
-
static readonly
|
|
46
|
-
static readonly
|
|
47
|
-
static readonly
|
|
48
|
-
static readonly
|
|
49
|
-
static readonly
|
|
50
|
-
static readonly
|
|
51
|
-
static readonly
|
|
52
|
-
static readonly
|
|
53
|
-
static readonly
|
|
54
|
-
static readonly
|
|
55
|
-
static readonly
|
|
56
|
-
static readonly
|
|
57
|
-
static readonly
|
|
58
|
-
static readonly
|
|
59
|
-
static readonly
|
|
60
|
-
static readonly
|
|
61
|
-
static readonly
|
|
62
|
-
static readonly
|
|
63
|
-
static readonly
|
|
64
|
-
static readonly
|
|
65
|
-
static readonly
|
|
66
|
-
static readonly
|
|
67
|
-
static readonly
|
|
68
|
-
static readonly
|
|
69
|
-
static readonly
|
|
28
|
+
static readonly From = 26;
|
|
29
|
+
static readonly For = 27;
|
|
30
|
+
static readonly In = 28;
|
|
31
|
+
static readonly While = 29;
|
|
32
|
+
static readonly Continue = 30;
|
|
33
|
+
static readonly If = 31;
|
|
34
|
+
static readonly Else = 32;
|
|
35
|
+
static readonly Not = 33;
|
|
36
|
+
static readonly Frame = 34;
|
|
37
|
+
static readonly Sheet = 35;
|
|
38
|
+
static readonly Equals = 36;
|
|
39
|
+
static readonly NotEquals = 37;
|
|
40
|
+
static readonly GreaterThan = 38;
|
|
41
|
+
static readonly GreatOrEqualThan = 39;
|
|
42
|
+
static readonly LessThan = 40;
|
|
43
|
+
static readonly LessOrEqualThan = 41;
|
|
44
|
+
static readonly LogicalAnd = 42;
|
|
45
|
+
static readonly LogicalOr = 43;
|
|
46
|
+
static readonly Addition = 44;
|
|
47
|
+
static readonly Minus = 45;
|
|
48
|
+
static readonly Divide = 46;
|
|
49
|
+
static readonly Multiply = 47;
|
|
50
|
+
static readonly Modulus = 48;
|
|
51
|
+
static readonly AdditionAssign = 49;
|
|
52
|
+
static readonly MinusAssign = 50;
|
|
53
|
+
static readonly DivideAssign = 51;
|
|
54
|
+
static readonly MultiplyAssign = 52;
|
|
55
|
+
static readonly ModulusAssign = 53;
|
|
56
|
+
static readonly ANNOTATION_START = 54;
|
|
57
|
+
static readonly OPEN_PAREN = 55;
|
|
58
|
+
static readonly CLOSE_PAREN = 56;
|
|
59
|
+
static readonly NOT_CONNECTED = 57;
|
|
60
|
+
static readonly BOOLEAN_VALUE = 58;
|
|
61
|
+
static readonly ID = 59;
|
|
62
|
+
static readonly INTEGER_VALUE = 60;
|
|
63
|
+
static readonly DECIMAL_VALUE = 61;
|
|
64
|
+
static readonly NUMERIC_VALUE = 62;
|
|
65
|
+
static readonly STRING_VALUE = 63;
|
|
66
|
+
static readonly PERCENTAGE_VALUE = 64;
|
|
67
|
+
static readonly ALPHA_NUMERIC = 65;
|
|
68
|
+
static readonly WS = 66;
|
|
69
|
+
static readonly NEWLINE = 67;
|
|
70
|
+
static readonly COMMENT = 68;
|
|
70
71
|
static readonly channelNames: string[];
|
|
71
72
|
static readonly literalNames: (string | null)[];
|
|
72
73
|
static readonly symbolicNames: (string | null)[];
|
|
@@ -27,50 +27,51 @@ export declare class CircuitScriptParser extends antlr.Parser {
|
|
|
27
27
|
static readonly Return = 23;
|
|
28
28
|
static readonly Define = 24;
|
|
29
29
|
static readonly Import = 25;
|
|
30
|
-
static readonly
|
|
31
|
-
static readonly
|
|
32
|
-
static readonly
|
|
33
|
-
static readonly
|
|
34
|
-
static readonly
|
|
35
|
-
static readonly
|
|
36
|
-
static readonly
|
|
37
|
-
static readonly
|
|
38
|
-
static readonly
|
|
39
|
-
static readonly
|
|
40
|
-
static readonly
|
|
41
|
-
static readonly
|
|
42
|
-
static readonly
|
|
43
|
-
static readonly
|
|
44
|
-
static readonly
|
|
45
|
-
static readonly
|
|
46
|
-
static readonly
|
|
47
|
-
static readonly
|
|
48
|
-
static readonly
|
|
49
|
-
static readonly
|
|
50
|
-
static readonly
|
|
51
|
-
static readonly
|
|
52
|
-
static readonly
|
|
53
|
-
static readonly
|
|
54
|
-
static readonly
|
|
55
|
-
static readonly
|
|
56
|
-
static readonly
|
|
57
|
-
static readonly
|
|
58
|
-
static readonly
|
|
59
|
-
static readonly
|
|
60
|
-
static readonly
|
|
61
|
-
static readonly
|
|
62
|
-
static readonly
|
|
63
|
-
static readonly
|
|
64
|
-
static readonly
|
|
65
|
-
static readonly
|
|
66
|
-
static readonly
|
|
67
|
-
static readonly
|
|
68
|
-
static readonly
|
|
69
|
-
static readonly
|
|
70
|
-
static readonly
|
|
71
|
-
static readonly
|
|
72
|
-
static readonly
|
|
73
|
-
static readonly
|
|
30
|
+
static readonly From = 26;
|
|
31
|
+
static readonly For = 27;
|
|
32
|
+
static readonly In = 28;
|
|
33
|
+
static readonly While = 29;
|
|
34
|
+
static readonly Continue = 30;
|
|
35
|
+
static readonly If = 31;
|
|
36
|
+
static readonly Else = 32;
|
|
37
|
+
static readonly Not = 33;
|
|
38
|
+
static readonly Frame = 34;
|
|
39
|
+
static readonly Sheet = 35;
|
|
40
|
+
static readonly Equals = 36;
|
|
41
|
+
static readonly NotEquals = 37;
|
|
42
|
+
static readonly GreaterThan = 38;
|
|
43
|
+
static readonly GreatOrEqualThan = 39;
|
|
44
|
+
static readonly LessThan = 40;
|
|
45
|
+
static readonly LessOrEqualThan = 41;
|
|
46
|
+
static readonly LogicalAnd = 42;
|
|
47
|
+
static readonly LogicalOr = 43;
|
|
48
|
+
static readonly Addition = 44;
|
|
49
|
+
static readonly Minus = 45;
|
|
50
|
+
static readonly Divide = 46;
|
|
51
|
+
static readonly Multiply = 47;
|
|
52
|
+
static readonly Modulus = 48;
|
|
53
|
+
static readonly AdditionAssign = 49;
|
|
54
|
+
static readonly MinusAssign = 50;
|
|
55
|
+
static readonly DivideAssign = 51;
|
|
56
|
+
static readonly MultiplyAssign = 52;
|
|
57
|
+
static readonly ModulusAssign = 53;
|
|
58
|
+
static readonly ANNOTATION_START = 54;
|
|
59
|
+
static readonly OPEN_PAREN = 55;
|
|
60
|
+
static readonly CLOSE_PAREN = 56;
|
|
61
|
+
static readonly NOT_CONNECTED = 57;
|
|
62
|
+
static readonly BOOLEAN_VALUE = 58;
|
|
63
|
+
static readonly ID = 59;
|
|
64
|
+
static readonly INTEGER_VALUE = 60;
|
|
65
|
+
static readonly DECIMAL_VALUE = 61;
|
|
66
|
+
static readonly NUMERIC_VALUE = 62;
|
|
67
|
+
static readonly STRING_VALUE = 63;
|
|
68
|
+
static readonly PERCENTAGE_VALUE = 64;
|
|
69
|
+
static readonly ALPHA_NUMERIC = 65;
|
|
70
|
+
static readonly WS = 66;
|
|
71
|
+
static readonly NEWLINE = 67;
|
|
72
|
+
static readonly COMMENT = 68;
|
|
73
|
+
static readonly INDENT = 69;
|
|
74
|
+
static readonly DEDENT = 70;
|
|
74
75
|
static readonly RULE_script = 0;
|
|
75
76
|
static readonly RULE_expression = 1;
|
|
76
77
|
static readonly RULE_flow_expressions = 2;
|
|
@@ -885,9 +886,34 @@ export declare class Point_exprContext extends antlr.ParserRuleContext {
|
|
|
885
886
|
}
|
|
886
887
|
export declare class Import_exprContext extends antlr.ParserRuleContext {
|
|
887
888
|
constructor(parent: antlr.ParserRuleContext | null, invokingState: number);
|
|
889
|
+
get ruleIndex(): number;
|
|
890
|
+
copyFrom(ctx: Import_exprContext): void;
|
|
891
|
+
}
|
|
892
|
+
export declare class Import_specificContext extends Import_exprContext {
|
|
893
|
+
_moduleName?: Token | null;
|
|
894
|
+
_ID?: Token | null;
|
|
895
|
+
_funcNames: antlr.Token[];
|
|
896
|
+
constructor(ctx: Import_exprContext);
|
|
897
|
+
From(): antlr.TerminalNode;
|
|
898
|
+
Import(): antlr.TerminalNode;
|
|
899
|
+
ID(): antlr.TerminalNode[];
|
|
900
|
+
ID(i: number): antlr.TerminalNode | null;
|
|
901
|
+
accept<Result>(visitor: CircuitScriptVisitor<Result>): Result | null;
|
|
902
|
+
}
|
|
903
|
+
export declare class Import_all_simpleContext extends Import_exprContext {
|
|
904
|
+
_moduleName?: Token | null;
|
|
905
|
+
constructor(ctx: Import_exprContext);
|
|
906
|
+
From(): antlr.TerminalNode;
|
|
907
|
+
Import(): antlr.TerminalNode;
|
|
908
|
+
Multiply(): antlr.TerminalNode;
|
|
909
|
+
ID(): antlr.TerminalNode;
|
|
910
|
+
accept<Result>(visitor: CircuitScriptVisitor<Result>): Result | null;
|
|
911
|
+
}
|
|
912
|
+
export declare class Import_simpleContext extends Import_exprContext {
|
|
913
|
+
_moduleName?: Token | null;
|
|
914
|
+
constructor(ctx: Import_exprContext);
|
|
888
915
|
Import(): antlr.TerminalNode;
|
|
889
916
|
ID(): antlr.TerminalNode;
|
|
890
|
-
get ruleIndex(): number;
|
|
891
917
|
accept<Result>(visitor: CircuitScriptVisitor<Result>): Result | null;
|
|
892
918
|
}
|
|
893
919
|
export declare class Frame_exprContext extends antlr.ParserRuleContext {
|
|
@@ -71,7 +71,9 @@ import { Wire_expr_direction_onlyContext } from "./CircuitScriptParser.js";
|
|
|
71
71
|
import { Wire_exprContext } from "./CircuitScriptParser.js";
|
|
72
72
|
import { Array_exprContext } from "./CircuitScriptParser.js";
|
|
73
73
|
import { Point_exprContext } from "./CircuitScriptParser.js";
|
|
74
|
-
import {
|
|
74
|
+
import { Import_simpleContext } from "./CircuitScriptParser.js";
|
|
75
|
+
import { Import_all_simpleContext } from "./CircuitScriptParser.js";
|
|
76
|
+
import { Import_specificContext } from "./CircuitScriptParser.js";
|
|
75
77
|
import { Frame_exprContext } from "./CircuitScriptParser.js";
|
|
76
78
|
import { If_exprContext } from "./CircuitScriptParser.js";
|
|
77
79
|
import { If_inner_exprContext } from "./CircuitScriptParser.js";
|
|
@@ -159,7 +161,9 @@ export declare class CircuitScriptVisitor<Result> extends AbstractParseTreeVisit
|
|
|
159
161
|
visitWire_expr?: (ctx: Wire_exprContext) => Result;
|
|
160
162
|
visitArray_expr?: (ctx: Array_exprContext) => Result;
|
|
161
163
|
visitPoint_expr?: (ctx: Point_exprContext) => Result;
|
|
162
|
-
|
|
164
|
+
visitImport_simple?: (ctx: Import_simpleContext) => Result;
|
|
165
|
+
visitImport_all_simple?: (ctx: Import_all_simpleContext) => Result;
|
|
166
|
+
visitImport_specific?: (ctx: Import_specificContext) => Result;
|
|
163
167
|
visitFrame_expr?: (ctx: Frame_exprContext) => Result;
|
|
164
168
|
visitIf_expr?: (ctx: If_exprContext) => Result;
|
|
165
169
|
visitIf_inner_expr?: (ctx: If_inner_exprContext) => Result;
|
package/dist/types/execute.d.ts
CHANGED
|
@@ -79,12 +79,12 @@ export declare class ExecutionContext {
|
|
|
79
79
|
resetBreakContextFunctionCalls(): void;
|
|
80
80
|
popBreakContext(): ParserRuleContext;
|
|
81
81
|
getBreakContext(): ParserRuleContext;
|
|
82
|
-
createFunction(functionName: string, __runFunc: CFunction, source?: ParserRuleContext, uniqueId?: string): void;
|
|
82
|
+
createFunction(namespace: string, functionName: string, __runFunc: CFunction, source?: ParserRuleContext, uniqueId?: string): void;
|
|
83
83
|
hasFunction(functionName: string): boolean;
|
|
84
84
|
getFunction(functionName: string): CFunctionEntry;
|
|
85
85
|
resolveVariable(executionStack: ExecutionContext[], idName: string, trailers?: string[]): AnyReference;
|
|
86
86
|
resolveTrailers(type: ReferenceTypes, item: any, trailers?: string[]): AnyReference;
|
|
87
|
-
callFunction(
|
|
87
|
+
callFunction(functionReference: AnyReference, functionParams: CallableParameter[], executionStack: ExecutionContext[], netNamespace: string): CFunctionResult;
|
|
88
88
|
mergeScope(childScope: ExecutionScope, namespace: string): ClassComponent[];
|
|
89
89
|
addWire(segments: [string, (number | UnitDimension)?][]): Wire;
|
|
90
90
|
addPoint(pointId: string, userDefined?: boolean): ComponentPin;
|
package/dist/types/globals.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export declare const TOOL_VERSION = "0.1.5";
|
|
2
2
|
export declare const Delimiter1 = "-";
|
|
3
3
|
export declare const DoubleDelimiter1 = "--";
|
|
4
|
+
export declare const BaseNamespace = "--.";
|
|
4
5
|
export declare enum GlobalNames {
|
|
5
6
|
__root = "--root",
|
|
6
7
|
symbol = "symbol"
|
|
@@ -82,6 +83,7 @@ export declare enum ReferenceTypes {
|
|
|
82
83
|
variable = "variable",
|
|
83
84
|
instance = "instance",
|
|
84
85
|
pinType = "pinType",
|
|
86
|
+
module = "module",
|
|
85
87
|
unknown = "unknown"
|
|
86
88
|
}
|
|
87
89
|
export declare enum BlockTypes {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ClassComponent } from './ClassComponent.js';
|
|
2
2
|
import { Net } from './Net.js';
|
|
3
|
-
import { CFunction, CFunctionEntry, ComponentPinNet, ComponentPinNetPair, ComponentPinWireId, ParseSymbolType, ValueType } from './types.js';
|
|
3
|
+
import { CFunction, CFunctionEntry, ComponentPinNet, ComponentPinNetPair, ComponentPinWireId, ImportedModule, ParseSymbolType, ValueType } from './types.js';
|
|
4
4
|
import { BlockTypes, LayoutDirection } from '../globals.js';
|
|
5
5
|
import { Wire, WireSegment } from './Wire.js';
|
|
6
6
|
import { Frame } from './Frame.js';
|
|
@@ -19,6 +19,7 @@ export declare class ExecutionScope {
|
|
|
19
19
|
symbols: Map<string, {
|
|
20
20
|
type: ParseSymbolType;
|
|
21
21
|
}>;
|
|
22
|
+
modules: Map<string, ImportedModule>;
|
|
22
23
|
blockStack: Map<number, BlockStackEntry>;
|
|
23
24
|
contextStack: ParserRuleContext[];
|
|
24
25
|
onPropertyHandler: OnPropertyHandler[];
|
|
@@ -59,6 +60,7 @@ export declare class ExecutionScope {
|
|
|
59
60
|
popOnPropertyHandler(): OnPropertyHandler;
|
|
60
61
|
triggerPropertyHandler(visitor: BaseVisitor, value: any, valueCtx: ParserRuleContext): void;
|
|
61
62
|
getInstances(): ClassComponent[];
|
|
63
|
+
copyTo(scope: ExecutionScope): void;
|
|
62
64
|
}
|
|
63
65
|
export declare enum SequenceAction {
|
|
64
66
|
To = "to",
|
|
@@ -8,16 +8,23 @@ import { PinId } from './PinDefinition.js';
|
|
|
8
8
|
export type CFunction = (args: CallableParameter[], options?: CFunctionOptions) => CFunctionResult;
|
|
9
9
|
export declare class CFunctionEntry {
|
|
10
10
|
name: string;
|
|
11
|
+
namespace: string;
|
|
12
|
+
originalNamespace: string;
|
|
11
13
|
execute: CFunction;
|
|
12
14
|
uniqueId?: string;
|
|
13
15
|
source?: ParserRuleContext;
|
|
14
|
-
constructor(name: string, execute: CFunction, source?: ParserRuleContext, uniqueId?: string);
|
|
16
|
+
constructor(namespace: string, name: string, execute: CFunction, source?: ParserRuleContext, uniqueId?: string);
|
|
15
17
|
toString(): string;
|
|
16
18
|
}
|
|
17
19
|
export type CFunctionOptions = {
|
|
18
20
|
netNamespace?: string;
|
|
19
21
|
functionCallIndex: number;
|
|
20
22
|
};
|
|
23
|
+
export type NewContextOptions = {
|
|
24
|
+
netNamespace?: string;
|
|
25
|
+
namespace?: string;
|
|
26
|
+
functionCallIndex: number;
|
|
27
|
+
};
|
|
21
28
|
export type CFunctionResult = [
|
|
22
29
|
executionContext: ExecutionContext,
|
|
23
30
|
result: ValueType | ClassComponent | null
|
|
@@ -113,3 +120,17 @@ export declare enum NetTypes {
|
|
|
113
120
|
Any = "any",
|
|
114
121
|
Source = "source"
|
|
115
122
|
}
|
|
123
|
+
export declare class ImportedModule {
|
|
124
|
+
moduleName: string;
|
|
125
|
+
context: ExecutionContext;
|
|
126
|
+
importHandlingFlag: ImportFunctionHandling;
|
|
127
|
+
specifiedImports: string[];
|
|
128
|
+
moduleNamespace: string;
|
|
129
|
+
moduleFilePath: string;
|
|
130
|
+
constructor(moduleName: string, moduleNamespace: string, moduleFilePath: string, context: ExecutionContext, flag: ImportFunctionHandling, specifiedImports: string[]);
|
|
131
|
+
}
|
|
132
|
+
export declare enum ImportFunctionHandling {
|
|
133
|
+
AllWithNamespace = "all-with-namespace",
|
|
134
|
+
AllMergeIntoNamespace = "all-merge-into-namespace",
|
|
135
|
+
SpecificMergeIntoNamespace = "specific-merge-into-namespace"
|
|
136
|
+
}
|
|
@@ -18,6 +18,7 @@ export declare class SymbolTable {
|
|
|
18
18
|
searchParentContext(executionContext: ExecutionContext, id: string): ExecutionContext | null;
|
|
19
19
|
clearUndefined(): void;
|
|
20
20
|
}
|
|
21
|
+
export declare function cloneSymbol(symbol: SymbolTableItemDefined): SymbolTableItemDefined;
|
|
21
22
|
export type SymbolTableItemDefined = {
|
|
22
23
|
id: string;
|
|
23
24
|
type: ParseSymbolType;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { TerminalNode, Token } from "antlr4ng";
|
|
2
|
-
import {
|
|
2
|
+
import { Assignment_exprContext, Atom_exprContext, Function_call_exprContext, ValueAtomExprContext, UnaryOperatorExprContext, MultiplyExprContext, AdditionExprContext, BinaryOperatorExprContext, DataExprContext, Function_def_exprContext, For_exprContext, Import_simpleContext, Import_all_simpleContext, Import_specificContext } from "../antlr/CircuitScriptParser.js";
|
|
3
3
|
import { ExecutionContext } from "../execute.js";
|
|
4
4
|
import { ComplexType, FunctionDefinedParameter } from "../objects/types.js";
|
|
5
5
|
import { SymbolTableItem } from "./SymbolTable.js";
|
|
@@ -16,7 +16,11 @@ export declare class SymbolValidatorVisitor extends BaseVisitor {
|
|
|
16
16
|
protected handleAtomSymbol(atom: TerminalNode): SymbolTableItem;
|
|
17
17
|
protected addSymbolInstance(symbol: SymbolTableItem, token: Token): void;
|
|
18
18
|
setSymbols(symbolTable: SymbolTable): void;
|
|
19
|
-
|
|
19
|
+
private importCommon;
|
|
20
|
+
visitImport_simple: (ctx: Import_simpleContext) => Promise<void>;
|
|
21
|
+
visitImport_all_simple: (ctx: Import_all_simpleContext) => Promise<void>;
|
|
22
|
+
visitImport_specific: (ctx: Import_specificContext) => Promise<void>;
|
|
23
|
+
private applyModuleImports;
|
|
20
24
|
visitAssignment_expr: (ctx: Assignment_exprContext) => ComplexType;
|
|
21
25
|
visitAtom_expr: (ctx: Atom_exprContext) => void;
|
|
22
26
|
visitFunction_call_expr: (ctx: Function_call_exprContext) => void;
|
package/dist/types/visitor.d.ts
CHANGED
|
@@ -4,10 +4,12 @@ import { PinTypes } from './objects/PinTypes.js';
|
|
|
4
4
|
import { ComponentPin, ComponentPinNet, ComponentPinNetPair } from './objects/types.js';
|
|
5
5
|
import { ExecutionWarning } from "./utils.js";
|
|
6
6
|
import { Net } from './objects/Net.js';
|
|
7
|
-
import { BaseVisitor } from './BaseVisitor.js';
|
|
7
|
+
import { BaseVisitor, OnErrorHandler } from './BaseVisitor.js';
|
|
8
8
|
import { ParserRuleContext } from 'antlr4ng';
|
|
9
9
|
import { Wire } from './objects/Wire.js';
|
|
10
|
+
import { NodeScriptEnvironment } from './environment.js';
|
|
10
11
|
export declare class ParserVisitor extends BaseVisitor {
|
|
12
|
+
constructor(silent: boolean | undefined, onErrorHandler: OnErrorHandler | null | undefined, environment: NodeScriptEnvironment);
|
|
11
13
|
componentCreationIndex: number;
|
|
12
14
|
creationCtx: Map<ClassComponent | Wire, ParserRuleContext>;
|
|
13
15
|
visitKeyword_assignment_expr: (ctx: Keyword_assignment_exprContext) => void;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "circuitscript",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.31",
|
|
4
4
|
"description": "Interpreter for the circuitscript language",
|
|
5
5
|
"homepage": "https://circuitscript.net",
|
|
6
6
|
"engines": {
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
],
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@types/big.js": "^6.2.2",
|
|
28
|
+
"@types/crypto-js": "^4.2.2",
|
|
28
29
|
"@types/figlet": "^1.5.8",
|
|
29
30
|
"@types/jest": "~29.5",
|
|
30
31
|
"@types/node": "~18",
|
|
@@ -49,6 +50,7 @@
|
|
|
49
50
|
"scripts": {
|
|
50
51
|
"start": "node build/src/main.js",
|
|
51
52
|
"clean": "rimraf coverage build tmp dist",
|
|
53
|
+
"compile": "npm run build",
|
|
52
54
|
"build": "npm run copy-assets ; npm run build:cjs ; npm run build:esm",
|
|
53
55
|
"build:cjs": "tsc -p tsconfig.cjs.json",
|
|
54
56
|
"build:release:cjs": "tsc -p tsconfig.release.cjs.json",
|
|
@@ -86,6 +88,7 @@
|
|
|
86
88
|
"antlr4ng": "^3.0.4",
|
|
87
89
|
"big.js": "^6.2.2",
|
|
88
90
|
"commander": "^11.1.0",
|
|
91
|
+
"crypto-js": "^4.2.0",
|
|
89
92
|
"express": "^4.18.2",
|
|
90
93
|
"figlet": "^1.7.0",
|
|
91
94
|
"lodash": "^4.17.21",
|