@univerjs/engine-formula 0.1.0-alpha.1

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 (149) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +16 -0
  3. package/lib/cjs/index.js +8809 -0
  4. package/lib/esm/index.js +8800 -0
  5. package/lib/types/analysis/lexer-node.d.ts +49 -0
  6. package/lib/types/analysis/lexer-node.d.ts.map +1 -0
  7. package/lib/types/analysis/lexer.d.ts +84 -0
  8. package/lib/types/analysis/lexer.d.ts.map +1 -0
  9. package/lib/types/analysis/parser.d.ts +41 -0
  10. package/lib/types/analysis/parser.d.ts.map +1 -0
  11. package/lib/types/analysis/un-parser.d.ts +1 -0
  12. package/lib/types/analysis/un-parser.d.ts.map +1 -0
  13. package/lib/types/ast-node/ast-root-node.d.ts +13 -0
  14. package/lib/types/ast-node/ast-root-node.d.ts.map +1 -0
  15. package/lib/types/ast-node/base-ast-node-factory.d.ts +11 -0
  16. package/lib/types/ast-node/base-ast-node-factory.d.ts.map +1 -0
  17. package/lib/types/ast-node/base-ast-node.d.ts +57 -0
  18. package/lib/types/ast-node/base-ast-node.d.ts.map +1 -0
  19. package/lib/types/ast-node/function-node.d.ts +24 -0
  20. package/lib/types/ast-node/function-node.d.ts.map +1 -0
  21. package/lib/types/ast-node/index.d.ts +11 -0
  22. package/lib/types/ast-node/index.d.ts.map +1 -0
  23. package/lib/types/ast-node/lambda-node.d.ts +24 -0
  24. package/lib/types/ast-node/lambda-node.d.ts.map +1 -0
  25. package/lib/types/ast-node/lambda-parameter-node.d.ts +21 -0
  26. package/lib/types/ast-node/lambda-parameter-node.d.ts.map +1 -0
  27. package/lib/types/ast-node/node-type.d.ts +17 -0
  28. package/lib/types/ast-node/node-type.d.ts.map +1 -0
  29. package/lib/types/ast-node/null-node.d.ts +9 -0
  30. package/lib/types/ast-node/null-node.d.ts.map +1 -0
  31. package/lib/types/ast-node/operator-node.d.ts +21 -0
  32. package/lib/types/ast-node/operator-node.d.ts.map +1 -0
  33. package/lib/types/ast-node/prefix-node.d.ts +26 -0
  34. package/lib/types/ast-node/prefix-node.d.ts.map +1 -0
  35. package/lib/types/ast-node/reference-node.d.ts +28 -0
  36. package/lib/types/ast-node/reference-node.d.ts.map +1 -0
  37. package/lib/types/ast-node/suffix-node.d.ts +25 -0
  38. package/lib/types/ast-node/suffix-node.d.ts.map +1 -0
  39. package/lib/types/ast-node/union-node.d.ts +21 -0
  40. package/lib/types/ast-node/union-node.d.ts.map +1 -0
  41. package/lib/types/ast-node/value-node.d.ts +17 -0
  42. package/lib/types/ast-node/value-node.d.ts.map +1 -0
  43. package/lib/types/basics/cache-lru.d.ts +9 -0
  44. package/lib/types/basics/cache-lru.d.ts.map +1 -0
  45. package/lib/types/basics/calculate.d.ts +3 -0
  46. package/lib/types/basics/calculate.d.ts.map +1 -0
  47. package/lib/types/basics/common.d.ts +112 -0
  48. package/lib/types/basics/common.d.ts.map +1 -0
  49. package/lib/types/basics/dirty.d.ts +3 -0
  50. package/lib/types/basics/dirty.d.ts.map +1 -0
  51. package/lib/types/basics/error-type.d.ts +29 -0
  52. package/lib/types/basics/error-type.d.ts.map +1 -0
  53. package/lib/types/basics/function-definition.d.ts +4 -0
  54. package/lib/types/basics/function-definition.d.ts.map +1 -0
  55. package/lib/types/basics/function.d.ts +138 -0
  56. package/lib/types/basics/function.d.ts.map +1 -0
  57. package/lib/types/basics/match-token.d.ts +6 -0
  58. package/lib/types/basics/match-token.d.ts.map +1 -0
  59. package/lib/types/basics/node-type.d.ts +6 -0
  60. package/lib/types/basics/node-type.d.ts.map +1 -0
  61. package/lib/types/basics/object-class-type.d.ts +9 -0
  62. package/lib/types/basics/object-class-type.d.ts.map +1 -0
  63. package/lib/types/basics/regex.d.ts +18 -0
  64. package/lib/types/basics/regex.d.ts.map +1 -0
  65. package/lib/types/basics/sequence.d.ts +28 -0
  66. package/lib/types/basics/sequence.d.ts.map +1 -0
  67. package/lib/types/basics/set-zero-time-out.d.ts +7 -0
  68. package/lib/types/basics/set-zero-time-out.d.ts.map +1 -0
  69. package/lib/types/basics/token-type.d.ts +8 -0
  70. package/lib/types/basics/token-type.d.ts.map +1 -0
  71. package/lib/types/basics/token.d.ts +45 -0
  72. package/lib/types/basics/token.d.ts.map +1 -0
  73. package/lib/types/dependency/dependency-tree.d.ts +49 -0
  74. package/lib/types/dependency/dependency-tree.d.ts.map +1 -0
  75. package/lib/types/dependency/formula-dependency.d.ts +67 -0
  76. package/lib/types/dependency/formula-dependency.d.ts.map +1 -0
  77. package/lib/types/functions/average.d.ts +6 -0
  78. package/lib/types/functions/average.d.ts.map +1 -0
  79. package/lib/types/functions/base-function.d.ts +14 -0
  80. package/lib/types/functions/base-function.d.ts.map +1 -0
  81. package/lib/types/functions/concatenate.d.ts +7 -0
  82. package/lib/types/functions/concatenate.d.ts.map +1 -0
  83. package/lib/types/functions/count.d.ts +7 -0
  84. package/lib/types/functions/count.d.ts.map +1 -0
  85. package/lib/types/functions/index.d.ts +16 -0
  86. package/lib/types/functions/index.d.ts.map +1 -0
  87. package/lib/types/functions/indirect.d.ts +7 -0
  88. package/lib/types/functions/indirect.d.ts.map +1 -0
  89. package/lib/types/functions/max.d.ts +8 -0
  90. package/lib/types/functions/max.d.ts.map +1 -0
  91. package/lib/types/functions/meta/compare.d.ts +9 -0
  92. package/lib/types/functions/meta/compare.d.ts.map +1 -0
  93. package/lib/types/functions/meta/divided.d.ts +6 -0
  94. package/lib/types/functions/meta/divided.d.ts.map +1 -0
  95. package/lib/types/functions/meta/minus.d.ts +6 -0
  96. package/lib/types/functions/meta/minus.d.ts.map +1 -0
  97. package/lib/types/functions/meta/multiply.d.ts +6 -0
  98. package/lib/types/functions/meta/multiply.d.ts.map +1 -0
  99. package/lib/types/functions/meta/plus.d.ts +6 -0
  100. package/lib/types/functions/meta/plus.d.ts.map +1 -0
  101. package/lib/types/functions/meta/union.d.ts +9 -0
  102. package/lib/types/functions/meta/union.d.ts.map +1 -0
  103. package/lib/types/functions/min.d.ts +8 -0
  104. package/lib/types/functions/min.d.ts.map +1 -0
  105. package/lib/types/functions/offset.d.ts +7 -0
  106. package/lib/types/functions/offset.d.ts.map +1 -0
  107. package/lib/types/functions/power.d.ts +7 -0
  108. package/lib/types/functions/power.d.ts.map +1 -0
  109. package/lib/types/functions/sum.d.ts +8 -0
  110. package/lib/types/functions/sum.d.ts.map +1 -0
  111. package/lib/types/index.d.ts +23 -0
  112. package/lib/types/index.d.ts.map +1 -0
  113. package/lib/types/interpreter/interpreter.d.ts +18 -0
  114. package/lib/types/interpreter/interpreter.d.ts.map +1 -0
  115. package/lib/types/other-object/error-value-object.d.ts +12 -0
  116. package/lib/types/other-object/error-value-object.d.ts.map +1 -0
  117. package/lib/types/plugin.d.ts +8 -0
  118. package/lib/types/plugin.d.ts.map +1 -0
  119. package/lib/types/reference-object/base-reference-object.d.ts +95 -0
  120. package/lib/types/reference-object/base-reference-object.d.ts.map +1 -0
  121. package/lib/types/reference-object/cell-reference-object.d.ts +12 -0
  122. package/lib/types/reference-object/cell-reference-object.d.ts.map +1 -0
  123. package/lib/types/reference-object/column-reference-object.d.ts +8 -0
  124. package/lib/types/reference-object/column-reference-object.d.ts.map +1 -0
  125. package/lib/types/reference-object/range-reference-object.d.ts +7 -0
  126. package/lib/types/reference-object/range-reference-object.d.ts.map +1 -0
  127. package/lib/types/reference-object/row-reference-object.d.ts +8 -0
  128. package/lib/types/reference-object/row-reference-object.d.ts.map +1 -0
  129. package/lib/types/reference-object/table-reference-object.d.ts +12 -0
  130. package/lib/types/reference-object/table-reference-object.d.ts.map +1 -0
  131. package/lib/types/services/current-data.service.d.ts +49 -0
  132. package/lib/types/services/current-data.service.d.ts.map +1 -0
  133. package/lib/types/services/defined-names.service.d.ts +13 -0
  134. package/lib/types/services/defined-names.service.d.ts.map +1 -0
  135. package/lib/types/services/formula-engine.service.d.ts +98 -0
  136. package/lib/types/services/formula-engine.service.d.ts.map +1 -0
  137. package/lib/types/services/function.service.d.ts +29 -0
  138. package/lib/types/services/function.service.d.ts.map +1 -0
  139. package/lib/types/services/runtime.service.d.ts +149 -0
  140. package/lib/types/services/runtime.service.d.ts.map +1 -0
  141. package/lib/types/services/super-table.service.d.ts +19 -0
  142. package/lib/types/services/super-table.service.d.ts.map +1 -0
  143. package/lib/types/value-object/array-value-object.d.ts +41 -0
  144. package/lib/types/value-object/array-value-object.d.ts.map +1 -0
  145. package/lib/types/value-object/base-value-object.d.ts +41 -0
  146. package/lib/types/value-object/base-value-object.d.ts.map +1 -0
  147. package/lib/types/value-object/primitive-object.d.ts +67 -0
  148. package/lib/types/value-object/primitive-object.d.ts.map +1 -0
  149. package/package.json +52 -0
@@ -0,0 +1,49 @@
1
+ import type { Nullable, Observable } from '@univerjs/core';
2
+ import type { LambdaPrivacyVarType } from '../ast-node/base-ast-node';
3
+ interface LexerNodeJson {
4
+ token: string;
5
+ children: Array<LexerNodeJson | string>;
6
+ }
7
+ export interface FormulaEnginePluginObserver {
8
+ onBeforeFormulaCalculateObservable: Observable<string>;
9
+ onAfterFormulaLexerObservable: Observable<LexerNode>;
10
+ }
11
+ export declare class LexerNode {
12
+ private _parent;
13
+ private _token;
14
+ private _children;
15
+ private _lambdaId;
16
+ private _functionDefinitionPrivacyVar;
17
+ private _lambdaParameter;
18
+ private _startIndex;
19
+ private _endIndex;
20
+ dispose(): void;
21
+ getStartIndex(): number;
22
+ getLambdaId(): Nullable<string>;
23
+ setLambdaId(lambdaId: string): void;
24
+ getFunctionDefinitionPrivacyVar(): Nullable<LambdaPrivacyVarType>;
25
+ setLambdaPrivacyVar(lambdaPrivacyVar: LambdaPrivacyVarType): void;
26
+ getLambdaParameter(): string;
27
+ setLambdaParameter(lambdaParameter: string): void;
28
+ getParent(): Nullable<LexerNode>;
29
+ setParent(lexerNode: LexerNode): void;
30
+ getChildren(): (string | LexerNode)[];
31
+ setChildren(children: Array<LexerNode | string>): void;
32
+ addChildren(children: LexerNode | string): void;
33
+ addChildrenFirst(children: LexerNode | string): void;
34
+ getToken(): string;
35
+ setToken(token: string): void;
36
+ setIndex(st: number, ed: number): void;
37
+ replaceChild(lexerNode: LexerNode, newLexerNode: LexerNode): void;
38
+ changeToParent(newParentLexerNode: LexerNode): void;
39
+ removeChild(lexerNode: LexerNode): void;
40
+ serialize(): {
41
+ token: string;
42
+ st: number;
43
+ ed: number;
44
+ children: (string | LexerNodeJson)[];
45
+ };
46
+ private _getIndexInParent;
47
+ }
48
+ export {};
49
+ //# sourceMappingURL=lexer-node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lexer-node.d.ts","sourceRoot":"","sources":["../../../src/analysis/lexer-node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAGtE,UAAU,aAAa;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,2BAA2B;IACxC,kCAAkC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IACvD,6BAA6B,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;CACxD;AAED,qBAAa,SAAS;IAClB,OAAO,CAAC,OAAO,CAAsB;IAErC,OAAO,CAAC,MAAM,CAAmC;IAEjD,OAAO,CAAC,SAAS,CAAiC;IAElD,OAAO,CAAC,SAAS,CAAmB;IAEpC,OAAO,CAAC,6BAA6B,CAAiC;IAEtE,OAAO,CAAC,gBAAgB,CAAc;IAEtC,OAAO,CAAC,WAAW,CAAc;IAEjC,OAAO,CAAC,SAAS,CAAc;IAE/B,OAAO;IAWP,aAAa;IAIb,WAAW;IAIX,WAAW,CAAC,QAAQ,EAAE,MAAM;IAI5B,+BAA+B;IAI/B,mBAAmB,CAAC,gBAAgB,EAAE,oBAAoB;IAI1D,kBAAkB;IAIlB,kBAAkB,CAAC,eAAe,EAAE,MAAM;IAI1C,SAAS;IAIT,SAAS,CAAC,SAAS,EAAE,SAAS;IAI9B,WAAW;IAIX,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC;IAI/C,WAAW,CAAC,QAAQ,EAAE,SAAS,GAAG,MAAM;IAIxC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,GAAG,MAAM;IAI7C,QAAQ;IAIR,QAAQ,CAAC,KAAK,EAAE,MAAM;IAItB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAK/B,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS;IAY1D,cAAc,CAAC,kBAAkB,EAAE,SAAS;IAU5C,WAAW,CAAC,SAAS,EAAE,SAAS;IAkBhC,SAAS;;;;;;IAsBT,OAAO,CAAC,iBAAiB;CAU5B"}
@@ -0,0 +1,84 @@
1
+ import { Disposable } from '@univerjs/core';
2
+ import { FormulaAstLRU } from '../basics/cache-lru';
3
+ import { ErrorType } from '../basics/error-type';
4
+ import type { ISequenceNode } from '../basics/sequence';
5
+ import { LexerNode } from './lexer-node';
6
+ export declare const FormulaLexerNodeCache: FormulaAstLRU<LexerNode>;
7
+ export declare const FormulaSequenceNodeCache: FormulaAstLRU<(string | ISequenceNode)[]>;
8
+ export declare class LexerTreeBuilder extends Disposable {
9
+ private _currentLexerNode;
10
+ private _upLevel;
11
+ private _segment;
12
+ private _bracketState;
13
+ private _bracesState;
14
+ private _singleQuotationState;
15
+ private _doubleQuotationState;
16
+ private _lambdaState;
17
+ private _colonState;
18
+ dispose(): void;
19
+ getUpLevel(): number;
20
+ isColonClose(): boolean;
21
+ isColonOpen(): boolean;
22
+ isDoubleQuotationClose(): boolean;
23
+ isLambdaOpen(): boolean;
24
+ isLambdaClose(): boolean;
25
+ isSingleQuotationClose(): boolean;
26
+ isBracesClose(): boolean;
27
+ isBracketClose(): boolean;
28
+ getCurrentLexerNode(): LexerNode;
29
+ getFunctionAndParameter(formulaString: string, strIndex: number): {
30
+ functionName: string;
31
+ paramIndex: number;
32
+ } | undefined;
33
+ moveFormulaRefOffset(formulaString: string, refOffsetX: number, refOffsetY: number): string;
34
+ /**
35
+ * Estimate the number of right brackets that need to be automatically added to the end of the formula.
36
+ * @param formulaString
37
+ * @returns
38
+ */
39
+ checkIfAddBracket(formulaString: string): number;
40
+ sequenceNodesBuilder(formulaString: string): (string | ISequenceNode)[] | undefined;
41
+ private _getCurrentParamIndex;
42
+ private _isLastMergeString;
43
+ /**
44
+ * Merge array and handle ref operations
45
+ *
46
+ */
47
+ private _mergeSequenceNodeReference;
48
+ private _pushSequenceNode;
49
+ private _replacePrefixString;
50
+ treeBuilder(formulaString: string, transformSuffix?: boolean): ErrorType.VALUE | LexerNode;
51
+ private _suffixExpressionHandler;
52
+ private _resetCurrentLexerNode;
53
+ private _resetSegment;
54
+ private _openBracket;
55
+ private _closeBracket;
56
+ private _getCurrentBracket;
57
+ private _openBraces;
58
+ private _closeBraces;
59
+ private _openSingleQuotation;
60
+ private _closeSingleQuotation;
61
+ private _openDoubleQuotation;
62
+ private _closeDoubleQuotation;
63
+ private _openLambda;
64
+ private _closeLambda;
65
+ private _openColon;
66
+ private _closeColon;
67
+ private _getLastChildCurrentLexerNode;
68
+ private _getLastChildCurrent;
69
+ private _setParentCurrentLexerNode;
70
+ private _setAncestorCurrentLexerNode;
71
+ private _segmentCount;
72
+ private _pushSegment;
73
+ private _pushNodeToChildren;
74
+ private _setCurrentLexerNode;
75
+ private _newAndPushCurrentLexerNode;
76
+ private _getTopNode;
77
+ private _removeLastChild;
78
+ private _findPreviousToken;
79
+ private _negativeCondition;
80
+ private _getSequenceArray;
81
+ private _resetTemp;
82
+ private _nodeMaker;
83
+ }
84
+ //# sourceMappingURL=lexer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lexer.d.ts","sourceRoot":"","sources":["../../../src/analysis/lexer.ts"],"names":[],"mappings":"AACA,OAAO,EAA6B,UAAU,EAA+C,MAAM,gBAAgB,CAAC;AAEpH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGjD,OAAO,KAAK,EAAkB,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAexE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAUzC,eAAO,MAAM,qBAAqB,0BAAwD,CAAC;AAE3F,eAAO,MAAM,wBAAwB,2CAA4E,CAAC;AAElH,qBAAa,gBAAiB,SAAQ,UAAU;IAC5C,OAAO,CAAC,iBAAiB,CAA8B;IAEvD,OAAO,CAAC,QAAQ,CAAK;IAErB,OAAO,CAAC,QAAQ,CAAM;IAEtB,OAAO,CAAC,aAAa,CAAqB;IAE1C,OAAO,CAAC,YAAY,CAAK;IAEzB,OAAO,CAAC,qBAAqB,CAAK;IAElC,OAAO,CAAC,qBAAqB,CAAK;IAElC,OAAO,CAAC,YAAY,CAAS;IAE7B,OAAO,CAAC,WAAW,CAAS;IAEnB,OAAO,IAAI,IAAI;IASxB,UAAU;IAIV,YAAY;IAIZ,WAAW;IAIX,sBAAsB;IAItB,YAAY;IAIZ,aAAa;IAIb,sBAAsB;IAItB,aAAa;IAIb,cAAc;IAId,mBAAmB;IAInB,uBAAuB,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;;;;IAqC/D,oBAAoB,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAqClF;;;;OAIG;IACH,iBAAiB,CAAC,aAAa,EAAE,MAAM;IAkDvC,oBAAoB,CAAC,aAAa,EAAE,MAAM;IA2H1C,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,kBAAkB;IAI1B;;;OAGG;IACH,OAAO,CAAC,2BAA2B;IA0DnC,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,oBAAoB;IAI5B,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,eAAe,UAAO;IAgCzD,OAAO,CAAC,wBAAwB;IAoEhC,OAAO,CAAC,sBAAsB;IAI9B,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,6BAA6B;IAWrC,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,0BAA0B;IAUlC,OAAO,CAAC,4BAA4B;IAqCpC,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,mBAAmB;IAuB3B,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,2BAA2B;IAOnC,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,UAAU;IAqBlB,OAAO,CAAC,UAAU;CAyUrB"}
@@ -0,0 +1,41 @@
1
+ import type { Nullable } from '@univerjs/core';
2
+ import { Disposable } from '@univerjs/core';
3
+ import { AstRootNodeFactory } from '../ast-node/ast-root-node';
4
+ import type { BaseAstNode } from '../ast-node/base-ast-node';
5
+ import { FunctionNodeFactory } from '../ast-node/function-node';
6
+ import { LambdaNodeFactory } from '../ast-node/lambda-node';
7
+ import { LambdaParameterNodeFactory } from '../ast-node/lambda-parameter-node';
8
+ import { OperatorNodeFactory } from '../ast-node/operator-node';
9
+ import { PrefixNodeFactory } from '../ast-node/prefix-node';
10
+ import { ReferenceNodeFactory } from '../ast-node/reference-node';
11
+ import { SuffixNodeFactory } from '../ast-node/suffix-node';
12
+ import { UnionNodeFactory } from '../ast-node/union-node';
13
+ import { ValueNodeFactory } from '../ast-node/value-node';
14
+ import { IFormulaRuntimeService } from '../services/runtime.service';
15
+ import { LexerNode } from './lexer-node';
16
+ export declare class AstTreeBuilder extends Disposable {
17
+ private readonly _runtimeService;
18
+ private readonly _astRootNodeFactory;
19
+ private readonly _functionNodeFactory;
20
+ private readonly _lambdaNodeFactory;
21
+ private readonly _lambdaParameterNodeFactory;
22
+ private readonly _operatorNodeFactory;
23
+ private readonly _prefixNodeFactory;
24
+ private readonly _referenceNodeFactory;
25
+ private readonly _suffixNodeFactory;
26
+ private readonly _unionNodeFactory;
27
+ private readonly _valueNodeFactory;
28
+ private _astNodeFactoryList;
29
+ private _refOffsetX;
30
+ private _refOffsetY;
31
+ constructor(_runtimeService: IFormulaRuntimeService, _astRootNodeFactory: AstRootNodeFactory, _functionNodeFactory: FunctionNodeFactory, _lambdaNodeFactory: LambdaNodeFactory, _lambdaParameterNodeFactory: LambdaParameterNodeFactory, _operatorNodeFactory: OperatorNodeFactory, _prefixNodeFactory: PrefixNodeFactory, _referenceNodeFactory: ReferenceNodeFactory, _suffixNodeFactory: SuffixNodeFactory, _unionNodeFactory: UnionNodeFactory, _valueNodeFactory: ValueNodeFactory);
32
+ dispose(): void;
33
+ parse(lexerNode: LexerNode, refOffsetX?: number, refOffsetY?: number): Nullable<BaseAstNode>;
34
+ private _lambdaParameterHandler;
35
+ private _changeLetToLambda;
36
+ private _getTopParent;
37
+ private _parse;
38
+ private _checkAstNode;
39
+ private _initializeAstNode;
40
+ }
41
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/analysis/parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAa,MAAM,gBAAgB,CAAC;AAGvD,OAAO,EAAe,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAG/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAU1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,qBAAa,cAAe,SAAQ,UAAU;IAQd,OAAO,CAAC,QAAQ,CAAC,eAAe;IAC5B,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IACnC,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACvC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IAC1B,OAAO,CAAC,QAAQ,CAAC,2BAA2B;IACnD,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACvC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IAChC,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IACzC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACpC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAjBhE,OAAO,CAAC,mBAAmB,CAA4B;IAEvD,OAAO,CAAC,WAAW,CAAK;IAExB,OAAO,CAAC,WAAW,CAAK;gBAGqB,eAAe,EAAE,sBAAsB,EACnC,mBAAmB,EAAE,kBAAkB,EACtC,oBAAoB,EAAE,mBAAmB,EAC3C,kBAAkB,EAAE,iBAAiB,EAC5B,2BAA2B,EAAE,0BAA0B,EAC9D,oBAAoB,EAAE,mBAAmB,EAC3C,kBAAkB,EAAE,iBAAiB,EAClC,qBAAqB,EAAE,oBAAoB,EAC9C,kBAAkB,EAAE,iBAAiB,EACtC,iBAAiB,EAAE,gBAAgB,EACnC,iBAAiB,EAAE,gBAAgB;IAOzE,OAAO,IAAI,IAAI;IAQxB,KAAK,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,GAAE,MAAU,EAAE,UAAU,GAAE,MAAU;IAW1E,OAAO,CAAC,uBAAuB;IA0C/B,OAAO,CAAC,kBAAkB;IA0C1B,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,MAAM;IAoKd,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,kBAAkB;CAc7B"}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=un-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"un-parser.d.ts","sourceRoot":"","sources":["../../../src/analysis/un-parser.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ import { LexerNode } from '../analysis/lexer-node';
2
+ import { BaseAstNode } from './base-ast-node';
3
+ import { BaseAstNodeFactory } from './base-ast-node-factory';
4
+ import { NodeType } from './node-type';
5
+ export declare class AstRootNode extends BaseAstNode {
6
+ get nodeType(): NodeType;
7
+ execute(): void;
8
+ }
9
+ export declare class AstRootNodeFactory extends BaseAstNodeFactory {
10
+ get zIndex(): number;
11
+ checkAndCreateNodeType(param: LexerNode | string): AstRootNode | undefined;
12
+ }
13
+ //# sourceMappingURL=ast-root-node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast-root-node.d.ts","sourceRoot":"","sources":["../../../src/ast-node/ast-root-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAoC,MAAM,yBAAyB,CAAC;AAC/F,OAAO,EAAkB,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvD,qBAAa,WAAY,SAAQ,WAAW;IACxC,IAAa,QAAQ,aAEpB;IAEQ,OAAO;CAWnB;AAsBD,qBAAa,kBAAmB,SAAQ,kBAAkB;IACtD,IAAa,MAAM,WAElB;IAEQ,sBAAsB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM;CAS5D"}
@@ -0,0 +1,11 @@
1
+ import type { Nullable } from '@univerjs/core';
2
+ import { Disposable } from '@univerjs/core';
3
+ import { LexerNode } from '../analysis/lexer-node';
4
+ import { BaseAstNode } from './base-ast-node';
5
+ export declare const DEFAULT_AST_NODE_FACTORY_Z_INDEX = 100;
6
+ export declare class BaseAstNodeFactory extends Disposable {
7
+ get zIndex(): number;
8
+ create(param: LexerNode | string): BaseAstNode;
9
+ checkAndCreateNodeType(param: LexerNode | string): Nullable<BaseAstNode>;
10
+ }
11
+ //# sourceMappingURL=base-ast-node-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-ast-node-factory.d.ts","sourceRoot":"","sources":["../../../src/ast-node/base-ast-node-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,eAAO,MAAM,gCAAgC,MAAM,CAAC;AAEpD,qBAAa,kBAAmB,SAAQ,UAAU;IAC9C,IAAI,MAAM,WAET;IAED,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,WAAW;IAU9C,sBAAsB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC;CAC3E"}
@@ -0,0 +1,57 @@
1
+ import type { Nullable } from '@univerjs/core';
2
+ import { Disposable } from '@univerjs/core';
3
+ import { AstNodePromiseType } from '../basics/common';
4
+ import type { ErrorType } from '../basics/error-type';
5
+ import { ErrorValueObject } from '../other-object/error-value-object';
6
+ import type { FunctionVariantType } from '../reference-object/base-reference-object';
7
+ import { NodeType } from './node-type';
8
+ interface IAstNodeNodeJson {
9
+ token: string;
10
+ children?: IAstNodeNodeJson[];
11
+ nodeType: string;
12
+ }
13
+ export type LambdaPrivacyVarType = Map<string, Nullable<BaseAstNode>>;
14
+ export declare class BaseAstNode extends Disposable {
15
+ private _token;
16
+ private _children;
17
+ private _parent;
18
+ private _valueObject;
19
+ private _calculateState;
20
+ private _async;
21
+ private _address;
22
+ private _refOffsetX;
23
+ private _refOffsetY;
24
+ constructor(_token: string);
25
+ dispose(): void;
26
+ get nodeType(): NodeType;
27
+ isAsync(): boolean;
28
+ isAddress(): boolean;
29
+ setAsync(): void;
30
+ setAddress(): void;
31
+ getParent(): Nullable<BaseAstNode>;
32
+ setParent(node: BaseAstNode): void;
33
+ getChildren(): BaseAstNode[];
34
+ addChildren(...astNode: BaseAstNode[]): void;
35
+ getToken(): string;
36
+ setValue(value: Nullable<FunctionVariantType>): void;
37
+ getValue(): Nullable<FunctionVariantType>;
38
+ isCalculated(): boolean;
39
+ setCalculated(): void;
40
+ execute(): void;
41
+ setRefOffset(x?: number, y?: number): void;
42
+ getRefOffset(): {
43
+ x: number;
44
+ y: number;
45
+ };
46
+ executeAsync(): Promise<AstNodePromiseType>;
47
+ serialize(): IAstNodeNodeJson;
48
+ }
49
+ export declare class ErrorNode extends BaseAstNode {
50
+ private _errorValueObject;
51
+ constructor(errorType: ErrorType);
52
+ get nodeType(): NodeType;
53
+ static create(errorType: ErrorType): ErrorNode;
54
+ getValue(): ErrorValueObject;
55
+ }
56
+ export {};
57
+ //# sourceMappingURL=base-ast-node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-ast-node.d.ts","sourceRoot":"","sources":["../../../src/ast-node/base-ast-node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AACrF,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,UAAU,gBAAgB;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,oBAAoB,GAAG,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;AAEtE,qBAAa,WAAY,SAAQ,UAAU;IAiB3B,OAAO,CAAC,MAAM;IAhB1B,OAAO,CAAC,SAAS,CAAqB;IAEtC,OAAO,CAAC,OAAO,CAAwB;IAEvC,OAAO,CAAC,YAAY,CAAgC;IAEpD,OAAO,CAAC,eAAe,CAAS;IAEhC,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO,CAAC,QAAQ,CAAS;IAEzB,OAAO,CAAC,WAAW,CAAa;IAEhC,OAAO,CAAC,WAAW,CAAa;gBAEZ,MAAM,EAAE,MAAM;IAIzB,OAAO,IAAI,IAAI;IASxB,IAAI,QAAQ,aAEX;IAED,OAAO;IAIP,SAAS;IAIT,QAAQ;IAIR,UAAU;IAIV,SAAS;IAIT,SAAS,CAAC,IAAI,EAAE,WAAW;IAK3B,WAAW;IAIX,WAAW,CAAC,GAAG,OAAO,EAAE,WAAW,EAAE;IAIrC,QAAQ;IAIR,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,mBAAmB,CAAC;IAI7C,QAAQ,IAAI,QAAQ,CAAC,mBAAmB,CAAC;IAIzC,YAAY;IAIZ,aAAa;IAIb,OAAO;IAIP,YAAY,CAAC,CAAC,GAAE,MAAU,EAAE,CAAC,GAAE,MAAU;IAKzC,YAAY;;;;IAON,YAAY,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAKjD,SAAS;CAuBZ;AAED,qBAAa,SAAU,SAAQ,WAAW;IACtC,OAAO,CAAC,iBAAiB,CAAmB;gBAEhC,SAAS,EAAE,SAAS;IAKhC,IAAa,QAAQ,aAEpB;IAED,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS;IAIzB,QAAQ;CAGpB"}
@@ -0,0 +1,24 @@
1
+ import { Injector } from '@wendellhu/redi';
2
+ import type { LexerNode } from '../analysis/lexer-node';
3
+ import { AstNodePromiseType } from '../basics/common';
4
+ import type { BaseFunction } from '../functions/base-function';
5
+ import { IFunctionService } from '../services/function.service';
6
+ import { BaseAstNode } from './base-ast-node';
7
+ import { BaseAstNodeFactory } from './base-ast-node-factory';
8
+ import { NodeType } from './node-type';
9
+ export declare class FunctionNode extends BaseAstNode {
10
+ private _functionExecutor;
11
+ constructor(token: string, _functionExecutor: BaseFunction);
12
+ get nodeType(): NodeType;
13
+ executeAsync(): Promise<AstNodePromiseType>;
14
+ execute(): void;
15
+ }
16
+ export declare class FunctionNodeFactory extends BaseAstNodeFactory {
17
+ private readonly _functionService;
18
+ private readonly _injector;
19
+ constructor(_functionService: IFunctionService, _injector: Injector);
20
+ get zIndex(): number;
21
+ create(token: string): BaseAstNode;
22
+ checkAndCreateNodeType(param: LexerNode | string): BaseAstNode | undefined;
23
+ }
24
+ //# sourceMappingURL=function-node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"function-node.d.ts","sourceRoot":"","sources":["../../../src/ast-node/function-node.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAItD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAa,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAoC,MAAM,yBAAyB,CAAC;AAC/F,OAAO,EAAkB,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvD,qBAAa,YAAa,SAAQ,WAAW;IAGrC,OAAO,CAAC,iBAAiB;gBADzB,KAAK,EAAE,MAAM,EACL,iBAAiB,EAAE,YAAY;IAa3C,IAAa,QAAQ,aAEpB;IAEc,YAAY;IAqBlB,OAAO;CAgBnB;AAED,qBAAa,mBAAoB,SAAQ,kBAAkB;IAEjC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS;gBADT,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,QAAQ;IAK1D,IAAa,MAAM,WAElB;IAEQ,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW;IASlC,sBAAsB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM;CAyC5D"}
@@ -0,0 +1,11 @@
1
+ export * from './ast-root-node';
2
+ export * from './function-node';
3
+ export * from './lambda-node';
4
+ export * from './lambda-parameter-node';
5
+ export * from './operator-node';
6
+ export * from './prefix-node';
7
+ export * from './reference-node';
8
+ export * from './suffix-node';
9
+ export * from './union-node';
10
+ export * from './value-node';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ast-node/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { LexerNode } from '../analysis/lexer-node';
2
+ import { IFormulaRuntimeService } from '../services/runtime.service';
3
+ import { BaseAstNode } from './base-ast-node';
4
+ import { BaseAstNodeFactory } from './base-ast-node-factory';
5
+ import { NodeType } from './node-type';
6
+ export declare const LAMBDA_TOKEN: string;
7
+ export declare class LambdaNode extends BaseAstNode {
8
+ private _lambdaId;
9
+ constructor(token: string, _lambdaId: string);
10
+ get nodeType(): NodeType;
11
+ isFunctionParameter(): boolean;
12
+ getLambdaId(): string;
13
+ execute(): void;
14
+ }
15
+ export declare class LambdaNodeFactory extends BaseAstNodeFactory {
16
+ private readonly _runtimeService;
17
+ constructor(_runtimeService: IFormulaRuntimeService);
18
+ get zIndex(): number;
19
+ create(param: LexerNode): BaseAstNode;
20
+ checkAndCreateNodeType(param: LexerNode | string): BaseAstNode | undefined;
21
+ private _updateLambdaStatement;
22
+ private _updateTree;
23
+ }
24
+ //# sourceMappingURL=lambda-node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lambda-node.d.ts","sourceRoot":"","sources":["../../../src/ast-node/lambda-node.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAQnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,OAAO,EAAE,WAAW,EAAa,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAoC,MAAM,yBAAyB,CAAC;AAC/F,OAAO,EAAkB,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvD,eAAO,MAAM,YAAY,EAAE,MAAiB,CAAC;AAE7C,qBAAa,UAAW,SAAQ,WAAW;IAGnC,OAAO,CAAC,SAAS;gBADjB,KAAK,EAAE,MAAM,EACL,SAAS,EAAE,MAAM;IAK7B,IAAa,QAAQ,aAEpB;IAED,mBAAmB;IAInB,WAAW;IAIF,OAAO;CAKnB;AAED,qBAAa,iBAAkB,SAAQ,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAAf,eAAe,EAAE,sBAAsB;IAI5F,IAAa,MAAM,WAElB;IAEQ,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,WAAW;IA2CrC,sBAAsB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM;IAazD,OAAO,CAAC,sBAAsB;IAQ9B,OAAO,CAAC,WAAW;CA4BtB"}
@@ -0,0 +1,21 @@
1
+ import { LexerNode } from '../analysis/lexer-node';
2
+ import type { LambdaPrivacyVarType } from './base-ast-node';
3
+ import { BaseAstNode } from './base-ast-node';
4
+ import { BaseAstNodeFactory } from './base-ast-node-factory';
5
+ import { NodeType } from './node-type';
6
+ export declare class LambdaParameterNode extends BaseAstNode {
7
+ private _lambdaParameter;
8
+ private _currentLambdaPrivacyVar;
9
+ constructor(token: string, _lambdaParameter: string, _currentLambdaPrivacyVar: LambdaPrivacyVarType);
10
+ getLambdaParameter(): string;
11
+ getCurrentLambdaPrivacyVar(): LambdaPrivacyVarType;
12
+ get nodeType(): NodeType;
13
+ execute(): void;
14
+ private _getRootLexerNode;
15
+ }
16
+ export declare class LambdaParameterNodeFactory extends BaseAstNodeFactory {
17
+ get zIndex(): number;
18
+ create(param: LexerNode): BaseAstNode;
19
+ checkAndCreateNodeType(param: LexerNode | string): BaseAstNode | undefined;
20
+ }
21
+ //# sourceMappingURL=lambda-parameter-node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lambda-parameter-node.d.ts","sourceRoot":"","sources":["../../../src/ast-node/lambda-parameter-node.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAInD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAa,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAoC,MAAM,yBAAyB,CAAC;AAC/F,OAAO,EAAkB,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvD,qBAAa,mBAAoB,SAAQ,WAAW;IAG5C,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,wBAAwB;gBAFhC,KAAK,EAAE,MAAM,EACL,gBAAgB,EAAE,MAAM,EACxB,wBAAwB,EAAE,oBAAoB;IAK1D,kBAAkB;IAIlB,0BAA0B;IAI1B,IAAa,QAAQ,aAEpB;IAEQ,OAAO;IAShB,OAAO,CAAC,iBAAiB;CAkB5B;AAED,qBAAa,0BAA2B,SAAQ,kBAAkB;IAC9D,IAAa,MAAM,WAElB;IAEQ,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,WAAW;IAYrC,sBAAsB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM;CAY5D"}
@@ -0,0 +1,17 @@
1
+ export declare enum NodeType {
2
+ REFERENCE = "ReferenceNode",
3
+ VALUE = "ValueNode",
4
+ OPERATOR = "OperatorNode",
5
+ FUNCTION = "FunctionNode",
6
+ LAMBDA = "LambdaNode",
7
+ LAMBDA_PARAMETER = "LambdaNodeParameter",
8
+ ERROR = "ErrorNode",
9
+ BASE = "Base",
10
+ ROOT = "Root",
11
+ UNION = "UnionNode",
12
+ PREFIX = "PrefixNode",
13
+ SUFFIX = "SuffixNode",
14
+ NULL = "NullNode"
15
+ }
16
+ export declare const NODE_ORDER_MAP: Map<NodeType, number>;
17
+ //# sourceMappingURL=node-type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-type.d.ts","sourceRoot":"","sources":["../../../src/ast-node/node-type.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ;IAChB,SAAS,kBAAkB;IAC3B,KAAK,cAAc;IACnB,QAAQ,iBAAiB;IACzB,QAAQ,iBAAiB;IACzB,MAAM,eAAe;IACrB,gBAAgB,wBAAwB;IACxC,KAAK,cAAc;IACnB,IAAI,SAAS;IACb,IAAI,SAAS;IACb,KAAK,cAAc;IACnB,MAAM,eAAe;IACrB,MAAM,eAAe;IACrB,IAAI,aAAa;CACpB;AAED,eAAO,MAAM,cAAc,uBAWzB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { BaseAstNode } from './base-ast-node';
2
+ import { NodeType } from './node-type';
3
+ export declare class NullNode extends BaseAstNode {
4
+ private _operatorString;
5
+ constructor(_operatorString: string);
6
+ get nodeType(): NodeType;
7
+ execute(): void;
8
+ }
9
+ //# sourceMappingURL=null-node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"null-node.d.ts","sourceRoot":"","sources":["../../../src/ast-node/null-node.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,qBAAa,QAAS,SAAQ,WAAW;IACzB,OAAO,CAAC,eAAe;gBAAf,eAAe,EAAE,MAAM;IAI3C,IAAa,QAAQ,aAEpB;IAEQ,OAAO;CAGnB"}
@@ -0,0 +1,21 @@
1
+ import { LexerNode } from '../analysis/lexer-node';
2
+ import type { BaseFunction } from '../functions/base-function';
3
+ import { IFunctionService } from '../services/function.service';
4
+ import { BaseAstNode } from './base-ast-node';
5
+ import { BaseAstNodeFactory } from './base-ast-node-factory';
6
+ import { NodeType } from './node-type';
7
+ export declare class OperatorNode extends BaseAstNode {
8
+ private _operatorString;
9
+ private _functionExecutor;
10
+ constructor(_operatorString: string, _functionExecutor: BaseFunction);
11
+ get nodeType(): NodeType;
12
+ execute(): void;
13
+ }
14
+ export declare class OperatorNodeFactory extends BaseAstNodeFactory {
15
+ private readonly _functionService;
16
+ constructor(_functionService: IFunctionService);
17
+ get zIndex(): number;
18
+ create(param: string): BaseAstNode;
19
+ checkAndCreateNodeType(param: LexerNode | string): BaseAstNode | undefined;
20
+ }
21
+ //# sourceMappingURL=operator-node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operator-node.d.ts","sourceRoot":"","sources":["../../../src/ast-node/operator-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAKnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAa,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAoC,MAAM,yBAAyB,CAAC;AAC/F,OAAO,EAAkB,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvD,qBAAa,YAAa,SAAQ,WAAW;IAErC,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,iBAAiB;gBADjB,eAAe,EAAE,MAAM,EACvB,iBAAiB,EAAE,YAAY;IAK3C,IAAa,QAAQ,aAEpB;IAEQ,OAAO;CAYnB;AAED,qBAAa,mBAAoB,SAAQ,kBAAkB;IACzB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBAAhB,gBAAgB,EAAE,gBAAgB;IAIjF,IAAa,MAAM,WAElB;IAEQ,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW;IA2BlC,sBAAsB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM;CAc5D"}
@@ -0,0 +1,26 @@
1
+ import type { Nullable } from '@univerjs/core';
2
+ import type { IAccessor } from '@wendellhu/redi';
3
+ import { Injector } from '@wendellhu/redi';
4
+ import { LexerNode } from '../analysis/lexer-node';
5
+ import type { BaseFunction } from '../functions/base-function';
6
+ import { IFunctionService } from '../services/function.service';
7
+ import { BaseAstNode, ErrorNode } from './base-ast-node';
8
+ import { BaseAstNodeFactory } from './base-ast-node-factory';
9
+ import { NodeType } from './node-type';
10
+ export declare class PrefixNode extends BaseAstNode {
11
+ private _accessor;
12
+ private _operatorString;
13
+ private _functionExecutor?;
14
+ constructor(_accessor: IAccessor, _operatorString: string, _functionExecutor?: Nullable<BaseFunction>);
15
+ get nodeType(): NodeType;
16
+ execute(): void;
17
+ private _handlerAT;
18
+ }
19
+ export declare class PrefixNodeFactory extends BaseAstNodeFactory {
20
+ private readonly _functionService;
21
+ private readonly _injector;
22
+ constructor(_functionService: IFunctionService, _injector: Injector);
23
+ get zIndex(): number;
24
+ checkAndCreateNodeType(param: LexerNode | string): ErrorNode | PrefixNode | undefined;
25
+ }
26
+ //# sourceMappingURL=prefix-node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prefix-node.d.ts","sourceRoot":"","sources":["../../../src/ast-node/prefix-node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAU,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAInD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGhE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAoC,MAAM,yBAAyB,CAAC;AAC/F,OAAO,EAAkB,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvD,qBAAa,UAAW,SAAQ,WAAW;IAEnC,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,iBAAiB,CAAC;gBAFlB,SAAS,EAAE,SAAS,EACpB,eAAe,EAAE,MAAM,EACvB,iBAAiB,CAAC,wBAAwB;IAKtD,IAAa,QAAQ,aAEpB;IAEQ,OAAO;IAiBhB,OAAO,CAAC,UAAU;CAgCrB;AAED,qBAAa,iBAAkB,SAAQ,kBAAkB;IAE/B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS;gBADT,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,QAAQ;IAK1D,IAAa,MAAM,WAElB;IAEQ,sBAAsB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM;CA4B5D"}
@@ -0,0 +1,28 @@
1
+ import type { IAccessor } from '@wendellhu/redi';
2
+ import { Injector } from '@wendellhu/redi';
3
+ import { LexerTreeBuilder } from '../analysis/lexer';
4
+ import { LexerNode } from '../analysis/lexer-node';
5
+ import type { BaseReferenceObject } from '../reference-object/base-reference-object';
6
+ import { IDefinedNamesService } from '../services/defined-names.service';
7
+ import { ISuperTableService } from '../services/super-table.service';
8
+ import { BaseAstNode, ErrorNode } from './base-ast-node';
9
+ import { BaseAstNodeFactory } from './base-ast-node-factory';
10
+ import { NodeType } from './node-type';
11
+ export declare class ReferenceNode extends BaseAstNode {
12
+ private _accessor;
13
+ private _operatorString;
14
+ private _referenceObject;
15
+ constructor(_accessor: IAccessor, _operatorString: string, _referenceObject: BaseReferenceObject);
16
+ get nodeType(): NodeType;
17
+ execute(): void;
18
+ }
19
+ export declare class ReferenceNodeFactory extends BaseAstNodeFactory {
20
+ private readonly _definedNamesService;
21
+ private readonly _superTableService;
22
+ private readonly _lexerTreeBuilder;
23
+ private readonly _injector;
24
+ constructor(_definedNamesService: IDefinedNamesService, _superTableService: ISuperTableService, _lexerTreeBuilder: LexerTreeBuilder, _injector: Injector);
25
+ get zIndex(): number;
26
+ checkAndCreateNodeType(param: LexerNode | string): ErrorNode | ReferenceNode | undefined;
27
+ }
28
+ //# sourceMappingURL=reference-node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reference-node.d.ts","sourceRoot":"","sources":["../../../src/ast-node/reference-node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAU,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAQnD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAMrF,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAEzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAoC,MAAM,yBAAyB,CAAC;AAC/F,OAAO,EAAkB,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvD,qBAAa,aAAc,SAAQ,WAAW;IAEtC,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,gBAAgB;gBAFhB,SAAS,EAAE,SAAS,EACpB,eAAe,EAAE,MAAM,EACvB,gBAAgB,EAAE,mBAAmB;IAKjD,IAAa,QAAQ,aAEpB;IAEQ,OAAO;CAmBnB;AAED,qBAAa,oBAAqB,SAAQ,kBAAkB;IAE9B,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACvC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAC1C,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAHL,oBAAoB,EAAE,oBAAoB,EAC5C,kBAAkB,EAAE,kBAAkB,EAChC,iBAAiB,EAAE,gBAAgB,EAC3C,SAAS,EAAE,QAAQ;IAK1D,IAAa,MAAM,WAElB;IAEQ,sBAAsB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM;CA4D5D"}
@@ -0,0 +1,25 @@
1
+ import type { IAccessor } from '@wendellhu/redi';
2
+ import { Injector } from '@wendellhu/redi';
3
+ import { LexerNode } from '../analysis/lexer-node';
4
+ import type { BaseFunction } from '../functions/base-function';
5
+ import { IFunctionService } from '../services/function.service';
6
+ import { BaseAstNode, ErrorNode } from './base-ast-node';
7
+ import { BaseAstNodeFactory } from './base-ast-node-factory';
8
+ import { NodeType } from './node-type';
9
+ export declare class SuffixNode extends BaseAstNode {
10
+ private _accessor;
11
+ private _operatorString;
12
+ private _functionExecutor?;
13
+ constructor(_accessor: IAccessor, _operatorString: string, _functionExecutor?: BaseFunction | undefined);
14
+ get nodeType(): NodeType;
15
+ execute(): void;
16
+ private _handlerPound;
17
+ }
18
+ export declare class SuffixNodeFactory extends BaseAstNodeFactory {
19
+ private readonly _functionService;
20
+ private readonly _injector;
21
+ constructor(_functionService: IFunctionService, _injector: Injector);
22
+ get zIndex(): number;
23
+ checkAndCreateNodeType(param: LexerNode | string): ErrorNode | SuffixNode | undefined;
24
+ }
25
+ //# sourceMappingURL=suffix-node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suffix-node.d.ts","sourceRoot":"","sources":["../../../src/ast-node/suffix-node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAU,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAGnD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAInD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAK/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAoC,MAAM,yBAAyB,CAAC;AAC/F,OAAO,EAAkB,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvD,qBAAa,UAAW,SAAQ,WAAW;IAEnC,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,iBAAiB,CAAC;gBAFlB,SAAS,EAAE,SAAS,EACpB,eAAe,EAAE,MAAM,EACvB,iBAAiB,CAAC,0BAAc;IAK5C,IAAa,QAAQ,aAEpB;IAEQ,OAAO;IAiBhB,OAAO,CAAC,aAAa;CAmCxB;AAED,qBAAa,iBAAkB,SAAQ,kBAAkB;IAE/B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS;gBADT,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,QAAQ;IAK1D,IAAa,MAAM,WAElB;IAEQ,sBAAsB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM;CA2B5D"}
@@ -0,0 +1,21 @@
1
+ import { LexerNode } from '../analysis/lexer-node';
2
+ import type { BaseFunction } from '../functions/base-function';
3
+ import { IFunctionService } from '../services/function.service';
4
+ import { BaseAstNode } from './base-ast-node';
5
+ import { BaseAstNodeFactory } from './base-ast-node-factory';
6
+ import { NodeType } from './node-type';
7
+ export declare class UnionNode extends BaseAstNode {
8
+ private _operatorString;
9
+ private _functionExecutor;
10
+ constructor(_operatorString: string, _functionExecutor: BaseFunction);
11
+ get nodeType(): NodeType;
12
+ execute(): void;
13
+ }
14
+ export declare class UnionNodeFactory extends BaseAstNodeFactory {
15
+ private readonly _functionService;
16
+ constructor(_functionService: IFunctionService);
17
+ get zIndex(): number;
18
+ create(param: string): BaseAstNode;
19
+ checkAndCreateNodeType(param: LexerNode | string): BaseAstNode | undefined;
20
+ }
21
+ //# sourceMappingURL=union-node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"union-node.d.ts","sourceRoot":"","sources":["../../../src/ast-node/union-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAInD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAa,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAoC,MAAM,yBAAyB,CAAC;AAC/F,OAAO,EAAkB,QAAQ,EAAE,MAAM,aAAa,CAAC;AAIvD,qBAAa,SAAU,SAAQ,WAAW;IAElC,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,iBAAiB;gBADjB,eAAe,EAAE,MAAM,EACvB,iBAAiB,EAAE,YAAY;IAK3C,IAAa,QAAQ,aAEpB;IAEQ,OAAO;CAiBnB;AAED,qBAAa,gBAAiB,SAAQ,kBAAkB;IACtB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBAAhB,gBAAgB,EAAE,gBAAgB;IAIjF,IAAa,MAAM,WAElB;IAEQ,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW;IASlC,sBAAsB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM;CAmB5D"}
@@ -0,0 +1,17 @@
1
+ import { LexerNode } from '../analysis/lexer-node';
2
+ import { BaseAstNode } from './base-ast-node';
3
+ import { BaseAstNodeFactory } from './base-ast-node-factory';
4
+ import { NodeType } from './node-type';
5
+ export declare class ValueNode extends BaseAstNode {
6
+ private _operatorString;
7
+ constructor(_operatorString: string);
8
+ get nodeType(): NodeType;
9
+ execute(): void;
10
+ }
11
+ export declare class ValueNodeFactory extends BaseAstNodeFactory {
12
+ get zIndex(): number;
13
+ _checkValueNode(token: string): BaseAstNode | undefined;
14
+ create(param: string): BaseAstNode;
15
+ checkAndCreateNodeType(param: LexerNode | string): BaseAstNode | undefined;
16
+ }
17
+ //# sourceMappingURL=value-node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"value-node.d.ts","sourceRoot":"","sources":["../../../src/ast-node/value-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAGnD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAoC,MAAM,yBAAyB,CAAC;AAC/F,OAAO,EAAkB,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvD,qBAAa,SAAU,SAAQ,WAAW;IAC1B,OAAO,CAAC,eAAe;gBAAf,eAAe,EAAE,MAAM;IAI3C,IAAa,QAAQ,aAEpB;IAEQ,OAAO;CAGnB;AAED,qBAAa,gBAAiB,SAAQ,kBAAkB;IACpD,IAAa,MAAM,WAElB;IAED,eAAe,CAAC,KAAK,EAAE,MAAM;IAmBpB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW;IAIlC,sBAAsB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM;CAM5D"}
@@ -0,0 +1,9 @@
1
+ export declare class FormulaAstLRU<T> {
2
+ private _cache;
3
+ constructor(cacheCount: number);
4
+ set(formulaString: string, node: T): void;
5
+ get(formulaString: string): T | undefined;
6
+ clear(): void;
7
+ private _hash;
8
+ }
9
+ //# sourceMappingURL=cache-lru.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-lru.d.ts","sourceRoot":"","sources":["../../../src/basics/cache-lru.ts"],"names":[],"mappings":"AAIA,qBAAa,aAAa,CAAC,CAAC;IACxB,OAAO,CAAC,MAAM,CAAoB;gBAEtB,UAAU,EAAE,MAAM;IAI9B,GAAG,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAKlC,GAAG,CAAC,aAAa,EAAE,MAAM;IAKzB,KAAK;IAIL,OAAO,CAAC,KAAK;CAGhB"}