@rsconcept/domain 1.0.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 (224) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +55 -0
  3. package/dist/cctext/index.d.ts +1 -0
  4. package/dist/cctext/index.js +42 -0
  5. package/dist/cctext/index.js.map +1 -0
  6. package/dist/cctext/language-api.d.ts +43 -0
  7. package/dist/cctext/language-api.js +252 -0
  8. package/dist/cctext/language-api.js.map +1 -0
  9. package/dist/cctext/language.d.ts +58 -0
  10. package/dist/cctext/language.js +44 -0
  11. package/dist/cctext/language.js.map +1 -0
  12. package/dist/graph/graph.d.ts +62 -0
  13. package/dist/graph/graph.js +385 -0
  14. package/dist/graph/graph.js.map +1 -0
  15. package/dist/graph/index.d.ts +1 -0
  16. package/dist/graph/index.js +384 -0
  17. package/dist/graph/index.js.map +1 -0
  18. package/dist/index.d.ts +28 -0
  19. package/dist/index.js +5851 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/library/folder-tree.d.ts +32 -0
  22. package/dist/library/folder-tree.js +136 -0
  23. package/dist/library/folder-tree.js.map +1 -0
  24. package/dist/library/index.d.ts +17 -0
  25. package/dist/library/index.js +2800 -0
  26. package/dist/library/index.js.map +1 -0
  27. package/dist/library/library-api.d.ts +6 -0
  28. package/dist/library/library-api.js +13 -0
  29. package/dist/library/library-api.js.map +1 -0
  30. package/dist/library/library.d.ts +56 -0
  31. package/dist/library/library.js +23 -0
  32. package/dist/library/library.js.map +1 -0
  33. package/dist/library/oss-api.d.ts +47 -0
  34. package/dist/library/oss-api.js +1105 -0
  35. package/dist/library/oss-api.js.map +1 -0
  36. package/dist/library/oss-layout-api.d.ts +36 -0
  37. package/dist/library/oss-layout-api.js +330 -0
  38. package/dist/library/oss-layout-api.js.map +1 -0
  39. package/dist/library/oss-layout.d.ts +25 -0
  40. package/dist/library/oss-layout.js +1 -0
  41. package/dist/library/oss-layout.js.map +1 -0
  42. package/dist/library/oss.d.ts +136 -0
  43. package/dist/library/oss.js +30 -0
  44. package/dist/library/oss.js.map +1 -0
  45. package/dist/library/rsengine.d.ts +116 -0
  46. package/dist/library/rsengine.js +2604 -0
  47. package/dist/library/rsengine.js.map +1 -0
  48. package/dist/library/rsform-api.d.ts +74 -0
  49. package/dist/library/rsform-api.js +879 -0
  50. package/dist/library/rsform-api.js.map +1 -0
  51. package/dist/library/rsform.d.ts +206 -0
  52. package/dist/library/rsform.js +32 -0
  53. package/dist/library/rsform.js.map +1 -0
  54. package/dist/library/rsmodel-api.d.ts +43 -0
  55. package/dist/library/rsmodel-api.js +836 -0
  56. package/dist/library/rsmodel-api.js.map +1 -0
  57. package/dist/library/rsmodel.d.ts +52 -0
  58. package/dist/library/rsmodel.js +25 -0
  59. package/dist/library/rsmodel.js.map +1 -0
  60. package/dist/library/structure-planner.d.ts +33 -0
  61. package/dist/library/structure-planner.js +481 -0
  62. package/dist/library/structure-planner.js.map +1 -0
  63. package/dist/parsing/ast.d.ts +49 -0
  64. package/dist/parsing/ast.js +93 -0
  65. package/dist/parsing/ast.js.map +1 -0
  66. package/dist/parsing/index.d.ts +3 -0
  67. package/dist/parsing/index.js +141 -0
  68. package/dist/parsing/index.js.map +1 -0
  69. package/dist/parsing/lezer-tree.d.ts +13 -0
  70. package/dist/parsing/lezer-tree.js +50 -0
  71. package/dist/parsing/lezer-tree.js.map +1 -0
  72. package/dist/rslang/api.d.ts +53 -0
  73. package/dist/rslang/api.js +846 -0
  74. package/dist/rslang/api.js.map +1 -0
  75. package/dist/rslang/ast-annotations.d.ts +18 -0
  76. package/dist/rslang/ast-annotations.js +56 -0
  77. package/dist/rslang/ast-annotations.js.map +1 -0
  78. package/dist/rslang/error.d.ts +85 -0
  79. package/dist/rslang/error.js +159 -0
  80. package/dist/rslang/error.js.map +1 -0
  81. package/dist/rslang/eval/calculator.d.ts +43 -0
  82. package/dist/rslang/eval/calculator.js +1639 -0
  83. package/dist/rslang/eval/calculator.js.map +1 -0
  84. package/dist/rslang/eval/evaluation-cache.d.ts +36 -0
  85. package/dist/rslang/eval/evaluation-cache.js +310 -0
  86. package/dist/rslang/eval/evaluation-cache.js.map +1 -0
  87. package/dist/rslang/eval/evaluator.d.ts +70 -0
  88. package/dist/rslang/eval/evaluator.js +1514 -0
  89. package/dist/rslang/eval/evaluator.js.map +1 -0
  90. package/dist/rslang/eval/value-api.d.ts +48 -0
  91. package/dist/rslang/eval/value-api.js +490 -0
  92. package/dist/rslang/eval/value-api.js.map +1 -0
  93. package/dist/rslang/eval/value.d.ts +36 -0
  94. package/dist/rslang/eval/value.js +118 -0
  95. package/dist/rslang/eval/value.js.map +1 -0
  96. package/dist/rslang/index.d.ts +17 -0
  97. package/dist/rslang/index.js +4314 -0
  98. package/dist/rslang/index.js.map +1 -0
  99. package/dist/rslang/labels.d.ts +16 -0
  100. package/dist/rslang/labels.js +315 -0
  101. package/dist/rslang/labels.js.map +1 -0
  102. package/dist/rslang/parser/expression-generator.d.ts +10 -0
  103. package/dist/rslang/parser/expression-generator.js +451 -0
  104. package/dist/rslang/parser/expression-generator.js.map +1 -0
  105. package/dist/rslang/parser/normalize.d.ts +11 -0
  106. package/dist/rslang/parser/normalize.js +507 -0
  107. package/dist/rslang/parser/normalize.js.map +1 -0
  108. package/dist/rslang/parser/parser.d.ts +5 -0
  109. package/dist/rslang/parser/parser.js +24 -0
  110. package/dist/rslang/parser/parser.js.map +1 -0
  111. package/dist/rslang/parser/parser.terms.d.ts +42 -0
  112. package/dist/rslang/parser/parser.terms.js +84 -0
  113. package/dist/rslang/parser/parser.terms.js.map +1 -0
  114. package/dist/rslang/parser/syntax-errors.d.ts +11 -0
  115. package/dist/rslang/parser/syntax-errors.js +403 -0
  116. package/dist/rslang/parser/syntax-errors.js.map +1 -0
  117. package/dist/rslang/parser/token.d.ts +79 -0
  118. package/dist/rslang/parser/token.js +95 -0
  119. package/dist/rslang/parser/token.js.map +1 -0
  120. package/dist/rslang/semantic/analyzer.d.ts +39 -0
  121. package/dist/rslang/semantic/analyzer.js +2604 -0
  122. package/dist/rslang/semantic/analyzer.js.map +1 -0
  123. package/dist/rslang/semantic/arguments-extractor.d.ts +42 -0
  124. package/dist/rslang/semantic/arguments-extractor.js +366 -0
  125. package/dist/rslang/semantic/arguments-extractor.js.map +1 -0
  126. package/dist/rslang/semantic/type-auditor.d.ts +73 -0
  127. package/dist/rslang/semantic/type-auditor.js +1570 -0
  128. package/dist/rslang/semantic/type-auditor.js.map +1 -0
  129. package/dist/rslang/semantic/typification-api.d.ts +27 -0
  130. package/dist/rslang/semantic/typification-api.js +320 -0
  131. package/dist/rslang/semantic/typification-api.js.map +1 -0
  132. package/dist/rslang/semantic/typification-parser.d.ts +12 -0
  133. package/dist/rslang/semantic/typification-parser.js +226 -0
  134. package/dist/rslang/semantic/typification-parser.js.map +1 -0
  135. package/dist/rslang/semantic/typification.d.ts +119 -0
  136. package/dist/rslang/semantic/typification.js +74 -0
  137. package/dist/rslang/semantic/typification.js.map +1 -0
  138. package/dist/rslang/semantic/value-auditor.d.ts +43 -0
  139. package/dist/rslang/semantic/value-auditor.js +523 -0
  140. package/dist/rslang/semantic/value-auditor.js.map +1 -0
  141. package/dist/rslang/semantic/value-class.d.ts +10 -0
  142. package/dist/rslang/semantic/value-class.js +9 -0
  143. package/dist/rslang/semantic/value-class.js.map +1 -0
  144. package/dist/rslang/typification-graph.d.ts +33 -0
  145. package/dist/rslang/typification-graph.js +311 -0
  146. package/dist/rslang/typification-graph.js.map +1 -0
  147. package/dist/shared/branded.d.ts +7 -0
  148. package/dist/shared/branded.js +1 -0
  149. package/dist/shared/branded.js.map +1 -0
  150. package/dist/shared/hash.d.ts +6 -0
  151. package/dist/shared/hash.js +18 -0
  152. package/dist/shared/hash.js.map +1 -0
  153. package/dist/shared/index.d.ts +2 -0
  154. package/dist/shared/index.js +18 -0
  155. package/dist/shared/index.js.map +1 -0
  156. package/package.json +184 -0
  157. package/src/cctext/index.ts +9 -0
  158. package/src/cctext/language-api.test.ts +149 -0
  159. package/src/cctext/language-api.ts +285 -0
  160. package/src/cctext/language.ts +80 -0
  161. package/src/graph/graph.test.ts +392 -0
  162. package/src/graph/graph.ts +433 -0
  163. package/src/graph/index.ts +1 -0
  164. package/src/index.ts +96 -0
  165. package/src/library/folder-tree.test.ts +47 -0
  166. package/src/library/folder-tree.ts +156 -0
  167. package/src/library/index.ts +46 -0
  168. package/src/library/library-api.test.ts +32 -0
  169. package/src/library/library-api.ts +11 -0
  170. package/src/library/library.ts +61 -0
  171. package/src/library/oss-api.ts +449 -0
  172. package/src/library/oss-layout-api.ts +377 -0
  173. package/src/library/oss-layout.ts +27 -0
  174. package/src/library/oss.ts +150 -0
  175. package/src/library/rsengine.ts +593 -0
  176. package/src/library/rsform-api.ts +533 -0
  177. package/src/library/rsform.ts +228 -0
  178. package/src/library/rsmodel-api.ts +340 -0
  179. package/src/library/rsmodel.ts +50 -0
  180. package/src/library/structure-planner.ts +143 -0
  181. package/src/parsing/ast.ts +136 -0
  182. package/src/parsing/index.ts +15 -0
  183. package/src/parsing/lezer-tree.ts +69 -0
  184. package/src/rslang/api.test.ts +116 -0
  185. package/src/rslang/api.ts +183 -0
  186. package/src/rslang/ast-annotations.ts +70 -0
  187. package/src/rslang/error.ts +129 -0
  188. package/src/rslang/eval/calculator.test.ts +124 -0
  189. package/src/rslang/eval/calculator.ts +121 -0
  190. package/src/rslang/eval/evaluation-cache.ts +257 -0
  191. package/src/rslang/eval/evaluator.test.ts +352 -0
  192. package/src/rslang/eval/evaluator.ts +935 -0
  193. package/src/rslang/eval/value-api.test.ts +105 -0
  194. package/src/rslang/eval/value-api.ts +444 -0
  195. package/src/rslang/eval/value.ts +102 -0
  196. package/src/rslang/index.ts +23 -0
  197. package/src/rslang/labels.ts +191 -0
  198. package/src/rslang/parser/expression-generator.test.ts +100 -0
  199. package/src/rslang/parser/expression-generator.ts +466 -0
  200. package/src/rslang/parser/normalize.test.ts +99 -0
  201. package/src/rslang/parser/normalize.ts +462 -0
  202. package/src/rslang/parser/parser.terms.ts +42 -0
  203. package/src/rslang/parser/parser.test.ts +153 -0
  204. package/src/rslang/parser/parser.ts +20 -0
  205. package/src/rslang/parser/rslang.grammar +251 -0
  206. package/src/rslang/parser/syntax-errors.ts +209 -0
  207. package/src/rslang/parser/token.ts +106 -0
  208. package/src/rslang/semantic/analyzer.test.ts +59 -0
  209. package/src/rslang/semantic/analyzer.ts +179 -0
  210. package/src/rslang/semantic/arguments-extractor.ts +327 -0
  211. package/src/rslang/semantic/type-auditor.test.ts +326 -0
  212. package/src/rslang/semantic/type-auditor.ts +1049 -0
  213. package/src/rslang/semantic/typification-api.test.ts +46 -0
  214. package/src/rslang/semantic/typification-api.ts +321 -0
  215. package/src/rslang/semantic/typification-parser.test.ts +50 -0
  216. package/src/rslang/semantic/typification-parser.ts +220 -0
  217. package/src/rslang/semantic/typification.ts +180 -0
  218. package/src/rslang/semantic/value-auditor.test.ts +206 -0
  219. package/src/rslang/semantic/value-auditor.ts +332 -0
  220. package/src/rslang/semantic/value-class.ts +11 -0
  221. package/src/rslang/typification-graph.ts +155 -0
  222. package/src/shared/branded.ts +6 -0
  223. package/src/shared/hash.ts +17 -0
  224. package/src/shared/index.ts +2 -0
@@ -0,0 +1,481 @@
1
+ // src/parsing/ast.ts
2
+ var TOKEN_ERROR = 0;
3
+
4
+ // src/rslang/parser/token.ts
5
+ var TokenID = {
6
+ // Global, local IDs and literals
7
+ ERROR: TOKEN_ERROR,
8
+ ID_LOCAL: 258,
9
+ ID_GLOBAL: 259,
10
+ ID_FUNCTION: 260,
11
+ ID_PREDICATE: 261,
12
+ ID_RADICAL: 262,
13
+ LIT_INTEGER: 263,
14
+ LIT_WHOLE_NUMBERS: 264,
15
+ LIT_EMPTYSET: 265,
16
+ // Arithmetic
17
+ PLUS: 266,
18
+ MINUS: 267,
19
+ MULTIPLY: 268,
20
+ // Integer predicate symbols
21
+ GREATER: 269,
22
+ LESSER: 270,
23
+ GREATER_OR_EQ: 271,
24
+ LESSER_OR_EQ: 272,
25
+ // Equality comparison
26
+ EQUAL: 273,
27
+ NOTEQUAL: 274,
28
+ // Logic predicate symbols
29
+ QUANTOR_UNIVERSAL: 275,
30
+ QUANTOR_EXISTS: 276,
31
+ LOGIC_NOT: 277,
32
+ LOGIC_EQUIVALENT: 278,
33
+ LOGIC_IMPLICATION: 279,
34
+ LOGIC_OR: 280,
35
+ LOGIC_AND: 281,
36
+ // Set theory predicate symbols
37
+ SET_IN: 282,
38
+ SET_NOT_IN: 283,
39
+ SUBSET: 284,
40
+ SUBSET_OR_EQ: 285,
41
+ NOT_SUBSET: 286,
42
+ // Set theory operators
43
+ DECART: 287,
44
+ SET_UNION: 288,
45
+ SET_INTERSECTION: 289,
46
+ SET_MINUS: 290,
47
+ SET_SYMMETRIC_MINUS: 291,
48
+ BOOLEAN: 292,
49
+ // Structure operations
50
+ BIGPR: 293,
51
+ SMALLPR: 294,
52
+ FILTER: 295,
53
+ CARD: 296,
54
+ BOOL: 297,
55
+ DEBOOL: 298,
56
+ REDUCE: 299,
57
+ // Term constructions prefixes
58
+ DECLARATIVE: 300,
59
+ RECURSIVE: 301,
60
+ IMPERATIVE: 302,
61
+ ITERATE: 303,
62
+ ASSIGN: 304,
63
+ // Punctuation
64
+ PUNCTUATION_DEFINE: 305,
65
+ PUNCTUATION_STRUCT: 306,
66
+ PUNCTUATION_PL: 307,
67
+ PUNCTUATION_PR: 308,
68
+ PUNCTUATION_CL: 309,
69
+ PUNCTUATION_CR: 310,
70
+ PUNCTUATION_SL: 311,
71
+ PUNCTUATION_SR: 312,
72
+ PUNCTUATION_BAR: 313,
73
+ PUNCTUATION_COMMA: 314,
74
+ PUNCTUATION_SEMICOLON: 315,
75
+ // ======= Non-terminal tokens =========
76
+ NT_ENUM_DECL: 316,
77
+ NT_TUPLE: 317,
78
+ NT_ENUMERATION: 318,
79
+ NT_TUPLE_DECL: 319,
80
+ NT_ARG_DECL: 320,
81
+ NT_FUNC_DEFINITION: 321,
82
+ NT_ARGUMENTS: 322,
83
+ NT_FUNC_CALL: 323,
84
+ NT_DECLARATIVE_EXPR: 324,
85
+ NT_IMPERATIVE_EXPR: 325,
86
+ NT_RECURSIVE_FULL: 326,
87
+ NT_RECURSIVE_SHORT: 327,
88
+ // ======= Helper tokens ========
89
+ INTERRUPT: 328,
90
+ END: 329
91
+ };
92
+
93
+ // src/rslang/semantic/typification.ts
94
+ var TypeID = {
95
+ anyTypification: 1,
96
+ integer: 2,
97
+ basic: 3,
98
+ tuple: 4,
99
+ collection: 5,
100
+ logic: 6,
101
+ function: 7,
102
+ predicate: 8
103
+ };
104
+ var TypeClass = {
105
+ logic: 1,
106
+ typification: 2,
107
+ function: 3,
108
+ predicate: 4
109
+ };
110
+ var LogicT = { typeID: TypeID.logic };
111
+ var IntegerT = {
112
+ typeID: TypeID.integer,
113
+ isOrdered: true,
114
+ isArithmetic: true,
115
+ isIntegerCompatible: true
116
+ };
117
+ function makeTypePath(path) {
118
+ return path;
119
+ }
120
+ var AnyTypificationT = { typeID: TypeID.anyTypification };
121
+ var EmptySetT = bool(AnyTypificationT);
122
+ function bool(base) {
123
+ return { typeID: TypeID.collection, base };
124
+ }
125
+ function isTypification(type) {
126
+ return type?.typeID === TypeID.basic || type?.typeID === TypeID.anyTypification || type?.typeID === TypeID.integer || type?.typeID === TypeID.collection || type?.typeID === TypeID.tuple;
127
+ }
128
+
129
+ // src/rslang/parser/parser.ts
130
+ import { LRParser } from "@lezer/lr";
131
+ var parser = LRParser.deserialize({
132
+ version: 14,
133
+ states: "2lO!sQPOOOVQPO'#CdO$qQPO'#C`O&pQPO'#C`O*bQPO'#C_Q*jQPOOO,TQPO'#CyOVQPO'#CtO,]QPO'#CtOOQO'#Ct'#CtOOQO'#C^'#C^OOQO'#ES'#ESOOQO'#ET'#ETO,bQPO'#DeO,iQPO'#DfO,qQPO'#DhO,vQPO'#DjO,{QPO'#DnO-QQPO'#DrOOQO'#EU'#EUOOQO'#EV'#EVOOQO'#DS'#DSO-VQPO'#DSO-[QPO'#DSOOQO'#EQ'#EQO,TQPO'#DzQOQPOOO-aQPO'#ERO-nQPO,59OO-vQPO'#CeO-{QPO,58xO/lQPO,59tOVQPO,58yOVQPO,58yOVQPO,59iOVQPO,59iOVQPO,59iOVQPO,59iOVQPO,59tOVQPO,59tOVQPO,59tOVQPO,59tOVQPO,59tOVQPO,59tOVQPO,59tOVQPO,59tOVQPO'#CdOOQO'#C`'#C`OOQO'#C{'#C{O1]QPO,59eO2rQPO,59`OVQPO,59`OOQO'#ER'#ERO5TQPO,5:PO5]QPO,5:UOVQPO,5:QOOQO,5:Q,5:QOVQPO,5:SO,TQPO,5:UOVQPO,5:YO,TQPO,5:^OVQPO,59nOVQPO,59nO5dQPO'#D|OOQO'#D{'#D{O5iQPO,5:fOOQO1G.j1G.jOVQPO,59POOQO1G.d1G.dOOQO1G/`1G/`O5qQPO1G.eO7vQPO1G.eO:zQPO1G/TO=]QPO1G/TO?nQPO1G/TOBPQPO1G/TOGyQPO1G/`OHQQPO1G/`OKpQPO1G/`O! `QPO1G/`O! gQPO1G/`O! nQPO1G/`O! uQPO1G/`O,TQPO,59gOVQPO1G/PO!%aQPO1G.zOOQO1G/k1G/kOVQPO1G/pO!%iQPO1G/lO!%pQPO1G/nO!%xQPO1G/pO!%}QPO1G/tO!&UQPO1G/xO!&ZQPO1G/YO!&cQPO1G/YOVQPO,5:hO,TQPO,5:gOVQPO1G0QO!&jQPO1G.kOOQO1G/R1G/RO!&zQPO7+$kOOQO7+$f7+$fO!(gQPO7+%[OOQO7+%W7+%WO!(nQPO7+%YOVQPO7+%[OVQPO7+%`OVQPO7+%dOOQO7+$t7+$tO!(sQPO1G0SOOQO1G0R1G0RO!(}QPO7+%lO!)UQPO<<HVOVQPO<<HvOVQPO<<HtO!+gQPO<<HvO!+nQPO'#DoO!+xQPO<<HzO!,QQPO<<IOO!,XQPOAN>bO!,`QPOAN>`OVQPOAN>bOVQPO,5:ZOOQOAN>fAN>fOVQPOAN>jOOQOG23|G23|OOQOG23zG23zO!,gQPOG23|O!,nQPO1G/uO!,xQPOG24UOOQOLD)hLD)hOOQOLD)pLD)pOVQPOLD)pO!-SQPO!$'M[OOQO!)9Bv!)9Bv",
134
+ stateData: "!-l~O!sOS~OTQOVPOiVOjWOnUOpUOwZOxZOyZOz[O{[O!W]O!Z^O!]_O!``O!aaO!ebO!gfO!hdO!idO!jdO!kdO!ldO!mdO~OkiO~PVOZSX[SX]!wX^!wX_!wX`!wXa!wXb!wXc!wXd!wXe!wXf!wXg!wXr!wXs!wXt!wXu!wX}!wX!O!wX!P!wX!Q!wX!R!wX!S!wX!T!wX!U!wXY!wX!V!wX~O!q!wXU!wXl!wX!_!wXT!wXV!wXi!wXj!wXn!wXp!wXw!wXx!wXy!wXz!wX{!wX!W!wX!Z!wX!]!wX!`!wX!a!wX!e!wX!g!wX!h!wX!i!wX!j!wX!k!wX!l!wX!m!wX!d!wX~P!zOZSX[SX]!xX^!xX_!xX`!xXa!xXb!xXc!xXd!xXe!xXf!xXg!xXr!xXs!xXt!xXu!xX}!xX!O!xX!P!xX!Q!xX!R!xX!S!xX!T!xX!U!xX!q!xXY!xX!V!xXU!xXl!xX!_!xXT!xXV!xXi!xXj!xXn!xXp!xXw!xXx!xXy!xXz!xX{!xX!W!xX!Z!xX!]!xX!`!xX!a!xX!e!xX!g!xX!h!xX!i!xX!j!xX!k!xX!l!xX!m!xX!d!xX~OZpO[pO~O]qO^qO_qO`qOaqObqOcqOdqOeqOfqOgqOrrOssOttOuuO}vO!OwO!PxO!QyO!RzO!S{O!T|O!U}O~OT!POV!OO~Ok!TO~OT!WO~PYOV!XO!Z^O~Ok!ZO~O!W![O~O!W!]O~O!W!^O~Ok!_O~OV!`O~OY!uX!V!uXl!uX~P*jOU!dOY!uX~OY!eO~OU!fOY!tX]!tX^!tX_!tX`!tXa!tXb!tXc!tXd!tXe!tXf!tXg!tXr!tXs!tXt!tXu!tX}!tX!O!tX!P!tX!Q!tX!R!tX!S!tX!T!tX!U!tX~OU!gOYvX]vX^vX_vX`vXavXbvXcvXdvXevXfvXgvXrvXsvXtvXuvX}vX!OvX!PvX!QvX!RvX!SvX!TvX!UvX~OY!uO]!vO~O]qO^qO_qO`qOaqObqOcqOdqOeqOfqOgqO}vO!OwO!PxO!QyO!RzO!S{O!T|O!U}O~Orhashathauha!qhaUhaYha!Vhalha!_haThaVhaihajhanhaphawhaxhayhazha{ha!Wha!Zha!]ha!`ha!aha!eha!gha!hha!iha!jha!kha!lha!mha!dha~P1eOY!eO!V!xO~O]!yO~P!zO]#RO~OY#SOl#TO~O!qRiURiYRi!VRilRi!_RiTRiVRiiRijRinRipRiwRixRiyRizRi{Ri!WRi!ZRi!]Ri!`Ri!aRi!eRi!gRi!hRi!iRi!jRi!kRi!lRi!mRi!dRi~P*jO]Ri^Ri_Ri`RiaRibRicRidRieRifRigRirRisRitRiuRi!qRiURiYRi!VRilRi!_RiTRiVRiiRijRinRipRiwRixRiyRizRi{Ri!WRi!ZRi!]Ri!`Ri!aRi!eRi!gRi!hRi!iRi!jRi!kRi!lRi!mRi!dRi~P+iOssOttOuuOrqi!qqiUqiYqi!Vqilqi!_qiTqiVqiiqijqinqipqiwqixqiyqizqi{qi!Wqi!Zqi!]qi!`qi!aqi!eqi!gqi!hqi!iqi!jqi!kqi!lqi!mqi!dqi~P1eOttOuuOrqisqi!qqiUqiYqi!Vqilqi!_qiTqiVqiiqijqinqipqiwqixqiyqizqi{qi!Wqi!Zqi!]qi!`qi!aqi!eqi!gqi!hqi!iqi!jqi!kqi!lqi!mqi!dqi~P1eOuuOrqisqitqi!qqiUqiYqi!Vqilqi!_qiTqiVqiiqijqinqipqiwqixqiyqizqi{qi!Wqi!Zqi!]qi!`qi!aqi!eqi!gqi!hqi!iqi!jqi!kqi!lqi!mqi!dqi~P1eOrqisqitqiuqi!qqiUqiYqi!Vqilqi!_qiTqiVqiiqijqinqipqiwqixqiyqizqi{qi!Wqi!Zqi!]qi!`qi!aqi!eqi!gqi!hqi!iqi!jqi!kqi!lqi!mqi!dqi~P1eO}vO]|i^|i_|i`|ia|ib|ic|id|ie|if|ig|ir|is|it|iu|i!P|i!Q|i!R|i!S|i!T|i!U|i!q|iU|iY|i!V|il|i!_|iT|iV|ii|ij|in|ip|iw|ix|iy|iz|i{|i!W|i!Z|i!]|i!`|i!a|i!e|i!g|i!h|i!i|i!j|i!k|i!l|i!m|i!d|i~O!O|i~PDbO!OwO~PDbO}vO!OwO!PxO!U}O]|i^|i_|i`|ia|ib|ic|id|ie|if|ig|ir|is|it|iu|i!R|i!S|i!T|i!q|iU|iY|i!V|il|i!_|iT|iV|ii|ij|in|ip|iw|ix|iy|iz|i{|i!W|i!Z|i!]|i!`|i!a|i!e|i!g|i!h|i!i|i!j|i!k|i!l|i!m|i!d|i~O!Q|i~PHXO}vO!OwO!PxO!QyO!T|O!U}O]|i^|i_|i`|ia|ib|ic|id|ie|if|ig|ir|is|it|iu|i!S|i!q|iU|iY|i!V|il|i!_|iT|iV|ii|ij|in|ip|iw|ix|iy|iz|i{|i!W|i!Z|i!]|i!`|i!a|i!e|i!g|i!h|i!i|i!j|i!k|i!l|i!m|i!d|i~O!R|i~PKwO!RzO~PKwO!QyO~PHXO}vO!OwO!PxO]|i^|i_|i`|ia|ib|ic|id|ie|if|ig|ir|is|it|iu|i!Q|i!R|i!S|i!T|i!U|i!q|iU|iY|i!V|il|i!_|iT|iV|ii|ij|in|ip|iw|ix|iy|iz|i{|i!W|i!Z|i!]|i!`|i!a|i!e|i!g|i!h|i!i|i!j|i!k|i!l|i!m|i!d|i~OY!eOl#XO~OU#ZO~P*jOY!eOl#[O~O]#]O~O!_#^O~P*jO[#_O~OY!eOl#`O~OU#`O~P*jOUXiYXi!VXilXi~P*jO]qO^qO_qO`qOaqObqOcqOdqOeqOfqOgqOrrOssOttOuuO}vO!OwO!PxO!QyO!RzO!S{O!T|O!U}O~PVO!_#eO~P*jOV#fO~OY!pil!pi~P*jO!q!nq~P*jOrmysmytmyumy!qmyUmyYmy!Vmylmy!_myTmyVmyimyjmynmypmywmyxmyymyzmy{my!Wmy!Zmy!]my!`my!amy!emy!gmy!hmy!imy!jmy!kmy!lmy!mmy!dmy~P1eO!_#mO~P*jO!V!cX!d!cX~P*jO!V#oO!d#nO~O!_#pO~P*jO!V#qO~P*jOU#rO~P*jO!V#vO~P*jO!V!ci!d!ci~P*jO!V#wO!_#xO~P*jO!V#zO~P*jO!]!hj!gz{!j!k!l!m!iT!e!a!`!a~",
135
+ goto: "1O!zPP!{#y$uPPP&R'VPPPPPPPPPPPPPP#yPPPP'aP(]P#yPPPP(`PPPPP)[PPPPPPPPPP*Y+UP*YP*YPPP*Y,TPP*YPPPPPPP,W,Z,^PPP,d.v/W/W/W0S!phOV]pqrstuvwxyz{|}!O!T!X!Z!]!_!`!e!v!y#R#T#W#]#^#_#e#f#m#n#p#xRnP!sYOPV]pqrstuvwxyz{|}!O!T!X!Z!]!_!`!e!v!y#R#T#W#]#^#_#e#f#m#n#p#x!rSOPV]pqrstuvwxyz{|}!O!T!X!Z!]!_!`!e!v!y#R#T#W#]#^#_#e#f#m#n#p#xQ!QUS!ai#SQ!|![Q#O!^R#V!u!rROPV]pqrstuvwxyz{|}!O!T!X!Z!]!_!`!e!v!y#R#T#W#]#^#_#e#f#m#n#p#x]!PUi![!^!u#SSlP!OX!U]!T!Z!_!sXOPV]pqrstuvwxyz{|}!O!T!X!Z!]!_!`!e!v!y#R#T#W#]#^#_#e#f#m#n#p#xR!RU!shOPV]pqrstuvwxyz{|}!O!T!X!Z!]!_!`!e!v!y#R#T#W#]#^#_#e#f#m#n#p#x!peOV]pqrstuvwxyz{|}!O!T!X!Z!]!_!`!e!v!y#R#T#W#]#^#_#e#f#m#n#p#xRoP!scOPV]pqrstuvwxyz{|}!O!T!X!Z!]!_!`!e!v!y#R#T#W#]#^#_#e#f#m#n#p#x!rcOPV]pqrstuvwxyz{|}!O!T!X!Z!]!_!`!e!v!y#R#T#W#]#^#_#e#f#m#n#p#xR!Y^R#i#^RjOR!ciQ!biR#b#SQTO[kP]!O!T!Z!_Q!SVQ!gvQ!hpQ!iqQ!jrQ!ksQ!ltQ!muQ!nwQ!oxQ!pyQ!qzQ!r{Q!s|Q!t}Q!z!XQ!}!]Q#Q!`Q#U!eQ#W!vQ#Y!yQ#a#RQ#c#TQ#d#WQ#g#]Q#h#^Q#j#_Q#k#eQ#l#fQ#s#mQ#t#nQ#u#pR#y#xSmP!OQ!V]Q!w!TQ!{!ZR#P!_!seOPV]pqrstuvwxyz{|}!O!T!X!Z!]!_!`!e!v!y#R#T#W#]#^#_#e#f#m#n#p#x!sgOPV]pqrstuvwxyz{|}!O!T!X!Z!]!_!`!e!v!y#R#T#W#]#^#_#e#f#m#n#p#x",
136
+ nodeNames: "\u26A0 Expression Logic Logic_predicates Variable Local ) ( Tuple Expr_enum_min2 , :\u2208 := \u2208 \u2209 \u2286 \u2284 \u2282 > \u2265 < \u2264 \u2260 = Logic_unary \xAC Predicate [ ] Logic_quantor \u2200 Variable_pack \u2203 Logic_binary \u21D4 \u21D2 \u2228 & Setexpr Integer EmptySet IntegerSet Global Radical Setexpr_binary * + - \u222A \\ \u2206 \u2229 \xD7 } { Enumeration Boolean \u212C Filter_expression Filter Declarative | PrefixD PrefixI Imperative Imp_blocks ; PrefixR Recursion Function BigPr SmallPr Card Bool Debool Red Function_decl Arguments Declaration",
137
+ maxTerm: 87,
138
+ nodeProps: [
139
+ ["openedBy", 6, "(", 53, "{"],
140
+ ["closedBy", 7, ")", 54, "}"]
141
+ ],
142
+ skippedNodes: [0],
143
+ repeatNodeCount: 0,
144
+ tokenData: "6j~R!jX^%spq%svw&hxy&myz&rz{&w{|&||}'R}!O'W!Q![']![!]'e!]!^'x!^!_'}!_!`(S!`!a(X!c!d(^!e!f(^!f!g(l!h!i(t!k!l)h!p!q(^!r!s)m!t!u*a!u!v(^!v!w(^!z!{(^!|!}*q!}#O*v#O#P*{#P#Q+Q#R#S+V#T#U+V#U#V+m#V#W-]#W#X.x#X#d+V#d#e1b#e#f+V#f#g2w#g#o+V#o#p4R#p#q4W#q#r4]#y#z%s$f$g%s$r$s4b%o%p4g5i6S+V#BY#BZ%s$IS$I_%s$I|$JO%s$JT$JU%s$KV$KW%s% l% m4l%%Y%%Z4q%%[%%]4v%&Y%&Z4{%&]%&^5Q%&_%&`5V%&`%&a5[%&b%&c5a%&c%&d5f%'S%'T5k%'T%'U5p%'U%'V5u%(^%(_5z%(b%(c6P%(c%(d6U%)Q%)R6Z%)S%)T6`%)U%)V6e&FU&FV%s~%xY!s~X^%spq%s#y#z%s$f$g%s#BY#BZ%s$IS$I_%s$I|$JO%s$JT$JU%s$KV$KW%s&FU&FV%s~&mOu~~&rOV~~&wOU~~&|O}~~'RO!O~~'WOY~~']O!P~~'bPw~!Q![']~'hQ!_!`'n%&b%&c's~'sO[~~'xOZ~~'}O!d~~(SOd~~(XOg~~(^Ob~~(aP!Q![(d~(iPz~!Q![(d~(qP!`~!Q![(d~(wQ!Q![(}#]#^)V~)SP!g~!Q![(}~)YP!R![)]~)bQ!]~|})V!Q![)]~)mO!a~~)pQ!Q![)v#f#g*O~){Pj~!Q![)v~*RP!R![*U~*ZQ!h~|}*O!Q![*U~*fP!e~!Q![*i~*nP{~!Q![*i~*vOy~~*{Ok~~+QO!R~~+VOl~~+[RT~!Q![+e#T#o+V5i6S+V~+jPT~!Q![+e~+rTT~!Q![+e#T#c+V#c#d,R#d#o+V5i6S+V~,WTT~!Q![+e#T#c+V#c#d,g#d#o+V5i6S+V~,lTT~!Q![+e#T#`+V#`#a,{#a#o+V5i6S+V~-SR!k~T~!Q![+e#T#o+V5i6S+V~-bST~!Q![+e#T#U-n#U#o+V5i6S+V~-sTT~!Q![+e#T#f+V#f#g.S#g#o+V5i6S+V~.XTT~!Q![+e#T#W+V#W#X.h#X#o+V5i6S+V~.oR!j~T~!Q![+e#T#o+V5i6S+V~.}TT~!Q![+e#T#X+V#X#Y/^#Y#o+V5i6S+V~/cTT~!Q![+e#T#U+V#U#V/r#V#o+V5i6S+V~/wTT~!Q![+e#T#c+V#c#d0W#d#o+V5i6S+V~0]TT~!Q![+e#T#c+V#c#d0l#d#o+V5i6S+V~0qTT~!Q![+e#T#`+V#`#a1Q#a#o+V5i6S+V~1XR!l~T~!Q![+e#T#o+V5i6S+V~1gTT~!Q![+e#T#f+V#f#g1v#g#o+V5i6S+V~1{ST~!Q!R+e!R![2X#T#o+V5i6S+V~2`Q!i~T~|}2f!Q![2X~2iP!R![2l~2qQ!i~|}2f!Q![2l~2|TT~!Q![+e#T#X+V#X#Y3]#Y#o+V5i6S+V~3bTT~!Q![+e#T#W+V#W#X3q#X#o+V5i6S+V~3xR!m~T~!Q![+e#T#o+V5i6S+V~4WO!W~~4]O!_~~4bO!V~~4gOi~~4lO!U~~4qO!Z~~4vOs~~4{Or~~5QOn~~5VOp~~5[Ox~~5aO!S~~5fO]~~5kO^~~5pOt~~5uO!T~~5zO!Q~~6POf~~6UOe~~6ZOc~~6`Oa~~6eO`~~6jO_~",
145
+ tokenizers: [0],
146
+ topRules: { "Expression": [0, 1] },
147
+ tokenPrec: 2679
148
+ });
149
+
150
+ // src/rslang/parser/parser.terms.ts
151
+ var Local = 5;
152
+ var Tuple = 8;
153
+ var Predicate = 26;
154
+ var Variable_pack = 31;
155
+ var Integer = 39;
156
+ var EmptySet = 40;
157
+ var IntegerSet = 41;
158
+ var Global = 42;
159
+ var Radical = 43;
160
+ var Enumeration = 55;
161
+ var Boolean = 56;
162
+ var Filter = 59;
163
+ var Declarative = 60;
164
+ var Imperative = 64;
165
+ var Function = 69;
166
+ var BigPr = 70;
167
+ var SmallPr = 71;
168
+ var Card = 72;
169
+ var Bool = 73;
170
+ var Debool = 74;
171
+ var Red = 75;
172
+ var Function_decl = 76;
173
+ var Arguments = 77;
174
+ var Declaration = 78;
175
+
176
+ // src/rslang/parser/normalize.ts
177
+ var idRecord = {
178
+ [Global]: TokenID.ID_GLOBAL,
179
+ [Local]: TokenID.ID_LOCAL,
180
+ [Radical]: TokenID.ID_RADICAL,
181
+ [Function]: TokenID.ID_FUNCTION,
182
+ [Predicate]: TokenID.ID_PREDICATE,
183
+ [Integer]: TokenID.LIT_INTEGER,
184
+ [EmptySet]: TokenID.LIT_EMPTYSET,
185
+ [IntegerSet]: TokenID.LIT_WHOLE_NUMBERS,
186
+ [Boolean]: TokenID.BOOLEAN,
187
+ [BigPr]: TokenID.BIGPR,
188
+ [SmallPr]: TokenID.SMALLPR,
189
+ [Filter]: TokenID.FILTER,
190
+ [Bool]: TokenID.BOOL,
191
+ [Debool]: TokenID.DEBOOL,
192
+ [Red]: TokenID.REDUCE,
193
+ [Card]: TokenID.CARD,
194
+ [Enumeration]: TokenID.NT_ENUMERATION,
195
+ [Tuple]: TokenID.NT_TUPLE,
196
+ [Arguments]: TokenID.NT_ARGUMENTS,
197
+ [Declaration]: TokenID.NT_ARG_DECL,
198
+ [Function_decl]: TokenID.NT_FUNC_DEFINITION,
199
+ [Variable_pack]: TokenID.NT_ENUM_DECL,
200
+ [Declarative]: TokenID.NT_DECLARATIVE_EXPR,
201
+ [Imperative]: TokenID.NT_IMPERATIVE_EXPR
202
+ };
203
+
204
+ // src/rslang/labels.ts
205
+ var INTEGER_TYPE_NAME = "Z";
206
+ var ANY_TYPE_NAME = "R0";
207
+ var LOGIC_TYPE_NAME = "Logic";
208
+ var labelTokenRecord = {
209
+ [TokenID.DECART]: "\xD7",
210
+ [TokenID.PUNCTUATION_PL]: "( )",
211
+ [TokenID.PUNCTUATION_SL]: "[ ]",
212
+ [TokenID.QUANTOR_UNIVERSAL]: "\u2200",
213
+ [TokenID.QUANTOR_EXISTS]: "\u2203",
214
+ [TokenID.LOGIC_NOT]: "\xAC",
215
+ [TokenID.LOGIC_AND]: "&",
216
+ [TokenID.LOGIC_OR]: "\u2228",
217
+ [TokenID.LOGIC_IMPLICATION]: "\u21D2",
218
+ [TokenID.LOGIC_EQUIVALENT]: "\u21D4",
219
+ [TokenID.LIT_EMPTYSET]: "\u2205",
220
+ [TokenID.LIT_WHOLE_NUMBERS]: "Z",
221
+ [TokenID.MULTIPLY]: "*",
222
+ [TokenID.EQUAL]: "=",
223
+ [TokenID.NOTEQUAL]: "\u2260",
224
+ [TokenID.GREATER_OR_EQ]: "\u2265",
225
+ [TokenID.LESSER_OR_EQ]: "\u2264",
226
+ [TokenID.SET_IN]: "\u2208",
227
+ [TokenID.SET_NOT_IN]: "\u2209",
228
+ [TokenID.SUBSET_OR_EQ]: "\u2286",
229
+ [TokenID.SUBSET]: "\u2282",
230
+ [TokenID.NOT_SUBSET]: "\u2284",
231
+ [TokenID.SET_INTERSECTION]: "\u2229",
232
+ [TokenID.SET_UNION]: "\u222A",
233
+ [TokenID.SET_MINUS]: "\\",
234
+ [TokenID.SET_SYMMETRIC_MINUS]: "\u2206",
235
+ [TokenID.BOOLEAN]: "\u212C()",
236
+ [TokenID.NT_DECLARATIVE_EXPR]: "D{}",
237
+ [TokenID.NT_IMPERATIVE_EXPR]: "I{}",
238
+ [TokenID.NT_RECURSIVE_FULL]: "R{}",
239
+ [TokenID.BIGPR]: "Pr1()",
240
+ [TokenID.SMALLPR]: "pr1()",
241
+ [TokenID.FILTER]: "Fi1[]()",
242
+ [TokenID.REDUCE]: "red()",
243
+ [TokenID.CARD]: "card()",
244
+ [TokenID.BOOL]: "bool()",
245
+ [TokenID.DEBOOL]: "debool()",
246
+ [TokenID.ASSIGN]: ":=",
247
+ [TokenID.ITERATE]: ":\u2208"
248
+ };
249
+ function labelType(type) {
250
+ if (!type) {
251
+ return "N/A";
252
+ }
253
+ switch (type.typeID) {
254
+ case TypeID.anyTypification:
255
+ return ANY_TYPE_NAME;
256
+ case TypeID.integer:
257
+ return INTEGER_TYPE_NAME;
258
+ case TypeID.basic:
259
+ return type.baseID;
260
+ case TypeID.tuple:
261
+ return type.factors.map((factor) => factor.typeID === TypeID.tuple ? `(${labelType(factor)})` : labelType(factor)).join("\xD7");
262
+ case TypeID.collection:
263
+ return type.base.typeID === TypeID.collection ? `\u212C${labelType(type.base)}` : `\u212C(${labelType(type.base)})`;
264
+ case TypeID.logic:
265
+ return LOGIC_TYPE_NAME;
266
+ case TypeID.predicate:
267
+ case TypeID.function:
268
+ const argsText = type.args.map((arg) => labelType(arg.type)).join(", ");
269
+ return `[${argsText}] \u2192 ${labelType(type.result)}`;
270
+ }
271
+ }
272
+
273
+ // src/rslang/semantic/typification-api.ts
274
+ var TypeIDToClass = {
275
+ [TypeID.anyTypification]: TypeClass.typification,
276
+ [TypeID.integer]: TypeClass.typification,
277
+ [TypeID.basic]: TypeClass.typification,
278
+ [TypeID.tuple]: TypeClass.typification,
279
+ [TypeID.collection]: TypeClass.typification,
280
+ [TypeID.logic]: TypeClass.logic,
281
+ [TypeID.function]: TypeClass.function,
282
+ [TypeID.predicate]: TypeClass.predicate
283
+ };
284
+
285
+ // src/rslang/api.ts
286
+ function splitTemplateDefinition(target) {
287
+ let start = 0;
288
+ for (; start < target.length && target[start] !== "["; ++start) ;
289
+ if (start < target.length) {
290
+ for (let counter = 0, end = start + 1; end < target.length; ++end) {
291
+ if (target[end] === "[") {
292
+ ++counter;
293
+ } else if (target[end] === "]") {
294
+ if (counter !== 0) {
295
+ --counter;
296
+ } else {
297
+ return {
298
+ head: target.substring(start + 1, end).trim(),
299
+ body: target.substring(end + 1).trim()
300
+ };
301
+ }
302
+ }
303
+ }
304
+ }
305
+ return {
306
+ head: "",
307
+ body: target
308
+ };
309
+ }
310
+
311
+ // src/library/rsform.ts
312
+ var CstType = {
313
+ NOMINAL: "nominal",
314
+ BASE: "basic",
315
+ STRUCTURED: "structure",
316
+ TERM: "term",
317
+ AXIOM: "axiom",
318
+ FUNCTION: "function",
319
+ PREDICATE: "predicate",
320
+ CONSTANT: "constant",
321
+ STATEMENT: "statement"
322
+ };
323
+ var CstClass = {
324
+ NOMINAL: "nominal",
325
+ BASIC: "basic",
326
+ DERIVED: "derived",
327
+ STATEMENT: "statement",
328
+ TEMPLATE: "template"
329
+ };
330
+
331
+ // src/library/rsform-api.ts
332
+ var CST_TYPE_PREFIX = {
333
+ [CstType.NOMINAL]: "N",
334
+ [CstType.BASE]: "X",
335
+ [CstType.CONSTANT]: "C",
336
+ [CstType.STRUCTURED]: "S",
337
+ [CstType.AXIOM]: "A",
338
+ [CstType.TERM]: "D",
339
+ [CstType.FUNCTION]: "F",
340
+ [CstType.PREDICATE]: "P",
341
+ [CstType.STATEMENT]: "T"
342
+ };
343
+ var CST_TYPE_TO_CLASS = {
344
+ [CstType.NOMINAL]: CstClass.NOMINAL,
345
+ [CstType.BASE]: CstClass.BASIC,
346
+ [CstType.CONSTANT]: CstClass.BASIC,
347
+ [CstType.STRUCTURED]: CstClass.BASIC,
348
+ [CstType.TERM]: CstClass.DERIVED,
349
+ [CstType.FUNCTION]: CstClass.DERIVED,
350
+ [CstType.AXIOM]: CstClass.STATEMENT,
351
+ [CstType.PREDICATE]: CstClass.DERIVED,
352
+ [CstType.STATEMENT]: CstClass.STATEMENT
353
+ };
354
+ function findCstByStructure(schema, target, path) {
355
+ for (const cst of schema.items) {
356
+ if (cst.spawner === target.id && cst.spawner_path) {
357
+ if (cst.spawner_path.length === path.length && cst.spawner_path.every((v, i) => v === path[i])) {
358
+ return cst;
359
+ }
360
+ }
361
+ }
362
+ return null;
363
+ }
364
+
365
+ // src/library/structure-planner.ts
366
+ var StructurePlanner = class {
367
+ items = [];
368
+ schema;
369
+ target;
370
+ rootType;
371
+ constructor(schema, target) {
372
+ const eff = target.effectiveType;
373
+ if (eff == null) {
374
+ throw new Error("Invalid typification for target");
375
+ }
376
+ this.schema = schema;
377
+ this.target = target;
378
+ if (target.cst_type === CstType.FUNCTION && !isTypification(eff)) {
379
+ this.rootType = eff.result;
380
+ } else if (isTypification(eff)) {
381
+ this.rootType = eff;
382
+ } else {
383
+ throw new Error("Invalid typification for target");
384
+ }
385
+ }
386
+ build() {
387
+ this.items.push({
388
+ key: "root",
389
+ path: makeTypePath([]),
390
+ type: this.rootType,
391
+ parent: null,
392
+ definition: labelType(this.target.effectiveType),
393
+ existing: this.target
394
+ });
395
+ this.visit(this.rootType, this.rootType.typeID === TypeID.collection ? [0] : [], 0);
396
+ return this.items;
397
+ }
398
+ visit(type, path, parent) {
399
+ switch (type.typeID) {
400
+ case TypeID.collection:
401
+ if (type.base.typeID === TypeID.tuple) {
402
+ type.base.factors.forEach((factor, index) => {
403
+ const nextPath = [...path, index + 1];
404
+ const nextType = bool(factor);
405
+ const nextNode = this.pushNode(nextPath, nextType, parent);
406
+ this.visit(nextType, nextPath, nextNode);
407
+ });
408
+ } else if (type.base.typeID === TypeID.collection) {
409
+ const nextPath = [...path, 0];
410
+ const nextNode = this.pushNode(nextPath, type.base, parent);
411
+ this.visit(type.base, nextPath, nextNode);
412
+ }
413
+ return;
414
+ case TypeID.tuple:
415
+ type.factors.forEach((factor, index) => {
416
+ const nextPath = [...path, index + 1];
417
+ const nextNode = this.pushNode(nextPath, factor, parent);
418
+ this.visit(factor, nextPath, nextNode);
419
+ });
420
+ return;
421
+ default:
422
+ return;
423
+ }
424
+ }
425
+ pushNode(path, type, parent) {
426
+ const typePath = makeTypePath(path);
427
+ this.items.push({
428
+ key: formatPathText(typePath),
429
+ path: typePath,
430
+ type,
431
+ parent,
432
+ definition: produceDefinition(this.target, this.rootType, typePath),
433
+ existing: findCstByStructure(this.schema, this.target, typePath)
434
+ });
435
+ return this.items.length - 1;
436
+ }
437
+ };
438
+ function produceDefinition(target, rootType, path) {
439
+ let current = rootType;
440
+ let expression = target.alias;
441
+ let index = rootType.typeID === TypeID.collection ? 1 : 0;
442
+ let prefix = "";
443
+ if (target.cst_type === CstType.FUNCTION) {
444
+ prefix = `[${splitTemplateDefinition(target.definition_formal).head}] `;
445
+ const funcType = target.effectiveType && !isTypification(target.effectiveType) ? target.effectiveType : null;
446
+ if (funcType) {
447
+ expression = `${expression}[${funcType.args.map((arg) => arg.alias).join(", ")}]`;
448
+ }
449
+ }
450
+ while (index < path.length) {
451
+ const step = path[index];
452
+ switch (current.typeID) {
453
+ case TypeID.collection:
454
+ if (current.base.typeID === TypeID.tuple) {
455
+ expression = `Pr${step}(${expression})`;
456
+ current = bool(current.base.factors[step - 1]);
457
+ index += 1;
458
+ } else {
459
+ expression = `red(${expression})`;
460
+ current = current.base;
461
+ index += 1;
462
+ }
463
+ break;
464
+ case TypeID.tuple:
465
+ expression = `pr${step}(${expression})`;
466
+ current = current.factors[step - 1];
467
+ index += 1;
468
+ break;
469
+ default:
470
+ return prefix + expression;
471
+ }
472
+ }
473
+ return prefix + expression;
474
+ }
475
+ function formatPathText(path) {
476
+ return path.map((step) => String(step)).join(".");
477
+ }
478
+ export {
479
+ StructurePlanner
480
+ };
481
+ //# sourceMappingURL=structure-planner.js.map