circuitscript 0.0.24 → 0.0.25

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 (63) hide show
  1. package/dist/cjs/BaseVisitor.js +487 -0
  2. package/dist/cjs/SemanticTokenVisitor.js +218 -0
  3. package/dist/cjs/SymbolValidatorVisitor.js +233 -0
  4. package/dist/cjs/antlr/CircuitScriptLexer.js +209 -195
  5. package/dist/cjs/antlr/CircuitScriptParser.js +2310 -2087
  6. package/dist/cjs/antlr/CircuitScriptVisitor.js +4 -3
  7. package/dist/cjs/draw_symbols.js +67 -22
  8. package/dist/cjs/execute.js +51 -53
  9. package/dist/cjs/geometry.js +28 -8
  10. package/dist/cjs/helpers.js +175 -5
  11. package/dist/cjs/index.js +2 -0
  12. package/dist/cjs/layout.js +8 -0
  13. package/dist/cjs/lexer.js +19 -22
  14. package/dist/cjs/main.js +6 -11
  15. package/dist/cjs/objects/ClassComponent.js +3 -0
  16. package/dist/cjs/objects/ExecutionScope.js +1 -0
  17. package/dist/cjs/objects/types.js +7 -1
  18. package/dist/cjs/parser.js +29 -258
  19. package/dist/cjs/validate.js +81 -0
  20. package/dist/cjs/visitor.js +529 -820
  21. package/dist/esm/BaseVisitor.mjs +488 -0
  22. package/dist/esm/SemanticTokenVisitor.mjs +215 -0
  23. package/dist/esm/SymbolValidatorVisitor.mjs +222 -0
  24. package/dist/esm/antlr/CircuitScriptLexer.mjs +184 -194
  25. package/dist/esm/antlr/CircuitScriptParser.mjs +2279 -2084
  26. package/dist/esm/antlr/CircuitScriptVisitor.mjs +8 -3
  27. package/dist/esm/draw_symbols.mjs +67 -22
  28. package/dist/esm/execute.mjs +50 -52
  29. package/dist/esm/geometry.mjs +28 -8
  30. package/dist/esm/helpers.mjs +165 -6
  31. package/dist/esm/index.mjs +2 -0
  32. package/dist/esm/layout.mjs +8 -0
  33. package/dist/esm/lexer.mjs +10 -10
  34. package/dist/esm/main.mjs +7 -12
  35. package/dist/esm/objects/ClassComponent.mjs +3 -0
  36. package/dist/esm/objects/ExecutionScope.mjs +1 -0
  37. package/dist/esm/objects/types.mjs +6 -0
  38. package/dist/esm/parser.mjs +25 -230
  39. package/dist/esm/validate.mjs +74 -0
  40. package/dist/esm/visitor.mjs +343 -640
  41. package/dist/types/BaseVisitor.d.ts +69 -0
  42. package/dist/types/SemanticTokenVisitor.d.ts +36 -0
  43. package/dist/types/SymbolValidatorVisitor.d.ts +61 -0
  44. package/dist/types/antlr/CircuitScriptLexer.d.ts +8 -7
  45. package/dist/types/antlr/CircuitScriptParser.d.ts +513 -469
  46. package/dist/types/antlr/CircuitScriptVisitor.d.ts +69 -59
  47. package/dist/types/draw_symbols.d.ts +9 -0
  48. package/dist/types/execute.d.ts +5 -8
  49. package/dist/types/geometry.d.ts +4 -0
  50. package/dist/types/helpers.d.ts +32 -1
  51. package/dist/types/index.d.ts +2 -0
  52. package/dist/types/lexer.d.ts +2 -2
  53. package/dist/types/objects/ExecutionScope.d.ts +4 -1
  54. package/dist/types/objects/types.d.ts +5 -0
  55. package/dist/types/parser.d.ts +15 -28
  56. package/dist/types/validate.d.ts +2 -0
  57. package/dist/types/visitor.d.ts +40 -95
  58. package/fonts/Inter-Bold.ttf +0 -0
  59. package/fonts/Inter-Regular.ttf +0 -0
  60. package/fonts/OpenSans-Regular.ttf +0 -0
  61. package/fonts/Roboto-Regular.ttf +0 -0
  62. package/libs/lib.cst +183 -0
  63. package/package.json +11 -6
@@ -0,0 +1,69 @@
1
+ import { Assignment_exprContext, Atom_exprContext, Blank_exprContext, Break_keywordContext, ExpressionContext, Function_args_exprContext, Function_call_exprContext, Function_exprContext, Function_return_exprContext, FunctionCallExprContext, Import_exprContext, ParametersContext, RoundedBracketsExprContext, ScriptContext, Value_exprContext, ValueAtomExprContext } from "./antlr/CircuitScriptParser";
2
+ import { CircuitScriptVisitor } from "./antlr/CircuitScriptVisitor";
3
+ import { ExecutionContext } from "./execute";
4
+ import { Logger } from "./logger";
5
+ import { ClassComponent } from "./objects/ClassComponent";
6
+ import { Net } from "./objects/Net";
7
+ import { CallableParameter, CFunctionOptions, ComplexType, FunctionDefinedParameter, ReferenceType } from "./objects/types";
8
+ import { ParserRuleContext } from 'antlr4ng';
9
+ export declare class BaseVisitor extends CircuitScriptVisitor<ComplexType | ReferenceType | any> {
10
+ indentLevel: number;
11
+ startingContext: ExecutionContext;
12
+ executionStack: ExecutionContext[];
13
+ silent: boolean;
14
+ logger: Logger;
15
+ currentDirectory: string;
16
+ defaultLibsPath: string;
17
+ printStream: string[];
18
+ printToConsole: boolean;
19
+ acceptedDirections: string[];
20
+ acceptedFlip: string[];
21
+ protected resultData: Map<ParserRuleContext, any>;
22
+ protected paramData: Map<ParserRuleContext, any>;
23
+ pinTypesList: string[];
24
+ onErrorCallbackHandler: OnErrorCallback | null;
25
+ onImportFile: (visitor: BaseVisitor, filePath: string) => {
26
+ hasError: boolean;
27
+ hasParseError: boolean;
28
+ };
29
+ constructor(silent: boolean | undefined, onErrorHandler: OnErrorCallback | null | undefined, currentDirectory: string | null, defaultLibsPath: string);
30
+ getExecutor(): ExecutionContext;
31
+ protected setupPrintFunction(context: ExecutionContext): void;
32
+ createNetResolver(executionStack: ExecutionContext[]): (netName: string, netNamespace: string) => {
33
+ found: boolean;
34
+ net?: Net;
35
+ };
36
+ log(...params: any[]): void;
37
+ log2(message: string): void;
38
+ visitScript: (ctx: ScriptContext) => void;
39
+ visitAssignment_expr: (ctx: Assignment_exprContext) => void;
40
+ visitAtom_expr: (ctx: Atom_exprContext) => void;
41
+ visitFunctionCallExpr: (ctx: FunctionCallExprContext) => void;
42
+ visitFunction_call_expr: (ctx: Function_call_exprContext) => void;
43
+ visitValue_expr: (ctx: Value_exprContext) => void;
44
+ visitBlank_expr: (ctx: Blank_exprContext) => void;
45
+ visitValueAtomExpr: (ctx: ValueAtomExprContext) => void;
46
+ visitFunction_args_expr: (ctx: Function_args_exprContext) => void;
47
+ visitParameters: (ctx: ParametersContext) => void;
48
+ visitImport_expr: (ctx: Import_exprContext) => void;
49
+ visitFunction_return_expr: (ctx: Function_return_exprContext) => void;
50
+ visitBreak_keyword: (ctx: Break_keywordContext) => void;
51
+ protected setResult(ctx: ParserRuleContext, value: any): void;
52
+ protected getResult(ctx: ParserRuleContext): any;
53
+ protected setParam(ctx: ParserRuleContext, value: any): void;
54
+ protected getParam(ctx: ParserRuleContext): any;
55
+ protected hasParam(ctx: ParserRuleContext): boolean;
56
+ protected handleImportFile(name: string, throwErrors?: boolean): {
57
+ hasError: boolean;
58
+ hasParseError: boolean;
59
+ pathExists: boolean;
60
+ };
61
+ visitRoundedBracketsExpr: (ctx: RoundedBracketsExprContext) => void;
62
+ protected setupDefinedParameters(funcDefinedParameters: FunctionDefinedParameter[], passedInParameters: CallableParameter[], executor: ExecutionContext): void;
63
+ protected runExpressions(executor: ExecutionContext, expressions: ExpressionContext[] | Function_exprContext[]): ComplexType;
64
+ protected getNetNamespace(executorNetNamespace: string, passedNetNamespace: string | null): string;
65
+ protected setInstanceParam(object: ClassComponent, trailers: string[], value: any): void;
66
+ protected enterNewChildContext(executionStack: ExecutionContext[], parentContext: ExecutionContext, executionContextName: string, options: CFunctionOptions, funcDefinedParameters: FunctionDefinedParameter[], passedInParameters: CallableParameter[]): ExecutionContext;
67
+ protected prepareStringValue(value: string): string;
68
+ }
69
+ export type OnErrorCallback = (line: number, column: number, message: string, e: any | undefined) => void;
@@ -0,0 +1,36 @@
1
+ import { TerminalNode, Token } from "antlr4ng";
2
+ import { CircuitScriptLexer } from "./antlr/CircuitScriptLexer";
3
+ import { Function_def_exprContext, Create_component_exprContext, Create_graphic_exprContext, Atom_exprContext, Property_key_exprContext, Sub_exprContext, ValueAtomExprContext, Assignment_exprContext, Import_exprContext, Function_args_exprContext, Function_call_exprContext } from "./antlr/CircuitScriptParser";
4
+ import { BaseVisitor, OnErrorCallback } from "./BaseVisitor";
5
+ export declare class SemanticTokensVisitor extends BaseVisitor {
6
+ parsedTokens: IParsedToken[];
7
+ lexer: CircuitScriptLexer;
8
+ script: string;
9
+ semanticTokens: Map<string, IParsedToken>;
10
+ constructor(silent: boolean | undefined, onErrorHandler: OnErrorCallback | null | undefined, currentDirectory: string | null, defaultsLibsPath: string, lexer: CircuitScriptLexer, script: string);
11
+ visitFunction_args_expr: (ctx: Function_args_exprContext) => void;
12
+ visitFunction_call_expr: (ctx: Function_call_exprContext) => void;
13
+ visitFunction_def_expr: (ctx: Function_def_exprContext) => void;
14
+ visitCreate_component_expr: (ctx: Create_component_exprContext) => void;
15
+ visitCreate_graphic_expr: (ctx: Create_graphic_exprContext) => void;
16
+ visitProperty_key_expr: (ctx: Property_key_exprContext) => void;
17
+ visitSub_expr: (ctx: Sub_exprContext) => void;
18
+ visitValueAtomExpr: (ctx: ValueAtomExprContext) => void;
19
+ visitAssignment_expr: (ctx: Assignment_exprContext) => void;
20
+ visitAtom_expr: (ctx: Atom_exprContext) => void;
21
+ visitImport_expr: (ctx: Import_exprContext) => void;
22
+ addSemanticToken(node: TerminalNode, modifiers: string[], tokenType?: string | null): void;
23
+ parseToken(node: TerminalNode, modifiers: string[], tokenType?: string | null): IParsedToken;
24
+ dumpTokens(): void;
25
+ getTokens(): Map<string, IParsedToken>;
26
+ }
27
+ export interface IParsedToken {
28
+ line: number;
29
+ column: number;
30
+ length: number;
31
+ tokenType: string;
32
+ tokenModifiers: string[];
33
+ textValue: string;
34
+ path: string;
35
+ }
36
+ export declare function prepareTokens(tokens: Token[], lexer: CircuitScriptLexer, script: string): IParsedToken[];
@@ -0,0 +1,61 @@
1
+ import { TerminalNode } from "antlr4ng";
2
+ import { AdditionExprContext, Assignment_exprContext, Atom_exprContext, BinaryOperatorExprContext, DataExprContext, Function_call_exprContext, Function_def_exprContext, Import_exprContext, MultiplyExprContext, UnaryOperatorExprContext, ValueAtomExprContext } from "./antlr/CircuitScriptParser.js";
3
+ import { BaseVisitor } from "./BaseVisitor.js";
4
+ import { ExecutionContext } from "./execute.js";
5
+ import { ComplexType, FunctionDefinedParameter, ParseSymbolType, ValueType } from "./objects/types.js";
6
+ export declare class SymbolValidatorVisitor extends BaseVisitor {
7
+ symbolTable: SymbolTable;
8
+ protected addSymbolVariable(name: string, value: ComplexType, executor?: ExecutionContext | null): void;
9
+ protected addSymbolFunction(functionName: string, funcDefinedParameters: FunctionDefinedParameter[]): void;
10
+ protected handleAtomSymbol(atom: TerminalNode): SymbolTableItem;
11
+ setSymbols(symbolTable: SymbolTable): void;
12
+ visitImport_expr: (ctx: Import_exprContext) => void;
13
+ visitAssignment_expr: (ctx: Assignment_exprContext) => ComplexType;
14
+ visitAtom_expr: (ctx: Atom_exprContext) => void;
15
+ visitFunction_call_expr: (ctx: Function_call_exprContext) => void;
16
+ visitValueAtomExpr: (ctx: ValueAtomExprContext) => void;
17
+ visitUnaryOperatorExpr: (ctx: UnaryOperatorExprContext) => void;
18
+ visitMultiplyExpr: (ctx: MultiplyExprContext) => void;
19
+ visitAdditionExpr: (ctx: AdditionExprContext) => void;
20
+ visitBinaryOperatorExpr: (ctx: BinaryOperatorExprContext) => void;
21
+ visitDataExpr: (ctx: DataExprContext) => void;
22
+ visitFunction_def_expr: (ctx: Function_def_exprContext) => void;
23
+ getSymbols(): SymbolTable;
24
+ dumpSymbols(): void;
25
+ }
26
+ export declare class SymbolValidatorResolveVisitor extends SymbolValidatorVisitor {
27
+ protected addSymbolVariable(name: string, value: ComplexType): void;
28
+ protected addSymbolFunction(functionName: string, funcDefinedParameters: FunctionDefinedParameter[]): void;
29
+ }
30
+ type SymbolTableItem = {
31
+ id: string;
32
+ type: ParseSymbolType;
33
+ context: ExecutionContext;
34
+ extra: SymbolTableItemExtra;
35
+ } | {
36
+ type: ParseSymbolType.Undefined;
37
+ extra: SymbolTableItemExtra;
38
+ };
39
+ type SymbolTableItemExtra = {
40
+ funcDefinedParameters?: FunctionDefinedParameter[];
41
+ variableValue?: SymbolTableItem | ValueType | null;
42
+ node?: TerminalNode;
43
+ };
44
+ export declare class SymbolTable {
45
+ protected symbols: Map<string, SymbolTableItem>;
46
+ executonContextsNamespaces: string[];
47
+ getSymbols(): Map<string, SymbolTableItem>;
48
+ addFunction(executionContext: ExecutionContext, id: string, funcDefinedParameters: FunctionDefinedParameter[]): SymbolTableItem;
49
+ addVariable(executionContext: ExecutionContext, id: string, variableValue: SymbolTableItem | ValueType | null): SymbolTableItem;
50
+ addUndefined(executionContext: ExecutionContext, id: string, node: TerminalNode): SymbolTableItem;
51
+ protected add(executionContext: ExecutionContext, id: string, type: ParseSymbolType, extra: SymbolTableItemExtra): SymbolTableItem;
52
+ protected idName(executionContext: ExecutionContext, id: string): string;
53
+ dumpSymbols(): void;
54
+ exists(executionContext: ExecutionContext, id: string): boolean;
55
+ existsAny(executionContext: ExecutionContext, id: string): boolean;
56
+ get(executionContext: ExecutionContext, id: string): SymbolTableItem;
57
+ getParentContexts(executionContext: ExecutionContext, contextsNamespace: string[]): string[];
58
+ searchParentContext(executionContext: ExecutionContext, id: string): ExecutionContext | null;
59
+ clearUndefined(): void;
60
+ }
61
+ export {};
@@ -1,5 +1,5 @@
1
- import { ATN, CharStream, DFA, Lexer, RuleContext } from "antlr4";
2
- export default class CircuitScriptLexer extends Lexer {
1
+ import * as antlr from "antlr4ng";
2
+ export declare class CircuitScriptLexer extends antlr.Lexer {
3
3
  static readonly T__0 = 1;
4
4
  static readonly T__1 = 2;
5
5
  static readonly T__2 = 3;
@@ -46,13 +46,12 @@ export default class CircuitScriptLexer extends Lexer {
46
46
  static readonly WS = 44;
47
47
  static readonly NEWLINE = 45;
48
48
  static readonly COMMENT = 46;
49
- static readonly EOF: number;
50
49
  static readonly channelNames: string[];
51
50
  static readonly literalNames: (string | null)[];
52
51
  static readonly symbolicNames: (string | null)[];
53
52
  static readonly modeNames: string[];
54
53
  static readonly ruleNames: string[];
55
- constructor(input: CharStream);
54
+ constructor(input: antlr.CharStream);
56
55
  get grammarFileName(): string;
57
56
  get literalNames(): (string | null)[];
58
57
  get symbolicNames(): (string | null)[];
@@ -60,12 +59,14 @@ export default class CircuitScriptLexer extends Lexer {
60
59
  get serializedATN(): number[];
61
60
  get channelNames(): string[];
62
61
  get modeNames(): string[];
63
- action(localctx: RuleContext, ruleIndex: number, actionIndex: number): void;
62
+ action(localContext: antlr.ParserRuleContext | null, ruleIndex: number, actionIndex: number): void;
64
63
  private OPEN_PAREN_action;
65
64
  private CLOSE_PAREN_action;
66
65
  private NEWLINE_action;
67
66
  static readonly _serializedATN: number[];
68
67
  private static __ATN;
69
- static get _ATN(): ATN;
70
- static DecisionsToDFA: DFA[];
68
+ static get _ATN(): antlr.ATN;
69
+ private static readonly vocabulary;
70
+ get vocabulary(): antlr.Vocabulary;
71
+ private static readonly decisionsToDFA;
71
72
  }