circuitscript 0.3.2 → 0.4.0

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 (147) hide show
  1. package/dist/cjs/BaseVisitor.js +394 -262
  2. package/dist/cjs/LexerDiagnosticListener.js +375 -0
  3. package/dist/cjs/{ComponentAnnotater.js → annotate/ComponentAnnotater.js} +29 -15
  4. package/dist/cjs/annotate/DefaultPostAnnotationCallback.js +126 -0
  5. package/dist/cjs/{RefdesAnnotationVisitor.js → annotate/RefdesAnnotationVisitor.js} +8 -82
  6. package/dist/cjs/annotate/utils.js +70 -0
  7. package/dist/cjs/antlr/CircuitScriptLexer.js +279 -286
  8. package/dist/cjs/antlr/CircuitScriptParser.js +1954 -3535
  9. package/dist/cjs/antlr/CircuitScriptParserVisitor.js +7 -0
  10. package/dist/cjs/cache/deserializer.js +34 -0
  11. package/dist/cjs/cache/hash.js +8 -0
  12. package/dist/cjs/cache/serializer.js +122 -0
  13. package/dist/cjs/cache/storage.js +45 -0
  14. package/dist/cjs/cache/types.js +4 -0
  15. package/dist/cjs/{environment.js → environment/environment.js} +18 -6
  16. package/dist/cjs/environment/esm-environment.js +21 -0
  17. package/dist/cjs/environment/helpers.js +8 -0
  18. package/dist/cjs/execute.js +49 -15
  19. package/dist/cjs/globals.js +9 -1
  20. package/dist/cjs/helpers.js +3 -485
  21. package/dist/cjs/importResolver.js +102 -0
  22. package/dist/cjs/index.js +7 -6
  23. package/dist/cjs/lexer.js +48 -12
  24. package/dist/cjs/main.js +14 -4
  25. package/dist/cjs/objects/ClassComponent.js +1 -1
  26. package/dist/cjs/objects/ExecutionScope.js +0 -1
  27. package/dist/cjs/objects/types.js +17 -1
  28. package/dist/cjs/parser.js +18 -4
  29. package/dist/cjs/pipeline.js +284 -0
  30. package/dist/cjs/regenerate-tests.js +4 -3
  31. package/dist/cjs/render/KiCadNetListOutputHandler.js +30 -0
  32. package/dist/cjs/render/PaperSizes.js +46 -0
  33. package/dist/cjs/{draw_symbols.js → render/draw_symbols.js} +58 -36
  34. package/dist/cjs/{export.js → render/export.js} +2 -2
  35. package/dist/cjs/{geometry.js → render/geometry.js} +5 -5
  36. package/dist/cjs/{graph.js → render/graph.js} +7 -7
  37. package/dist/cjs/{layout.js → render/layout.js} +8 -8
  38. package/dist/cjs/{render.js → render/render.js} +9 -8
  39. package/dist/cjs/rules-check/no-connect-on-connected-pin.js +1 -1
  40. package/dist/cjs/rules-check/unconnected-pins.js +1 -1
  41. package/dist/cjs/{SemanticTokenVisitor.js → semantic-tokens/SemanticTokenVisitor.js} +12 -14
  42. package/dist/cjs/semantic-tokens/getSemanticTokens.js +55 -0
  43. package/dist/cjs/sizing.js +2 -2
  44. package/dist/cjs/utils.js +2 -2
  45. package/dist/cjs/validate/SymbolValidatorResolveVisitor.js +6 -0
  46. package/dist/cjs/validate/SymbolValidatorVisitor.js +34 -39
  47. package/dist/cjs/validate/validateScript.js +54 -0
  48. package/dist/cjs/validate.js +5 -4
  49. package/dist/cjs/visitor.js +140 -204
  50. package/dist/esm/BaseVisitor.js +396 -264
  51. package/dist/esm/LexerDiagnosticListener.js +371 -0
  52. package/dist/esm/{ComponentAnnotater.js → annotate/ComponentAnnotater.js} +29 -15
  53. package/dist/esm/annotate/DefaultPostAnnotationCallback.js +122 -0
  54. package/dist/esm/{RefdesAnnotationVisitor.js → annotate/RefdesAnnotationVisitor.js} +8 -82
  55. package/dist/esm/annotate/utils.js +66 -0
  56. package/dist/esm/antlr/CircuitScriptLexer.js +279 -286
  57. package/dist/esm/antlr/CircuitScriptParser.js +1962 -3522
  58. package/dist/esm/antlr/{CircuitScriptVisitor.js → CircuitScriptParserVisitor.js} +14 -35
  59. package/dist/esm/cache/deserializer.js +30 -0
  60. package/dist/esm/cache/hash.js +4 -0
  61. package/dist/esm/cache/serializer.js +118 -0
  62. package/dist/esm/cache/storage.js +39 -0
  63. package/dist/esm/cache/types.js +1 -0
  64. package/dist/esm/{environment.js → environment/environment.js} +18 -6
  65. package/dist/esm/environment/esm-environment.js +17 -0
  66. package/dist/esm/environment/helpers.js +4 -0
  67. package/dist/esm/execute.js +49 -15
  68. package/dist/esm/globals.js +8 -0
  69. package/dist/esm/helpers.js +5 -474
  70. package/dist/esm/importResolver.js +96 -0
  71. package/dist/esm/index.js +7 -6
  72. package/dist/esm/lexer.js +51 -12
  73. package/dist/esm/main.js +13 -3
  74. package/dist/esm/objects/ClassComponent.js +1 -1
  75. package/dist/esm/objects/ExecutionScope.js +0 -1
  76. package/dist/esm/objects/types.js +21 -1
  77. package/dist/esm/parser.js +19 -5
  78. package/dist/esm/pipeline.js +276 -0
  79. package/dist/esm/regenerate-tests.js +3 -2
  80. package/dist/esm/render/KiCadNetListOutputHandler.js +20 -0
  81. package/dist/esm/render/PaperSizes.js +41 -0
  82. package/dist/esm/{draw_symbols.js → render/draw_symbols.js} +58 -36
  83. package/dist/esm/{export.js → render/export.js} +2 -2
  84. package/dist/esm/{geometry.js → render/geometry.js} +5 -5
  85. package/dist/esm/{graph.js → render/graph.js} +7 -7
  86. package/dist/esm/{layout.js → render/layout.js} +8 -8
  87. package/dist/esm/{render.js → render/render.js} +8 -7
  88. package/dist/esm/rules-check/no-connect-on-connected-pin.js +1 -1
  89. package/dist/esm/rules-check/unconnected-pins.js +1 -1
  90. package/dist/esm/{SemanticTokenVisitor.js → semantic-tokens/SemanticTokenVisitor.js} +12 -14
  91. package/dist/esm/semantic-tokens/getSemanticTokens.js +51 -0
  92. package/dist/esm/sizing.js +2 -2
  93. package/dist/esm/utils.js +2 -2
  94. package/dist/esm/validate/SymbolValidatorResolveVisitor.js +3 -0
  95. package/dist/esm/validate/SymbolValidatorVisitor.js +36 -41
  96. package/dist/esm/validate/validateScript.js +50 -0
  97. package/dist/esm/validate.js +4 -3
  98. package/dist/esm/visitor.js +142 -206
  99. package/dist/libs/std.cst +15 -19
  100. package/dist/types/BaseVisitor.d.ts +25 -18
  101. package/dist/types/BomGeneration.d.ts +1 -1
  102. package/dist/types/LexerDiagnosticListener.d.ts +85 -0
  103. package/dist/types/{ComponentAnnotater.d.ts → annotate/ComponentAnnotater.d.ts} +1 -1
  104. package/dist/types/annotate/DefaultPostAnnotationCallback.d.ts +7 -0
  105. package/dist/types/{RefdesAnnotationVisitor.d.ts → annotate/RefdesAnnotationVisitor.d.ts} +6 -8
  106. package/dist/types/annotate/utils.d.ts +6 -0
  107. package/dist/types/antlr/CircuitScriptLexer.d.ts +71 -70
  108. package/dist/types/antlr/CircuitScriptParser.d.ts +357 -515
  109. package/dist/types/antlr/{CircuitScriptVisitor.d.ts → CircuitScriptParserVisitor.d.ts} +27 -69
  110. package/dist/types/cache/deserializer.d.ts +5 -0
  111. package/dist/types/cache/hash.d.ts +1 -0
  112. package/dist/types/cache/serializer.d.ts +3 -0
  113. package/dist/types/cache/storage.d.ts +4 -0
  114. package/dist/types/cache/types.d.ts +20 -0
  115. package/dist/types/{environment.d.ts → environment/environment.d.ts} +5 -4
  116. package/dist/types/environment/esm-environment.d.ts +4 -0
  117. package/dist/types/environment/helpers.d.ts +2 -0
  118. package/dist/types/execute.d.ts +3 -2
  119. package/dist/types/globals.d.ts +1 -0
  120. package/dist/types/helpers.d.ts +31 -36
  121. package/dist/types/importResolver.d.ts +4 -0
  122. package/dist/types/index.d.ts +7 -6
  123. package/dist/types/lexer.d.ts +9 -5
  124. package/dist/types/objects/ClassComponent.d.ts +1 -1
  125. package/dist/types/objects/ExecutionScope.d.ts +1 -4
  126. package/dist/types/objects/types.d.ts +16 -2
  127. package/dist/types/parser.d.ts +9 -2
  128. package/dist/types/pipeline.d.ts +9 -0
  129. package/dist/types/render/KiCadNetListOutputHandler.d.ts +10 -0
  130. package/dist/types/render/PaperSizes.d.ts +12 -0
  131. package/dist/types/{draw_symbols.d.ts → render/draw_symbols.d.ts} +4 -4
  132. package/dist/types/{export.d.ts → render/export.d.ts} +1 -1
  133. package/dist/types/{geometry.d.ts → render/geometry.d.ts} +2 -2
  134. package/dist/types/{graph.d.ts → render/graph.d.ts} +6 -6
  135. package/dist/types/{layout.d.ts → render/layout.d.ts} +10 -10
  136. package/dist/types/{render.d.ts → render/render.d.ts} +1 -1
  137. package/dist/types/{SemanticTokenVisitor.d.ts → semantic-tokens/SemanticTokenVisitor.d.ts} +6 -6
  138. package/dist/types/semantic-tokens/getSemanticTokens.d.ts +6 -0
  139. package/dist/types/sizing.d.ts +1 -1
  140. package/dist/types/utils.d.ts +1 -1
  141. package/dist/types/validate/SymbolValidatorResolveVisitor.d.ts +3 -0
  142. package/dist/types/validate/SymbolValidatorVisitor.d.ts +8 -8
  143. package/dist/types/validate/validateScript.d.ts +3 -0
  144. package/dist/types/visitor.d.ts +8 -14
  145. package/libs/std.cst +15 -19
  146. package/package.json +3 -6
  147. package/dist/cjs/antlr/CircuitScriptVisitor.js +0 -7
@@ -1,4 +1,4 @@
1
- import { NetListItem } from "./visitor.js";
1
+ import { NetListItem } from "../visitor.js";
2
2
  export declare function generateKiCadNetList(netlist: NetListItem[]): {
3
3
  tree: SExp;
4
4
  missingFootprints: {
@@ -1,7 +1,7 @@
1
1
  import Flatten from '@flatten-js/core';
2
2
  import { Box } from '@svgdotjs/svg.js';
3
- import { NumericValue } from './objects/ParamDefinition.js';
4
- import { PinTypes } from './objects/PinTypes.js';
3
+ import { NumericValue } from '../objects/ParamDefinition.js';
4
+ import { PinTypes } from '../objects/PinTypes.js';
5
5
  import { SimplePoint } from './draw_symbols.js';
6
6
  export type Segment = Flatten.Segment;
7
7
  export type Polygon = Flatten.Polygon;
@@ -1,12 +1,12 @@
1
1
  import { Graph } from "@dagrejs/graphlib";
2
2
  import { SymbolPinDefintion } from "./draw_symbols.js";
3
3
  import { RenderFrame, RenderComponent, RenderWire } from "./layout.js";
4
- import { ClassComponent, ComponentUnit } from "./objects/ClassComponent.js";
5
- import { SequenceItem } from "./objects/ExecutionScope.js";
6
- import { Net } from "./objects/Net.js";
7
- import { Logger } from "./logger.js";
8
- import { ComponentPinNetPair } from "./objects/types.js";
9
- import { PinId } from "./objects/PinDefinition.js";
4
+ import { ClassComponent, ComponentUnit } from "../objects/ClassComponent.js";
5
+ import { SequenceItem } from "../objects/ExecutionScope.js";
6
+ import { Net } from "../objects/Net.js";
7
+ import { Logger } from "../logger.js";
8
+ import { ComponentPinNetPair } from "../objects/types.js";
9
+ import { PinId } from "../objects/PinDefinition.js";
10
10
  export declare class NetGraph {
11
11
  logger: Logger;
12
12
  constructor(logger: Logger);
@@ -1,15 +1,15 @@
1
1
  import { Graph } from '@dagrejs/graphlib';
2
2
  import { SymbolGraphic, SymbolText, SymbolDrawingCommands, SimplePoint } from "./draw_symbols.js";
3
- import { ClassComponent, ComponentUnit } from "./objects/ClassComponent.js";
4
- import { WireAutoDirection } from './globals.js';
5
- import { Wire, WireSegment } from './objects/Wire.js';
6
- import { Net } from './objects/Net.js';
7
- import { Logger } from './logger.js';
8
- import { Frame, FramePlotDirection } from './objects/Frame.js';
9
- import { BoundBox } from './utils.js';
10
- import { ComponentPinNetPair } from './objects/types.js';
11
- import { PinId } from './objects/PinDefinition.js';
12
- import { NumericValue } from './objects/ParamDefinition.js';
3
+ import { ClassComponent, ComponentUnit } from "../objects/ClassComponent.js";
4
+ import { WireAutoDirection } from '../globals.js';
5
+ import { Wire, WireSegment } from '../objects/Wire.js';
6
+ import { Net } from '../objects/Net.js';
7
+ import { Logger } from '../logger.js';
8
+ import { Frame, FramePlotDirection } from '../objects/Frame.js';
9
+ import { BoundBox } from '../utils.js';
10
+ import { ComponentPinNetPair } from '../objects/types.js';
11
+ import { PinId } from '../objects/PinDefinition.js';
12
+ import { NumericValue } from '../objects/ParamDefinition.js';
13
13
  export declare class LayoutEngine {
14
14
  logger: Logger;
15
15
  layoutWarnings: string[];
@@ -1,7 +1,7 @@
1
1
  /// <reference types="pdfkit" />
2
2
  import { Svg } from '@svgdotjs/svg.js';
3
3
  import { SheetFrame } from "./layout.js";
4
- import { Logger } from './logger.js';
4
+ import { Logger } from '../logger.js';
5
5
  export declare function renderSheetsToSVG(sheetFrames: SheetFrame[], logger: Logger): Svg;
6
6
  export declare function generateSvgOutput(canvas: Svg, zoomScale?: number): string;
7
7
  export declare function generatePdfOutput(doc: PDFKit.PDFDocument, canvas: Svg, sheetSize: string, sheetSizeDefined: boolean, zoomScale?: number): void;
@@ -1,8 +1,8 @@
1
1
  import { TerminalNode, Token } from "antlr4ng";
2
- import { CircuitScriptLexer } from "./antlr/CircuitScriptLexer.js";
3
- import { Function_def_exprContext, Create_component_exprContext, Create_graphic_exprContext, Atom_exprContext, Property_key_exprContext, ValueAtomExprContext, Assignment_exprContext, Import_exprContext, Function_args_exprContext, Function_call_exprContext, GraphicCommandExprContext, For_exprContext, Annotation_comment_exprContext, ScriptContext, Operator_assignment_exprContext } from "./antlr/CircuitScriptParser.js";
4
- import { BaseVisitor, OnErrorHandler } from "./BaseVisitor.js";
5
- import { NodeScriptEnvironment } from "./environment.js";
2
+ import { CircuitScriptLexer } from "../antlr/CircuitScriptLexer.js";
3
+ import { Function_def_exprContext, Create_component_exprContext, Create_graphic_exprContext, Callable_exprContext, Property_key_exprContext, Assignment_exprContext, Import_exprContext, Function_args_exprContext, GraphicCommandExprContext, For_exprContext, Annotation_comment_exprContext, ScriptContext, CreateExprContext } from "../antlr/CircuitScriptParser.js";
4
+ import { BaseVisitor, OnErrorHandler } from "../BaseVisitor.js";
5
+ import { NodeScriptEnvironment } from "../environment/environment.js";
6
6
  export declare class SemanticTokensVisitor extends BaseVisitor {
7
7
  parsedTokens: IParsedToken[];
8
8
  lexer: CircuitScriptLexer;
@@ -13,14 +13,14 @@ export declare class SemanticTokensVisitor extends BaseVisitor {
13
13
  visitFunction_args_expr: (ctx: Function_args_exprContext) => void;
14
14
  visitFunction_call_expr: (ctx: Function_call_exprContext) => void;
15
15
  visitFunction_def_expr: (ctx: Function_def_exprContext) => void;
16
+ visitCreateExpr: (ctx: CreateExprContext) => void;
16
17
  visitCreate_component_expr: (ctx: Create_component_exprContext) => void;
17
18
  visitCreate_graphic_expr: (ctx: Create_graphic_exprContext) => void;
18
19
  visitProperty_key_expr: (ctx: Property_key_exprContext) => void;
19
20
  visitGraphicCommandExpr: (ctx: GraphicCommandExprContext) => void;
20
21
  visitValueAtomExpr: (ctx: ValueAtomExprContext) => void;
21
22
  visitAssignment_expr: (ctx: Assignment_exprContext) => void;
22
- visitAtom_expr: (ctx: Atom_exprContext) => void;
23
- visitOperator_assignment_expr: (ctx: Operator_assignment_exprContext) => void;
23
+ visitCallable_expr: (ctx: Callable_exprContext) => void;
24
24
  visitImport_expr: (ctx: Import_exprContext) => void;
25
25
  visitFor_expr: (ctx: For_exprContext) => void;
26
26
  visitAnnotation_comment_expr: (ctx: Annotation_comment_exprContext) => void;
@@ -0,0 +1,6 @@
1
+ import { ScriptOptions } from "../helpers.js";
2
+ import { IParsedToken, SemanticTokensVisitor } from "./SemanticTokenVisitor.js";
3
+ export declare function getSemanticTokens(filePath: string, scriptData: string, options: ScriptOptions): Promise<{
4
+ visitor: SemanticTokensVisitor;
5
+ parsedTokens: IParsedToken[];
6
+ }>;
@@ -1,5 +1,5 @@
1
1
  import { Box, SVGTypeMapping } from '@svgdotjs/svg.js';
2
- import { HorizontalAlign, VerticalAlign } from './geometry.js';
2
+ import { HorizontalAlign, VerticalAlign } from './render/geometry.js';
3
3
  export declare function applyFontsToSVG(canvas: SVGTypeMapping): void;
4
4
  export declare function measureTextSize2(text: string, fontFamily: string, fontSize: number, fontWeight?: string, anchor?: HorizontalAlign, vanchor?: VerticalAlign): {
5
5
  width: number;
@@ -6,7 +6,7 @@ import { SequenceAction, SequenceItem } from './objects/ExecutionScope.js';
6
6
  import { BlockTypes } from './globals.js';
7
7
  import { DeclaredReference, AnyReference } from './objects/types.js';
8
8
  export declare class SimpleStopwatch {
9
- startTime: Date;
9
+ startTime: number;
10
10
  constructor();
11
11
  lap(): number;
12
12
  }
@@ -2,6 +2,9 @@ import { Token } from "antlr4ng";
2
2
  import { ComplexType, FunctionDefinedParameter } from "../objects/types.js";
3
3
  import { SymbolValidatorVisitor } from "./SymbolValidatorVisitor.js";
4
4
  export declare class SymbolValidatorResolveVisitor extends SymbolValidatorVisitor {
5
+ enableCacheImports: boolean;
6
+ enableCachedImportsRead: boolean;
7
+ enableCachedImportsWrite: boolean;
5
8
  protected addSymbolVariable(token: Token, name: string, value: ComplexType): void;
6
9
  protected addSymbolFunction(token: Token, functionName: string, funcDefinedParameters: FunctionDefinedParameter[]): void;
7
10
  }
@@ -1,11 +1,14 @@
1
1
  import { TerminalNode, Token } from "antlr4ng";
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";
2
+ import { Assignment_exprContext, CallableExprContext, UnaryOperatorExprContext, MultiplyExprContext, AdditionExprContext, BinaryOperatorExprContext, Function_def_exprContext, For_exprContext, Import_simpleContext, Import_specific_or_allContext, Create_graphic_exprContext } 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";
6
6
  import { SymbolTable } from "./SymbolTable.js";
7
7
  import { BaseVisitor } from "../BaseVisitor.js";
8
8
  export declare class SymbolValidatorVisitor extends BaseVisitor {
9
+ enableCacheImports: boolean;
10
+ enableCachedImportsRead: boolean;
11
+ enableCachedImportsWrite: boolean;
9
12
  symbolTable: SymbolTable;
10
13
  protected addSymbolVariable(token: Token, name: string, value: ComplexType, executor?: ExecutionContext | null): void;
11
14
  protected addSymbolFunction(token: Token, functionName: string, funcDefinedParameters: FunctionDefinedParameter[]): void;
@@ -13,21 +16,18 @@ export declare class SymbolValidatorVisitor extends BaseVisitor {
13
16
  protected addSymbolInstance(symbol: SymbolTableItem, token: Token): void;
14
17
  setSymbols(symbolTable: SymbolTable): void;
15
18
  private importCommon;
16
- visitImport_simple: (ctx: Import_simpleContext) => Promise<void>;
17
- visitImport_all_simple: (ctx: Import_all_simpleContext) => Promise<void>;
18
- visitImport_specific: (ctx: Import_specificContext) => Promise<void>;
19
+ visitImport_simple: (ctx: Import_simpleContext) => void;
20
+ visitImport_specific_or_all: (ctx: Import_specific_or_allContext) => void;
19
21
  private applyLibraryImports;
20
22
  visitAssignment_expr: (ctx: Assignment_exprContext) => ComplexType;
21
- visitAtom_expr: (ctx: Atom_exprContext) => void;
22
- visitFunction_call_expr: (ctx: Function_call_exprContext) => void;
23
- visitValueAtomExpr: (ctx: ValueAtomExprContext) => void;
23
+ visitCallableExpr: (ctx: CallableExprContext) => void;
24
24
  visitUnaryOperatorExpr: (ctx: UnaryOperatorExprContext) => void;
25
25
  visitMultiplyExpr: (ctx: MultiplyExprContext) => void;
26
26
  visitAdditionExpr: (ctx: AdditionExprContext) => void;
27
27
  visitBinaryOperatorExpr: (ctx: BinaryOperatorExprContext) => void;
28
- visitDataExpr: (ctx: DataExprContext) => void;
29
28
  visitFunction_def_expr: (ctx: Function_def_exprContext) => void;
30
29
  visitFor_expr: (ctx: For_exprContext) => void;
30
+ visitCreate_graphic_expr: (ctx: Create_graphic_exprContext) => void;
31
31
  getSymbols(): SymbolTable;
32
32
  dumpSymbols(): void;
33
33
  }
@@ -0,0 +1,3 @@
1
+ import { ScriptOptions } from "../helpers.js";
2
+ import { SymbolValidatorVisitor } from "./SymbolValidatorVisitor.js";
3
+ export declare function validateScript(filePath: string, scriptData: string, options: ScriptOptions): Promise<SymbolValidatorVisitor>;
@@ -1,4 +1,4 @@
1
- import { Add_component_exprContext, AdditionExprContext, At_blockContext, At_block_pin_exprContext, At_block_pin_expression_complexContext, At_block_pin_expression_simpleContext, At_component_exprContext, BinaryOperatorExprContext, Component_select_exprContext, Create_component_exprContext, Create_graphic_exprContext, DataExprContext, Data_expr_with_assignmentContext, Double_dot_property_set_exprContext, Frame_exprContext, Function_def_exprContext, Keyword_assignment_exprContext, MultiplyExprContext, Nested_propertiesContext, Net_namespace_exprContext, Pin_select_expr2Context, Pin_select_exprContext, Point_exprContext, Property_exprContext, Property_key_exprContext, Property_set_exprContext, Single_line_propertyContext, To_component_exprContext, Wire_exprContext, UnaryOperatorExprContext, Wire_expr_direction_onlyContext, Wire_expr_direction_valueContext, If_exprContext, If_inner_exprContext, LogicalOperatorExprContext, Nested_properties_innerContext, Expressions_blockContext, Create_module_exprContext, Property_block_exprContext, While_exprContext, For_exprContext, GraphicCommandExprContext, Graphic_expressions_blockContext, GraphicForExprContext, Graph_expressionsContext, Path_blockContext, Annotation_comment_exprContext, At_block_headerContext, Part_set_exprContext, Part_set_keyContext, Part_match_blockContext, Part_sub_exprContext, Part_value_exprContext, Part_condition_exprContext, Part_condition_key_only_exprContext } from './antlr/CircuitScriptParser.js';
1
+ import { Add_component_exprContext, AdditionExprContext, At_blockContext, At_block_pin_exprContext, At_component_exprContext, BinaryOperatorExprContext, Component_select_exprContext, Create_component_exprContext, Create_graphic_exprContext, Data_expr_with_assignmentContext, Double_dot_property_set_exprContext, Frame_exprContext, Function_def_exprContext, MultiplyExprContext, Nested_propertiesContext, Net_namespace_exprContext, Pin_select_exprContext, Point_exprContext, Property_exprContext, Property_key_exprContext, Single_line_propertyContext, To_component_exprContext, Wire_exprContext, UnaryOperatorExprContext, If_exprContext, If_inner_exprContext, LogicalOperatorExprContext, Expressions_blockContext, Create_module_exprContext, Property_block_exprContext, While_exprContext, For_exprContext, GraphicCommandExprContext, Graphic_expressions_blockContext, GraphicForExprContext, Graph_expressionsContext, Path_blockContext, Annotation_comment_exprContext, At_block_headerContext, Part_set_exprContext, Part_set_keyContext, Part_match_blockContext, Part_sub_exprContext, Part_value_exprContext, Part_condition_exprContext, CreateExprContext, Create_exprContext, Properties_blockContext } from './antlr/CircuitScriptParser.js';
2
2
  import { ClassComponent } from './objects/ClassComponent.js';
3
3
  import { PinTypes } from './objects/PinTypes.js';
4
4
  import { ComponentPin, ComponentPinNet, ComponentPinNetPair } from './objects/types.js';
@@ -7,12 +7,11 @@ import { Net } from './objects/Net.js';
7
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
+ import { NodeScriptEnvironment } from './environment/environment.js';
11
11
  export declare class ParserVisitor extends BaseVisitor {
12
12
  constructor(silent: boolean | undefined, onErrorHandler: OnErrorHandler | null | undefined, environment: NodeScriptEnvironment);
13
13
  componentCreationIndex: number;
14
- creationCtx: Map<ClassComponent | Wire, ParserRuleContext>;
15
- visitKeyword_assignment_expr: (ctx: Keyword_assignment_exprContext) => void;
14
+ creationCtx: Map<Wire | ClassComponent, ParserRuleContext>;
16
15
  visitPin_select_expr: (ctx: Pin_select_exprContext) => void;
17
16
  trackNewComponentCreated: (callback: () => void) => boolean;
18
17
  visitAdd_component_expr: (ctx: Add_component_exprContext) => void;
@@ -33,7 +32,7 @@ export declare class ParserVisitor extends BaseVisitor {
33
32
  visitProperty_block_expr: (ctx: Property_block_exprContext) => void;
34
33
  visitProperty_expr: (ctx: Property_exprContext) => void;
35
34
  visitSingle_line_property: (ctx: Single_line_propertyContext) => void;
36
- visitNested_properties_inner: (ctx: Nested_properties_innerContext) => void;
35
+ visitProperties_block: (ctx: Properties_blockContext) => void;
37
36
  visitNested_properties: (ctx: Nested_propertiesContext) => void;
38
37
  visitProperty_key_expr: (ctx: Property_key_exprContext) => void;
39
38
  visitData_expr_with_assignment: (ctx: Data_expr_with_assignmentContext) => void;
@@ -41,23 +40,18 @@ export declare class ParserVisitor extends BaseVisitor {
41
40
  private linkModuleSymbolWithContains;
42
41
  private placeModuleContains;
43
42
  visitUnaryOperatorExpr: (ctx: UnaryOperatorExprContext) => void;
44
- visitDataExpr: (ctx: DataExprContext) => void;
43
+ visitCreate_expr: (ctx: Create_exprContext) => void;
44
+ visitCreateExpr: (ctx: CreateExprContext) => void;
45
45
  visitBinaryOperatorExpr: (ctx: BinaryOperatorExprContext) => void;
46
46
  visitLogicalOperatorExpr: (ctx: LogicalOperatorExprContext) => void;
47
47
  visitMultiplyExpr: (ctx: MultiplyExprContext) => void;
48
48
  visitAdditionExpr: (ctx: AdditionExprContext) => void;
49
49
  visitFunction_def_expr: (ctx: Function_def_exprContext) => void;
50
- visitPin_select_expr2: (ctx: Pin_select_expr2Context) => void;
51
50
  visitAt_block_pin_expr: (ctx: At_block_pin_exprContext) => void;
52
51
  visitAt_block_header: (ctx: At_block_headerContext) => void;
53
52
  visitAt_block: (ctx: At_blockContext) => void;
54
- visitAt_block_pin_expression_simple: (ctx: At_block_pin_expression_simpleContext) => void;
55
- visitAt_block_pin_expression_complex: (ctx: At_block_pin_expression_complexContext) => void;
56
- visitWire_expr_direction_only: (ctx: Wire_expr_direction_onlyContext) => void;
57
- visitWire_expr_direction_value: (ctx: Wire_expr_direction_valueContext) => void;
58
53
  visitWire_expr: (ctx: Wire_exprContext) => void;
59
54
  visitPoint_expr: (ctx: Point_exprContext) => ComponentPin;
60
- visitProperty_set_expr: (ctx: Property_set_exprContext) => void;
61
55
  visitDouble_dot_property_set_expr: (ctx: Double_dot_property_set_exprContext) => void;
62
56
  visitExpressions_block: (ctx: Expressions_blockContext) => void;
63
57
  visitFrame_expr: (ctx: Frame_exprContext) => void;
@@ -74,8 +68,8 @@ export declare class ParserVisitor extends BaseVisitor {
74
68
  visitPart_set_key: (ctx: Part_set_keyContext) => void;
75
69
  visitPart_value_expr: (ctx: Part_value_exprContext) => void;
76
70
  visitPart_condition_expr: (ctx: Part_condition_exprContext) => void;
77
- visitPart_condition_key_only_expr: (ctx: Part_condition_key_only_exprContext) => void;
78
- checkLibraryHasRefdesFile(filePath: string): Promise<void>;
71
+ getPathRefdesFile(filePath: string): string;
72
+ checkLibraryInRefdesFile(filePath: string): void;
79
73
  private resolveDataExpr;
80
74
  private resolveDataValue;
81
75
  pinTypes: PinTypes[];
package/libs/std.cst CHANGED
@@ -4,10 +4,9 @@ def net(net_name, net_type = "any"):
4
4
  return create component:
5
5
  pins: 1
6
6
  copy: true
7
- angle: -90
8
7
  display: create graphic (params):
9
8
  hline: -50, 0, 100
10
- vpin: 1, 0, 50, -50, display_pin_id=false
9
+ vpin: 1, 0, 50, -50, display_id=false
11
10
  label: params.net_name, 0, -15, fontSize=50, anchor="middle"
12
11
  type: "net"
13
12
  params:
@@ -27,7 +26,7 @@ def label(value, anchor="left"):
27
26
  display: create graphic (params):
28
27
  textColor: "#222"
29
28
  label: params.value, 0, -10, fontSize=50, anchor=anchor
30
- pin: 1, 0, 0, 0, 0, display_pin_id=false
29
+ pin: 1, 0, 0, 0, 0, display_id=false
31
30
  type: "net"
32
31
  params:
33
32
  net_name: value
@@ -41,7 +40,7 @@ def port(value, portType="input"):
41
40
  display: create graphic (params):
42
41
  textColor: "#222"
43
42
  label: params.value, 0, 0, fontSize=40, anchor="left", vanchor="middle", portType=portType
44
- pin: 1, 0, 0, 0, 0, display_pin_id=false
43
+ pin: 1, 0, 0, 0, 0, display_id=false
45
44
  type: "port"
46
45
  params:
47
46
  net_name: value
@@ -56,8 +55,8 @@ def res(value):
56
55
  pins: 2
57
56
  display: create graphic (params):
58
57
  crect: 0, 0, width, height
59
- hpin: 1, -width/2 - 30, 0, 30
60
- hpin: 2, width/2 + 30, 0, -30
58
+ hpin: 1, -width/2 - 30, 0, 30, display_id=false
59
+ hpin: 2, width/2 + 30, 0, -30, display_id=false
61
60
  label: params.refdes, -width/2, -height/2 - 20, fontSize=50, anchor="left"
62
61
  label: params.value, 0, 0, fontSize=30, anchor="middle", vanchor="middle"
63
62
  type: "res"
@@ -73,13 +72,12 @@ def cap(value):
73
72
 
74
73
  return create component:
75
74
  pins: 2
76
- angle: 90
77
75
  display: create graphic (params):
78
76
  lineWidth: 13
79
77
  hline: -width/2, 20, width
80
78
  hline: -width/2, -20, width
81
- vpin: 1, 0, -100, 80
82
- vpin: 2, 0, 100, -80
79
+ vpin: 1, 0, -100, 80, display_id=false
80
+ vpin: 2, 0, 100, -80, display_id=false
83
81
  label: params.refdes, 80, -30, fontSize=50, anchor="left", vanchor="middle"
84
82
  label: params.value, 80, 30, fontSize=50, anchor = "left", vanchor="middle"
85
83
  type: "cap"
@@ -100,8 +98,8 @@ def ind(value):
100
98
  arc: -25, 0, 25, 180, 360
101
99
  arc: 25, 0, 25, 180, 360
102
100
  arc: 75, 0, 25, 180, 360
103
- hpin: 1, -width/2 - 100, 0, 100
104
- hpin: 2, width/2 + 100, 0, -100
101
+ hpin: 1, -width/2 - 100, 0, 100, display_id=false
102
+ hpin: 2, width/2 + 100, 0, -100, display_id=false
105
103
  label: (params.refdes, -width/2, -height/2 - 25 , fontSize=50, anchor="left")
106
104
  label: (params.value, 0, 50, fontSize=50, anchor="middle", vanchor="middle")
107
105
  params:
@@ -156,12 +154,11 @@ def cgnd():
156
154
  return create component:
157
155
  pins: 1
158
156
  copy: true
159
- angle: 90
160
157
  display: create graphic (params):
161
158
  hline: -15, 0, 30
162
159
  hline: -10, 5, 20
163
160
  hline: -5, 10, 10
164
- vpin: 1, 0, -10, 10, display_pin_id=false
161
+ vpin: 1, 0, -10, 10, display_id=false
165
162
  label: params.net_name, 0, 22, fontSize=50, anchor="middle"
166
163
  type: "net"
167
164
  params:
@@ -175,10 +172,9 @@ def dgnd(net_name="GND"):
175
172
  return create component:
176
173
  pins: 1
177
174
  copy: true
178
- angle: 90
179
175
  display: create graphic (params):
180
176
  triangle: 0, 0, 0, height, width
181
- vpin: 1, 0, -50, 50, display_pin_id=false
177
+ vpin: 1, 0, -50, 50, display_id=false
182
178
  label: params.net_name, 0, height + 50, fontSize=50, anchor="middle", vanchor="middle"
183
179
  type: "net"
184
180
  params:
@@ -191,7 +187,7 @@ def text(value, offsetX = 0, offsetY = 0, fontSize = 50):
191
187
  followWireOrientation: false
192
188
  type: "graphic"
193
189
  display: create graphic:
194
- pin: 1, 0, 0, 0, 0, display_pin_id=false
190
+ pin: 1, 0, 0, 0, 0, display_id=false
195
191
  text:
196
192
  content: value
197
193
  offset: offsetX, offsetY
@@ -205,7 +201,7 @@ def marker_point():
205
201
  display: create graphic:
206
202
  hline: -5, 0, 10
207
203
  vline: 0, -5, 10
208
- pin: 1, 0, 0, 0, 0, display_pin_id=false
204
+ pin: 1, 0, 0, 0, 0, display_id=false
209
205
 
210
206
  def arrow_point():
211
207
  return create component:
@@ -215,7 +211,7 @@ def arrow_point():
215
211
  lineWidth: 2
216
212
  path: ("M", -10, -5, "L", -5, 0, "L", -10, 5)
217
213
  path: ("M", -5, 0, "L", -20, 0)
218
- hpin: 1, 0, 0, 0, display_pin_id=false
214
+ hpin: 1, 0, 0, 0, display_id=false
219
215
 
220
216
  def no_connect(size=20):
221
217
  return create component:
@@ -224,7 +220,7 @@ def no_connect(size=20):
224
220
  display: create graphic:
225
221
  path: "M", -size, -size, "L", size, size
226
222
  path: "M", -size, size, "L", size, -size
227
- pin: 1, 0, 0, 0, 0, display_pin_id=false
223
+ pin: 1, 0, 0, 0, 0, display_id=false
228
224
  params:
229
225
  no_connect: true
230
226
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "circuitscript",
3
- "version": "0.3.2",
3
+ "version": "0.4.0",
4
4
  "description": "Interpreter for the circuitscript language",
5
5
  "homepage": "https://circuitscript.net",
6
6
  "engines": {
@@ -67,7 +67,7 @@
67
67
  "prettier": "prettier --config .prettierrc --write .",
68
68
  "test:watch": "node --experimental-vm-modules node_modules/.bin/jest --watch",
69
69
  "antlr": "antlr4 -Dlanguage=TypeScript ./src/antlr/CircuitScript.g4 -no-listener -visitor",
70
- "antlr4ng": "npx antlr4ng -Dlanguage=TypeScript -o src/antlr -visitor -no-listener -Xexact-output-dir src/antlr/CircuitScript.g4",
70
+ "antlr4ng": "npx antlr4ng -Dlanguage=TypeScript -o src/antlr -visitor -no-listener -Xexact-output-dir src/antlr/CircuitScriptLexer.g4 src/antlr/CircuitScriptParser.g4",
71
71
  "profile": "node --prof build/src/main.js examples/example_garden_pump.cst",
72
72
  "profile-flame": "node --prof-process --preprocess -j isolate*.log | flamebearer",
73
73
  "server": "node server.js",
@@ -85,7 +85,7 @@
85
85
  "@fast-csv/format": "^5.0.5",
86
86
  "@flatten-js/core": "1.5.5",
87
87
  "@svgdotjs/svg.js": "3.2.0",
88
- "antlr4ng": "^3.0.4",
88
+ "antlr4ng": "^3.0.16",
89
89
  "big.js": "^6.2.2",
90
90
  "commander": "^11.1.0",
91
91
  "crypto-js": "^4.2.0",
@@ -100,9 +100,6 @@
100
100
  "tslib": "~2.5",
101
101
  "ws": "^8.14.2"
102
102
  },
103
- "volta": {
104
- "node": "18.12.1"
105
- },
106
103
  "auto-changelog": {
107
104
  "output": "CHANGELOG.md",
108
105
  "commitLimit": false,
@@ -1,7 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CircuitScriptVisitor = void 0;
4
- const antlr4ng_1 = require("antlr4ng");
5
- class CircuitScriptVisitor extends antlr4ng_1.AbstractParseTreeVisitor {
6
- }
7
- exports.CircuitScriptVisitor = CircuitScriptVisitor;