circuitscript 0.1.19 → 0.1.22

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 (50) hide show
  1. package/dist/cjs/BaseVisitor.js +22 -0
  2. package/dist/cjs/ComponentAnnotater.js +88 -0
  3. package/dist/cjs/RefdesAnnotationVisitor.js +197 -0
  4. package/dist/cjs/antlr/CircuitScriptLexer.js +202 -197
  5. package/dist/cjs/antlr/CircuitScriptParser.js +964 -831
  6. package/dist/cjs/environment.js +15 -1
  7. package/dist/cjs/execute.js +45 -2
  8. package/dist/cjs/graph.js +23 -2
  9. package/dist/cjs/helpers.js +21 -4
  10. package/dist/cjs/layout.js +3 -0
  11. package/dist/cjs/lexer.js +21 -9
  12. package/dist/cjs/main.js +13 -0
  13. package/dist/cjs/objects/ClassComponent.js +4 -1
  14. package/dist/cjs/objects/ExecutionScope.js +1 -0
  15. package/dist/cjs/parser.js +1 -0
  16. package/dist/cjs/visitor.js +119 -71
  17. package/dist/esm/BaseVisitor.js +22 -0
  18. package/dist/esm/ComponentAnnotater.js +84 -0
  19. package/dist/esm/RefdesAnnotationVisitor.js +196 -0
  20. package/dist/esm/antlr/CircuitScriptLexer.js +202 -197
  21. package/dist/esm/antlr/CircuitScriptParser.js +960 -829
  22. package/dist/esm/antlr/CircuitScriptVisitor.js +2 -0
  23. package/dist/esm/environment.js +15 -1
  24. package/dist/esm/execute.js +45 -2
  25. package/dist/esm/graph.js +23 -2
  26. package/dist/esm/helpers.js +21 -4
  27. package/dist/esm/layout.js +4 -0
  28. package/dist/esm/lexer.js +21 -9
  29. package/dist/esm/main.js +13 -0
  30. package/dist/esm/objects/ClassComponent.js +4 -1
  31. package/dist/esm/objects/ExecutionScope.js +1 -0
  32. package/dist/esm/parser.js +1 -0
  33. package/dist/esm/visitor.js +117 -69
  34. package/dist/types/BaseVisitor.d.ts +3 -0
  35. package/dist/types/ComponentAnnotater.d.ts +16 -0
  36. package/dist/types/RefdesAnnotationVisitor.d.ts +35 -0
  37. package/dist/types/antlr/CircuitScriptLexer.d.ts +15 -14
  38. package/dist/types/antlr/CircuitScriptParser.d.ts +80 -60
  39. package/dist/types/antlr/CircuitScriptVisitor.d.ts +4 -0
  40. package/dist/types/environment.d.ts +1 -0
  41. package/dist/types/execute.d.ts +8 -1
  42. package/dist/types/helpers.d.ts +6 -3
  43. package/dist/types/layout.d.ts +2 -0
  44. package/dist/types/lexer.d.ts +1 -1
  45. package/dist/types/objects/ClassComponent.d.ts +9 -0
  46. package/dist/types/objects/ExecutionScope.d.ts +2 -1
  47. package/dist/types/objects/types.d.ts +1 -0
  48. package/dist/types/parser.d.ts +2 -1
  49. package/dist/types/visitor.d.ts +8 -1
  50. package/package.json +1 -1
@@ -30,6 +30,10 @@ export declare class ExecutionContext {
30
30
  parentContext: ExecutionContext;
31
31
  componentAngleFollowsWire: boolean;
32
32
  warnings: ExecutionWarning[];
33
+ indexedStack: Map<ParserRuleContext, {
34
+ index: number;
35
+ funcCallIndex: Map<ParserRuleContext, number>;
36
+ }>;
33
37
  constructor(name: string, namespace: string, netNamespace: string, executionLevel: number | undefined, scopeLevel: number | undefined, silent: boolean | undefined, logger: Logger, warnings: ExecutionWarning[], parent: ExecutionContext);
34
38
  logWarning(message: string, context?: ParserRuleContext, fileName?: string): void;
35
39
  log(...params: any[]): void;
@@ -68,7 +72,10 @@ export declare class ExecutionContext {
68
72
  atPointBlock(): void;
69
73
  toPointBlock(): void;
70
74
  getPointBlockLocation(): [component: ClassComponent, pin: number, wireId: number];
75
+ getParentBreakContext(): null | ParserRuleContext;
71
76
  addBreakContext(ctx: ParserRuleContext): void;
77
+ setBreakContextIndex(index: number): void;
78
+ resetBreakContextFunctionCalls(): void;
72
79
  popBreakContext(): ParserRuleContext;
73
80
  getBreakContext(): ParserRuleContext;
74
81
  createFunction(functionName: string, __runFunc: CFunction, source?: ParserRuleContext, uniqueId?: string): void;
@@ -77,7 +84,7 @@ export declare class ExecutionContext {
77
84
  resolveVariable(executionStack: ExecutionContext[], idName: string, trailers?: string[]): AnyReference;
78
85
  resolveTrailers(type: ReferenceTypes, item: any, trailers?: string[]): AnyReference;
79
86
  callFunction(functionName: string, functionParams: CallableParameter[], executionStack: ExecutionContext[], netNamespace: string): CFunctionResult;
80
- mergeScope(childScope: ExecutionScope, namespace: string): void;
87
+ mergeScope(childScope: ExecutionScope, namespace: string): ClassComponent[];
81
88
  addWire(segments: [string, (number | UnitDimension)?][]): void;
82
89
  addPoint(pointId: string, userDefined?: boolean): ComponentPin;
83
90
  private getPointSymbol;
@@ -18,6 +18,9 @@ export type ScriptOptions = {
18
18
  dumpData: boolean;
19
19
  showStats: boolean;
20
20
  environment: NodeScriptEnvironment;
21
+ inputPath?: string;
22
+ updateSource: boolean;
23
+ saveAnnotatedCopy: string | boolean;
21
24
  };
22
25
  export declare function prepareFile(textData: string): {
23
26
  parser: CircuitScriptParser;
@@ -42,11 +45,11 @@ export declare function renderScriptCustom(scriptData: string, outputPath: strin
42
45
  export declare abstract class ParseOutputHandler {
43
46
  beforeRender: boolean;
44
47
  afterRender: boolean;
45
- abstract parse(visitor: ParserVisitor, outputPath: string | null, fileExtension: string | null): boolean;
48
+ abstract parse(visitor: ParserVisitor, outputPath: string | null, fileExtension: string | null, extra: any | null): boolean;
46
49
  }
47
50
  export declare class KiCadNetListOutputHandler extends ParseOutputHandler {
48
- beforeRender: boolean;
49
- parse(visitor: ParserVisitor, outputPath: string | null, fileExtension: string | null): boolean;
51
+ afterRender: boolean;
52
+ parse(visitor: ParserVisitor, outputPath: string | null, fileExtension: string | null, extra?: any): boolean;
50
53
  }
51
54
  export declare function detectJSModuleType(): JSModuleType;
52
55
  export declare class UnitDimension {
@@ -107,6 +107,7 @@ export declare class RenderText extends RenderObject {
107
107
  constructor(text: string);
108
108
  }
109
109
  export declare class RenderFrame extends RenderObject {
110
+ static FrameIdCounter: number;
110
111
  bounds: BoundBox | null;
111
112
  frame: Frame;
112
113
  innerItems: (RenderComponent | RenderFrame | RenderText)[];
@@ -121,6 +122,7 @@ export declare class RenderFrame extends RenderObject {
121
122
  subgraphId: string;
122
123
  renderType: RenderFrameType;
123
124
  containsTitle: boolean;
125
+ frameId: number;
124
126
  constructor(frame: Frame, type?: RenderFrameType);
125
127
  toString(): string;
126
128
  }
@@ -10,7 +10,7 @@ export declare class MainLexer extends CircuitScriptLexer {
10
10
  nextToken(): Token;
11
11
  createDedent(): Token;
12
12
  getCharIndex(): number;
13
- commonToken(type: number, text: string): Token;
13
+ commonToken(type: number, text: string, start?: number, stop?: number): Token;
14
14
  getIndentationCount(whitespace: string): number;
15
15
  atStartOfInput(): boolean;
16
16
  openBrace(): void;
@@ -1,3 +1,4 @@
1
+ import { ParserRuleContext } from 'antlr4ng';
1
2
  import { Expressions_blockContext } from 'src/antlr/CircuitScriptParser.js';
2
3
  import { SymbolDrawingCommands } from '../draw_symbols.js';
3
4
  import { Net } from './Net.js';
@@ -31,6 +32,9 @@ export declare class ClassComponent {
31
32
  useWireOrientationAngle: boolean;
32
33
  didSetWireOrientationAngle: boolean;
33
34
  assignedRefDes: string | null;
35
+ placeHolderRefDes: string | null;
36
+ ctxReferences: CtxReference[];
37
+ _creationIndex: number;
34
38
  constructor(instanceName: string, numPins: number);
35
39
  setupPins(): void;
36
40
  getDefaultPin(): PinId;
@@ -55,3 +59,8 @@ export declare class ModuleComponent extends ClassComponent {
55
59
  moduleExecutionContextName?: string;
56
60
  modulePinIdToPortMap?: Map<number, ClassComponent>;
57
61
  }
62
+ export type CtxReference = {
63
+ ctx: ParserRuleContext;
64
+ indexedStack: [ParserRuleContext, number][];
65
+ creationFlag: boolean;
66
+ };
@@ -1,6 +1,6 @@
1
1
  import { ClassComponent } from './ClassComponent.js';
2
2
  import { Net } from './Net.js';
3
- import { CFunctionEntry, ComponentPinNet, ComponentPinNetPair, ComponentPinWireId, ParseSymbolType, ValueType } from './types.js';
3
+ import { CFunction, CFunctionEntry, ComponentPinNet, ComponentPinNetPair, ComponentPinWireId, 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';
@@ -14,6 +14,7 @@ export declare class ExecutionScope {
14
14
  private nets;
15
15
  instances: Map<string, ClassComponent>;
16
16
  functions: Map<string, CFunctionEntry>;
17
+ functionCounter: Map<CFunction, number>;
17
18
  variables: Map<string, ValueType | ClassComponent>;
18
19
  symbols: Map<string, {
19
20
  type: ParseSymbolType;
@@ -16,6 +16,7 @@ export declare class CFunctionEntry {
16
16
  }
17
17
  export type CFunctionOptions = {
18
18
  netNamespace?: string;
19
+ functionCallIndex: number;
19
20
  };
20
21
  export type CFunctionResult = [
21
22
  executionContext: ExecutionContext,
@@ -1,9 +1,10 @@
1
1
  import { CircuitScriptParser, ScriptContext } from './antlr/CircuitScriptParser.js';
2
- import { ANTLRErrorListener, ATNConfigSet, ATNSimulator, BitSet, DFA, Parser, RecognitionException, Recognizer, Token } from 'antlr4ng';
2
+ import { ANTLRErrorListener, ATNConfigSet, ATNSimulator, BitSet, CommonTokenStream, DFA, Parser, RecognitionException, Recognizer, Token } from 'antlr4ng';
3
3
  import { BaseVisitor, OnErrorHandler } from './BaseVisitor.js';
4
4
  export declare function parseFileWithVisitor(visitor: BaseVisitor, data: string): Promise<{
5
5
  tree: ScriptContext;
6
6
  parser: CircuitScriptParser;
7
+ tokens: CommonTokenStream;
7
8
  hasError: boolean;
8
9
  hasParseError: boolean;
9
10
  parserTimeTaken: number;
@@ -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 } from './antlr/CircuitScriptParser.js';
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 } 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,8 +7,10 @@ import { Net } from './objects/Net.js';
7
7
  import { BaseVisitor } from './BaseVisitor.js';
8
8
  import { ParserRuleContext } from 'antlr4ng';
9
9
  export declare class ParserVisitor extends BaseVisitor {
10
+ componentCreationIndex: number;
10
11
  visitKeyword_assignment_expr: (ctx: Keyword_assignment_exprContext) => void;
11
12
  visitPin_select_expr: (ctx: Pin_select_exprContext) => void;
13
+ trackNewComponentCreated: (callback: () => void) => boolean;
12
14
  visitAdd_component_expr: (ctx: Add_component_exprContext) => void;
13
15
  visitAt_component_expr: (ctx: At_component_exprContext) => ComponentPin;
14
16
  visitTo_component_expr: (ctx: To_component_exprContext) => ComponentPin;
@@ -40,6 +42,7 @@ export declare class ParserVisitor extends BaseVisitor {
40
42
  visitFunction_def_expr: (ctx: Function_def_exprContext) => void;
41
43
  visitPin_select_expr2: (ctx: Pin_select_expr2Context) => void;
42
44
  visitAt_block_pin_expr: (ctx: At_block_pin_exprContext) => void;
45
+ visitAt_block_header: (ctx: At_block_headerContext) => void;
43
46
  visitAt_block: (ctx: At_blockContext) => void;
44
47
  visitAt_block_pin_expression_simple: (ctx: At_block_pin_expression_simpleContext) => void;
45
48
  visitAt_block_pin_expression_complex: (ctx: At_block_pin_expression_complexContext) => void;
@@ -56,6 +59,7 @@ export declare class ParserVisitor extends BaseVisitor {
56
59
  visitIf_inner_expr: (ctx: If_inner_exprContext) => void;
57
60
  visitWhile_expr: (ctx: While_exprContext) => void;
58
61
  visitFor_expr: (ctx: For_exprContext) => void;
62
+ visitAnnotation_comment_expr: (ctx: Annotation_comment_exprContext) => void;
59
63
  private resolveDataExpr;
60
64
  private resolveDataValue;
61
65
  pinTypes: PinTypes[];
@@ -88,6 +92,9 @@ export declare class ParserVisitor extends BaseVisitor {
88
92
  private getPropertyExprList;
89
93
  getWarnings(): ExecutionWarning[];
90
94
  }
95
+ export declare const ComponentRefDesPrefixes: {
96
+ [key: string]: string;
97
+ };
91
98
  export type NetListItem = {
92
99
  instanceName: string;
93
100
  instance: ClassComponent;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "circuitscript",
3
- "version": "0.1.19",
3
+ "version": "0.1.22",
4
4
  "description": "Interpreter for the circuitscript language",
5
5
  "homepage": "https://circuitscript.net",
6
6
  "engines": {