@mojir/lits 2.0.23 → 2.1.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 (217) hide show
  1. package/README.md +392 -109
  2. package/dist/cli/cli/src/cliDocumentation/getCliType.d.ts +1 -1
  3. package/dist/cli/cli.js +7212 -9389
  4. package/dist/cli/reference/api.d.ts +21 -18
  5. package/dist/cli/reference/categories/array.d.ts +2 -2
  6. package/dist/cli/reference/categories/assert.d.ts +2 -2
  7. package/dist/cli/reference/categories/bitwise.d.ts +2 -2
  8. package/dist/cli/reference/categories/collection.d.ts +2 -2
  9. package/dist/cli/reference/categories/functional.d.ts +2 -2
  10. package/dist/cli/reference/categories/math.d.ts +1 -1
  11. package/dist/cli/reference/categories/misc.d.ts +1 -1
  12. package/dist/cli/reference/categories/object.d.ts +1 -1
  13. package/dist/cli/reference/categories/regularExpression.d.ts +1 -1
  14. package/dist/cli/reference/categories/sequence.d.ts +1 -1
  15. package/dist/cli/reference/categories/specialExpressions.d.ts +3 -3
  16. package/dist/cli/reference/categories/string.d.ts +1 -1
  17. package/dist/cli/reference/index.d.ts +225 -16
  18. package/dist/cli/src/Lits/Cache.d.ts +1 -1
  19. package/dist/cli/src/Lits/Lits.d.ts +15 -15
  20. package/dist/cli/src/builtin/bindingNode.d.ts +4 -0
  21. package/dist/cli/src/builtin/index.d.ts +10 -30
  22. package/dist/cli/src/builtin/interface.d.ts +19 -26
  23. package/dist/cli/src/builtin/normalExpressions/index.d.ts +4 -1
  24. package/dist/cli/src/builtin/specialExpressionTypes.d.ts +27 -0
  25. package/dist/cli/src/builtin/specialExpressions/and.d.ts +3 -3
  26. package/dist/cli/src/builtin/specialExpressions/array.d.ts +6 -0
  27. package/dist/cli/src/builtin/specialExpressions/cond.d.ts +3 -3
  28. package/dist/cli/src/builtin/specialExpressions/def.d.ts +3 -3
  29. package/dist/cli/src/builtin/specialExpressions/defined.d.ts +5 -0
  30. package/dist/cli/src/builtin/specialExpressions/do.d.ts +3 -3
  31. package/dist/cli/src/builtin/specialExpressions/functions.d.ts +7 -10
  32. package/dist/cli/src/builtin/specialExpressions/if.d.ts +3 -3
  33. package/dist/cli/src/builtin/specialExpressions/let.d.ts +3 -4
  34. package/dist/cli/src/builtin/specialExpressions/loop.d.ts +3 -4
  35. package/dist/cli/src/builtin/specialExpressions/loops.d.ts +5 -14
  36. package/dist/cli/src/builtin/specialExpressions/object.d.ts +6 -0
  37. package/dist/cli/src/builtin/specialExpressions/or.d.ts +3 -3
  38. package/dist/cli/src/builtin/specialExpressions/qq.d.ts +3 -3
  39. package/dist/cli/src/builtin/specialExpressions/recur.d.ts +3 -3
  40. package/dist/cli/src/builtin/specialExpressions/switch.d.ts +3 -3
  41. package/dist/cli/src/builtin/specialExpressions/throw.d.ts +3 -3
  42. package/dist/cli/src/builtin/specialExpressions/try.d.ts +3 -5
  43. package/dist/cli/src/builtin/specialExpressions/unless.d.ts +3 -3
  44. package/dist/cli/src/builtin/utils.d.ts +3 -15
  45. package/dist/cli/src/cliDocumentation/getCliType.d.ts +1 -1
  46. package/dist/cli/src/constants/constants.d.ts +18 -29
  47. package/dist/cli/src/errors.d.ts +1 -1
  48. package/dist/cli/src/evaluator/ContextStack.d.ts +9 -9
  49. package/dist/cli/src/evaluator/functionExecutors.d.ts +4 -4
  50. package/dist/cli/src/evaluator/index.d.ts +2 -2
  51. package/dist/cli/src/evaluator/interface.d.ts +4 -4
  52. package/dist/cli/src/getUndefinedSymbols/index.d.ts +7 -0
  53. package/dist/cli/src/interface.d.ts +1 -2
  54. package/dist/cli/src/parser/Parser.d.ts +49 -0
  55. package/dist/cli/src/parser/types.d.ts +111 -0
  56. package/dist/cli/src/symbolPatterns.d.ts +2 -0
  57. package/dist/cli/src/tokenizer/minifyTokenStream.d.ts +1 -1
  58. package/dist/cli/src/tokenizer/operators.d.ts +12 -0
  59. package/dist/cli/src/tokenizer/reservedNames.d.ts +115 -0
  60. package/dist/cli/src/tokenizer/token.d.ts +85 -0
  61. package/dist/cli/src/tokenizer/tokenize.d.ts +8 -0
  62. package/dist/cli/src/tokenizer/tokenizers.d.ts +12 -0
  63. package/dist/cli/src/transformer/index.d.ts +2 -2
  64. package/dist/cli/src/typeGuards/array.d.ts +1 -1
  65. package/dist/cli/src/typeGuards/astNode.d.ts +25 -17
  66. package/dist/cli/src/typeGuards/index.d.ts +4 -3
  67. package/dist/cli/src/typeGuards/lits.d.ts +2 -2
  68. package/dist/cli/src/typeGuards/litsFunction.d.ts +3 -3
  69. package/dist/cli/src/typeGuards/number.d.ts +1 -1
  70. package/dist/cli/src/typeGuards/string.d.ts +1 -1
  71. package/dist/cli/src/untokenizer/index.d.ts +1 -1
  72. package/dist/cli/src/utils/debug/getCodeMarker.d.ts +1 -1
  73. package/dist/cli/src/utils/debug/getSourceCodeInfo.d.ts +2 -2
  74. package/dist/cli/src/utils/getAssertionError.d.ts +1 -1
  75. package/dist/cli/src/utils/index.d.ts +5 -4
  76. package/dist/index.esm.js +7428 -9599
  77. package/dist/index.esm.js.map +1 -1
  78. package/dist/index.js +7427 -9604
  79. package/dist/index.js.map +1 -1
  80. package/dist/lits.iife.js +7427 -9604
  81. package/dist/lits.iife.js.map +1 -1
  82. package/dist/reference/api.d.ts +21 -18
  83. package/dist/reference/categories/array.d.ts +2 -2
  84. package/dist/reference/categories/assert.d.ts +2 -2
  85. package/dist/reference/categories/bitwise.d.ts +2 -2
  86. package/dist/reference/categories/collection.d.ts +2 -2
  87. package/dist/reference/categories/functional.d.ts +2 -2
  88. package/dist/reference/categories/math.d.ts +1 -1
  89. package/dist/reference/categories/misc.d.ts +1 -1
  90. package/dist/reference/categories/object.d.ts +1 -1
  91. package/dist/reference/categories/regularExpression.d.ts +1 -1
  92. package/dist/reference/categories/sequence.d.ts +1 -1
  93. package/dist/reference/categories/specialExpressions.d.ts +3 -3
  94. package/dist/reference/categories/string.d.ts +1 -1
  95. package/dist/reference/index.d.ts +225 -16
  96. package/dist/src/Lits/Cache.d.ts +1 -1
  97. package/dist/src/Lits/Lits.d.ts +15 -15
  98. package/dist/src/builtin/bindingNode.d.ts +4 -0
  99. package/dist/src/builtin/index.d.ts +10 -30
  100. package/dist/src/builtin/interface.d.ts +19 -26
  101. package/dist/src/builtin/normalExpressions/index.d.ts +4 -1
  102. package/dist/src/builtin/specialExpressionTypes.d.ts +27 -0
  103. package/dist/src/builtin/specialExpressions/and.d.ts +3 -3
  104. package/dist/src/builtin/specialExpressions/array.d.ts +6 -0
  105. package/dist/src/builtin/specialExpressions/cond.d.ts +3 -3
  106. package/dist/src/builtin/specialExpressions/def.d.ts +3 -3
  107. package/dist/src/builtin/specialExpressions/defined.d.ts +5 -0
  108. package/dist/src/builtin/specialExpressions/do.d.ts +3 -3
  109. package/dist/src/builtin/specialExpressions/functions.d.ts +7 -10
  110. package/dist/src/builtin/specialExpressions/if.d.ts +3 -3
  111. package/dist/src/builtin/specialExpressions/let.d.ts +3 -4
  112. package/dist/src/builtin/specialExpressions/loop.d.ts +3 -4
  113. package/dist/src/builtin/specialExpressions/loops.d.ts +5 -14
  114. package/dist/src/builtin/specialExpressions/object.d.ts +6 -0
  115. package/dist/src/builtin/specialExpressions/or.d.ts +3 -3
  116. package/dist/src/builtin/specialExpressions/qq.d.ts +3 -3
  117. package/dist/src/builtin/specialExpressions/recur.d.ts +3 -3
  118. package/dist/src/builtin/specialExpressions/switch.d.ts +3 -3
  119. package/dist/src/builtin/specialExpressions/throw.d.ts +3 -3
  120. package/dist/src/builtin/specialExpressions/try.d.ts +3 -5
  121. package/dist/src/builtin/specialExpressions/unless.d.ts +3 -3
  122. package/dist/src/builtin/utils.d.ts +3 -15
  123. package/dist/src/constants/constants.d.ts +18 -29
  124. package/dist/src/errors.d.ts +1 -1
  125. package/dist/src/evaluator/ContextStack.d.ts +9 -9
  126. package/dist/src/evaluator/functionExecutors.d.ts +4 -4
  127. package/dist/src/evaluator/index.d.ts +2 -2
  128. package/dist/src/evaluator/interface.d.ts +4 -4
  129. package/dist/src/getUndefinedSymbols/index.d.ts +7 -0
  130. package/dist/src/index.d.ts +6 -9
  131. package/dist/src/interface.d.ts +1 -2
  132. package/dist/src/parser/Parser.d.ts +49 -0
  133. package/dist/src/parser/types.d.ts +111 -0
  134. package/dist/src/symbolPatterns.d.ts +2 -0
  135. package/dist/src/tokenizer/minifyTokenStream.d.ts +1 -1
  136. package/dist/src/tokenizer/operators.d.ts +12 -0
  137. package/dist/src/tokenizer/reservedNames.d.ts +115 -0
  138. package/dist/src/tokenizer/token.d.ts +85 -0
  139. package/dist/src/tokenizer/tokenize.d.ts +8 -0
  140. package/dist/src/tokenizer/tokenizers.d.ts +12 -0
  141. package/dist/src/transformer/index.d.ts +2 -2
  142. package/dist/src/typeGuards/array.d.ts +1 -1
  143. package/dist/src/typeGuards/astNode.d.ts +25 -17
  144. package/dist/src/typeGuards/index.d.ts +4 -3
  145. package/dist/src/typeGuards/lits.d.ts +2 -2
  146. package/dist/src/typeGuards/litsFunction.d.ts +3 -3
  147. package/dist/src/typeGuards/number.d.ts +1 -1
  148. package/dist/src/typeGuards/string.d.ts +1 -1
  149. package/dist/src/untokenizer/index.d.ts +1 -1
  150. package/dist/src/utils/debug/getCodeMarker.d.ts +1 -1
  151. package/dist/src/utils/debug/getSourceCodeInfo.d.ts +2 -2
  152. package/dist/src/utils/getAssertionError.d.ts +1 -1
  153. package/dist/src/utils/index.d.ts +5 -4
  154. package/dist/testFramework.esm.js +3103 -4362
  155. package/dist/testFramework.esm.js.map +1 -1
  156. package/dist/testFramework.js +3103 -4362
  157. package/dist/testFramework.js.map +1 -1
  158. package/package.json +2 -2
  159. package/dist/cli/common/clojureDocs.d.ts +0 -1
  160. package/dist/cli/src/analyze/findUnresolvedIdentifiers.d.ts +0 -2
  161. package/dist/cli/src/analyze/index.d.ts +0 -15
  162. package/dist/cli/src/analyze/utils.d.ts +0 -4
  163. package/dist/cli/src/builtin/specialExpressions/comment.d.ts +0 -5
  164. package/dist/cli/src/builtin/specialExpressions/commonParser.d.ts +0 -4
  165. package/dist/cli/src/builtin/specialExpressions/declared.d.ts +0 -5
  166. package/dist/cli/src/identifier.d.ts +0 -4
  167. package/dist/cli/src/index.d.ts +0 -18
  168. package/dist/cli/src/parser/AlgebraicParser.d.ts +0 -44
  169. package/dist/cli/src/parser/PolishTokenParsers.d.ts +0 -3
  170. package/dist/cli/src/parser/commonTokenParsers.d.ts +0 -7
  171. package/dist/cli/src/parser/index.d.ts +0 -3
  172. package/dist/cli/src/parser/interface.d.ts +0 -160
  173. package/dist/cli/src/removeCommentNodes/index.d.ts +0 -11
  174. package/dist/cli/src/removeCommentNodes/removeCommentNodesFromSpecialExpression.d.ts +0 -3
  175. package/dist/cli/src/tokenizer/algebraic/algebraicReservedNames.d.ts +0 -107
  176. package/dist/cli/src/tokenizer/algebraic/algebraicTokenizers.d.ts +0 -11
  177. package/dist/cli/src/tokenizer/algebraic/algebraicTokens.d.ts +0 -66
  178. package/dist/cli/src/tokenizer/common/commonTokenizers.d.ts +0 -9
  179. package/dist/cli/src/tokenizer/common/commonTokens.d.ts +0 -43
  180. package/dist/cli/src/tokenizer/index.d.ts +0 -2
  181. package/dist/cli/src/tokenizer/interface.d.ts +0 -22
  182. package/dist/cli/src/tokenizer/polish/polishReservedNames.d.ts +0 -7
  183. package/dist/cli/src/tokenizer/polish/polishTokenizers.d.ts +0 -13
  184. package/dist/cli/src/tokenizer/polish/polishTokens.d.ts +0 -55
  185. package/dist/cli/src/tokenizer/sugar/applyCollectionAccessor.d.ts +0 -2
  186. package/dist/cli/src/tokenizer/sugar/index.d.ts +0 -3
  187. package/dist/cli/src/tokenizer/tokens.d.ts +0 -20
  188. package/dist/cli/src/tokenizer/utils.d.ts +0 -9
  189. package/dist/common/clojureDocs.d.ts +0 -1
  190. package/dist/src/analyze/findUnresolvedIdentifiers.d.ts +0 -2
  191. package/dist/src/analyze/index.d.ts +0 -15
  192. package/dist/src/analyze/utils.d.ts +0 -4
  193. package/dist/src/builtin/specialExpressions/comment.d.ts +0 -5
  194. package/dist/src/builtin/specialExpressions/commonParser.d.ts +0 -4
  195. package/dist/src/builtin/specialExpressions/declared.d.ts +0 -5
  196. package/dist/src/identifier.d.ts +0 -4
  197. package/dist/src/parser/AlgebraicParser.d.ts +0 -44
  198. package/dist/src/parser/PolishTokenParsers.d.ts +0 -3
  199. package/dist/src/parser/commonTokenParsers.d.ts +0 -7
  200. package/dist/src/parser/index.d.ts +0 -3
  201. package/dist/src/parser/interface.d.ts +0 -160
  202. package/dist/src/removeCommentNodes/index.d.ts +0 -11
  203. package/dist/src/removeCommentNodes/removeCommentNodesFromSpecialExpression.d.ts +0 -3
  204. package/dist/src/tokenizer/algebraic/algebraicReservedNames.d.ts +0 -107
  205. package/dist/src/tokenizer/algebraic/algebraicTokenizers.d.ts +0 -11
  206. package/dist/src/tokenizer/algebraic/algebraicTokens.d.ts +0 -66
  207. package/dist/src/tokenizer/common/commonTokenizers.d.ts +0 -9
  208. package/dist/src/tokenizer/common/commonTokens.d.ts +0 -43
  209. package/dist/src/tokenizer/index.d.ts +0 -2
  210. package/dist/src/tokenizer/interface.d.ts +0 -22
  211. package/dist/src/tokenizer/polish/polishReservedNames.d.ts +0 -7
  212. package/dist/src/tokenizer/polish/polishTokenizers.d.ts +0 -13
  213. package/dist/src/tokenizer/polish/polishTokens.d.ts +0 -55
  214. package/dist/src/tokenizer/sugar/applyCollectionAccessor.d.ts +0 -2
  215. package/dist/src/tokenizer/sugar/index.d.ts +0 -3
  216. package/dist/src/tokenizer/tokens.d.ts +0 -20
  217. package/dist/src/tokenizer/utils.d.ts +0 -9
@@ -1,2 +1,5 @@
1
- import type { BuiltinNormalExpressions } from '../interface';
1
+ import type { BuiltinNormalExpression, BuiltinNormalExpressions } from '../interface';
2
+ import type { Any } from '../../interface';
2
3
  export declare const normalExpressions: BuiltinNormalExpressions;
4
+ export declare const normalExpressionTypes: Record<string, number>;
5
+ export declare const allNormalExpressions: BuiltinNormalExpression<Any>[];
@@ -0,0 +1,27 @@
1
+ import type { SpecialExpressionName, SpecialExpressionType } from '.';
2
+ export declare const specialExpressionTypes: {
3
+ readonly '??': 0;
4
+ readonly '&&': 1;
5
+ readonly '||': 2;
6
+ readonly array: 3;
7
+ readonly cond: 4;
8
+ readonly def: 5;
9
+ readonly 'defined?': 6;
10
+ readonly defn: 7;
11
+ readonly do: 8;
12
+ readonly doseq: 9;
13
+ readonly fn: 10;
14
+ readonly for: 11;
15
+ readonly function: 12;
16
+ readonly if: 13;
17
+ readonly let: 14;
18
+ readonly loop: 15;
19
+ readonly object: 16;
20
+ readonly recur: 17;
21
+ readonly switch: 18;
22
+ readonly throw: 19;
23
+ readonly try: 20;
24
+ readonly unless: 21;
25
+ };
26
+ export type SpecialExpressionTypes = typeof specialExpressionTypes;
27
+ export declare function getNameFromSpecialExpressionType(type: SpecialExpressionType): SpecialExpressionName;
@@ -1,6 +1,6 @@
1
1
  import type { Any } from '../../interface';
2
- import type { CommonSpecialExpressionNode } from '../../parser/interface';
2
+ import type { Node, SpecialExpressionNode } from '../../parser/types';
3
3
  import type { BuiltinSpecialExpression } from '../interface';
4
- export interface AndNode extends CommonSpecialExpressionNode<'&&'> {
5
- }
4
+ import type { specialExpressionTypes } from '../specialExpressionTypes';
5
+ export type AndNode = SpecialExpressionNode<[typeof specialExpressionTypes['&&'], Node[]]>;
6
6
  export declare const andSpecialExpression: BuiltinSpecialExpression<Any, AndNode>;
@@ -0,0 +1,6 @@
1
+ import type { Any } from '../../interface';
2
+ import type { Node, SpecialExpressionNode } from '../../parser/types';
3
+ import type { BuiltinSpecialExpression } from '../interface';
4
+ import type { specialExpressionTypes } from '../specialExpressionTypes';
5
+ export type ArrayNode = SpecialExpressionNode<[typeof specialExpressionTypes['array'], Node[]]>;
6
+ export declare const arraySpecialExpression: BuiltinSpecialExpression<Any, ArrayNode>;
@@ -1,6 +1,6 @@
1
1
  import type { Any } from '../../interface';
2
- import type { CommonSpecialExpressionNode } from '../../parser/interface';
2
+ import type { Node, SpecialExpressionNode } from '../../parser/types';
3
3
  import type { BuiltinSpecialExpression } from '../interface';
4
- export interface CondNode extends CommonSpecialExpressionNode<'cond'> {
5
- }
4
+ import type { specialExpressionTypes } from '../specialExpressionTypes';
5
+ export type CondNode = SpecialExpressionNode<[typeof specialExpressionTypes['cond'], [Node, Node][]]>;
6
6
  export declare const condSpecialExpression: BuiltinSpecialExpression<Any, CondNode>;
@@ -1,5 +1,5 @@
1
- import type { CommonSpecialExpressionNode } from '../../parser/interface';
1
+ import type { BindingNode, SpecialExpressionNode } from '../../parser/types';
2
2
  import type { BuiltinSpecialExpression } from '../interface';
3
- export interface DefNode extends CommonSpecialExpressionNode<'def'> {
4
- }
3
+ import type { specialExpressionTypes } from '../specialExpressionTypes';
4
+ export type DefNode = SpecialExpressionNode<[typeof specialExpressionTypes['def'], BindingNode]>;
5
5
  export declare const defSpecialExpression: BuiltinSpecialExpression<null, DefNode>;
@@ -0,0 +1,5 @@
1
+ import type { SpecialExpressionNode, SymbolNode } from '../../parser/types';
2
+ import type { BuiltinSpecialExpression } from '../interface';
3
+ import type { specialExpressionTypes } from '../specialExpressionTypes';
4
+ export type DefinedNode = SpecialExpressionNode<[typeof specialExpressionTypes['defined?'], SymbolNode]>;
5
+ export declare const definedSpecialExpression: BuiltinSpecialExpression<boolean, DefinedNode>;
@@ -1,6 +1,6 @@
1
1
  import type { Any } from '../../interface';
2
- import type { CommonSpecialExpressionNode } from '../../parser/interface';
2
+ import type { Node, SpecialExpressionNode } from '../../parser/types';
3
3
  import type { BuiltinSpecialExpression } from '../interface';
4
- export interface DoNode extends CommonSpecialExpressionNode<'do'> {
5
- }
4
+ import type { specialExpressionTypes } from '../specialExpressionTypes';
5
+ export type DoNode = SpecialExpressionNode<[typeof specialExpressionTypes['do'], Node[]]>;
6
6
  export declare const doSpecialExpression: BuiltinSpecialExpression<Any, DoNode>;
@@ -1,13 +1,10 @@
1
- import type { AstNode, CommonSpecialExpressionNode, LitsFunction, SymbolNode } from '../../parser/interface';
1
+ import type { LitsFunction, SpecialExpressionNode, SymbolNode } from '../../parser/types';
2
2
  import type { BuiltinSpecialExpression } from '../interface';
3
- import type { FunctionOverload } from '../utils';
4
- export interface DefnNode extends CommonSpecialExpressionNode<'defn'> {
5
- f: SymbolNode;
6
- o: FunctionOverload[];
7
- }
8
- export interface FnNode extends CommonSpecialExpressionNode<'fn'> {
9
- p: AstNode[];
10
- o: FunctionOverload[];
11
- }
3
+ import type { Function } from '../utils';
4
+ import type { specialExpressionTypes } from '../specialExpressionTypes';
5
+ export type DefnNode = SpecialExpressionNode<[typeof specialExpressionTypes['defn'], SymbolNode, Function]>;
6
+ export type FunctionNode = SpecialExpressionNode<[typeof specialExpressionTypes['function'], SymbolNode, Function]>;
7
+ export type FnNode = SpecialExpressionNode<[typeof specialExpressionTypes['fn'], Function]>;
8
+ export declare const functionSpecialExpression: BuiltinSpecialExpression<null, FunctionNode>;
12
9
  export declare const defnSpecialExpression: BuiltinSpecialExpression<null, DefnNode>;
13
10
  export declare const fnSpecialExpression: BuiltinSpecialExpression<LitsFunction, FnNode>;
@@ -1,6 +1,6 @@
1
1
  import type { Any } from '../../interface';
2
- import type { CommonSpecialExpressionNode } from '../../parser/interface';
2
+ import type { Node, SpecialExpressionNode } from '../../parser/types';
3
3
  import type { BuiltinSpecialExpression } from '../interface';
4
- export interface IfNode extends CommonSpecialExpressionNode<'if'> {
5
- }
4
+ import type { specialExpressionTypes } from '../specialExpressionTypes';
5
+ export type IfNode = SpecialExpressionNode<[typeof specialExpressionTypes['if'], [Node, Node, Node?]]>;
6
6
  export declare const ifSpecialExpression: BuiltinSpecialExpression<Any, IfNode>;
@@ -1,7 +1,6 @@
1
1
  import type { Any } from '../../interface';
2
- import type { BindingNode, CommonSpecialExpressionNode } from '../../parser/interface';
2
+ import type { BindingNode, SpecialExpressionNode } from '../../parser/types';
3
3
  import type { BuiltinSpecialExpression } from '../interface';
4
- export interface LetNode extends CommonSpecialExpressionNode<'let'> {
5
- bs: BindingNode[];
6
- }
4
+ import type { specialExpressionTypes } from '../specialExpressionTypes';
5
+ export type LetNode = SpecialExpressionNode<[typeof specialExpressionTypes['let'], BindingNode]>;
7
6
  export declare const letSpecialExpression: BuiltinSpecialExpression<Any, LetNode>;
@@ -1,7 +1,6 @@
1
1
  import type { Any } from '../../interface';
2
- import type { BindingNode, CommonSpecialExpressionNode } from '../../parser/interface';
2
+ import type { BindingNode, Node, SpecialExpressionNode } from '../../parser/types';
3
3
  import type { BuiltinSpecialExpression } from '../interface';
4
- export interface LoopNode extends CommonSpecialExpressionNode<'loop'> {
5
- bs: BindingNode[];
6
- }
4
+ import type { specialExpressionTypes } from '../specialExpressionTypes';
5
+ export type LoopNode = SpecialExpressionNode<[typeof specialExpressionTypes['loop'], BindingNode[], Node[]]>;
7
6
  export declare const loopSpecialExpression: BuiltinSpecialExpression<Any, LoopNode>;
@@ -1,18 +1,9 @@
1
1
  import type { Any } from '../../interface';
2
- import type { AstNode, BindingNode, CommonSpecialExpressionNode } from '../../parser/interface';
2
+ import type { BindingNode, Node, SpecialExpressionNode } from '../../parser/types';
3
3
  import type { BuiltinSpecialExpression } from '../interface';
4
- export interface ForNode extends CommonSpecialExpressionNode<'for'> {
5
- l: LoopBindingNode[];
6
- }
7
- export interface DoSeqNode extends CommonSpecialExpressionNode<'doseq'> {
8
- l: LoopBindingNode[];
9
- }
10
- export interface LoopBindingNode {
11
- b: BindingNode;
12
- m: Array<'&let' | '&when' | '&while'>;
13
- l?: BindingNode[];
14
- wn?: AstNode;
15
- we?: AstNode;
16
- }
4
+ import type { specialExpressionTypes } from '../specialExpressionTypes';
5
+ export type LoopBindingNode = [BindingNode, BindingNode[], Node?, Node?];
6
+ export type ForNode = SpecialExpressionNode<[typeof specialExpressionTypes['for'], LoopBindingNode[], Node[]]>;
7
+ export type DoSeqNode = SpecialExpressionNode<[typeof specialExpressionTypes['doseq'], LoopBindingNode[], Node[]]>;
17
8
  export declare const forSpecialExpression: BuiltinSpecialExpression<Any, ForNode>;
18
9
  export declare const doseqSpecialExpression: BuiltinSpecialExpression<null, DoSeqNode>;
@@ -0,0 +1,6 @@
1
+ import type { Any } from '../../interface';
2
+ import type { Node, SpecialExpressionNode } from '../../parser/types';
3
+ import type { BuiltinSpecialExpression } from '../interface';
4
+ import type { specialExpressionTypes } from '../specialExpressionTypes';
5
+ export type ObjectNode = SpecialExpressionNode<[typeof specialExpressionTypes['object'], Node[]]>;
6
+ export declare const objectSpecialExpression: BuiltinSpecialExpression<Any, ObjectNode>;
@@ -1,6 +1,6 @@
1
1
  import type { Any } from '../../interface';
2
- import type { CommonSpecialExpressionNode } from '../../parser/interface';
2
+ import type { Node, SpecialExpressionNode } from '../../parser/types';
3
3
  import type { BuiltinSpecialExpression } from '../interface';
4
- export interface OrNode extends CommonSpecialExpressionNode<'||'> {
5
- }
4
+ import type { specialExpressionTypes } from '../specialExpressionTypes';
5
+ export type OrNode = SpecialExpressionNode<[typeof specialExpressionTypes['||'], Node[]]>;
6
6
  export declare const orSpecialExpression: BuiltinSpecialExpression<Any, OrNode>;
@@ -1,6 +1,6 @@
1
1
  import type { Any } from '../../interface';
2
- import type { CommonSpecialExpressionNode } from '../../parser/interface';
2
+ import type { Node, SpecialExpressionNode } from '../../parser/types';
3
3
  import type { BuiltinSpecialExpression } from '../interface';
4
- export interface QqNode extends CommonSpecialExpressionNode<'??'> {
5
- }
4
+ import type { specialExpressionTypes } from '../specialExpressionTypes';
5
+ export type QqNode = SpecialExpressionNode<[typeof specialExpressionTypes['??'], [Node, Node | undefined]]>;
6
6
  export declare const qqSpecialExpression: BuiltinSpecialExpression<Any, QqNode>;
@@ -1,5 +1,5 @@
1
- import type { CommonSpecialExpressionNode } from '../../parser/interface';
1
+ import type { Node, SpecialExpressionNode } from '../../parser/types';
2
2
  import type { BuiltinSpecialExpression } from '../interface';
3
- export interface RecurNode extends CommonSpecialExpressionNode<'recur'> {
4
- }
3
+ import type { specialExpressionTypes } from '../specialExpressionTypes';
4
+ export type RecurNode = SpecialExpressionNode<[typeof specialExpressionTypes['recur'], Node[]]>;
5
5
  export declare const recurSpecialExpression: BuiltinSpecialExpression<null, RecurNode>;
@@ -1,6 +1,6 @@
1
1
  import type { Any } from '../../interface';
2
- import type { CommonSpecialExpressionNode } from '../../parser/interface';
2
+ import type { Node, SpecialExpressionNode } from '../../parser/types';
3
3
  import type { BuiltinSpecialExpression } from '../interface';
4
- export interface SwitchNode extends CommonSpecialExpressionNode<'switch'> {
5
- }
4
+ import type { specialExpressionTypes } from '../specialExpressionTypes';
5
+ export type SwitchNode = SpecialExpressionNode<[typeof specialExpressionTypes['switch'], Node, [Node, Node][]]>;
6
6
  export declare const switchSpecialExpression: BuiltinSpecialExpression<Any, SwitchNode>;
@@ -1,5 +1,5 @@
1
- import type { CommonSpecialExpressionNode } from '../../parser/interface';
1
+ import type { Node, SpecialExpressionNode } from '../../parser/types';
2
2
  import type { BuiltinSpecialExpression } from '../interface';
3
- export interface ThrowNode extends CommonSpecialExpressionNode<'throw'> {
4
- }
3
+ import type { specialExpressionTypes } from '../specialExpressionTypes';
4
+ export type ThrowNode = SpecialExpressionNode<[typeof specialExpressionTypes['throw'], Node]>;
5
5
  export declare const throwSpecialExpression: BuiltinSpecialExpression<null, ThrowNode>;
@@ -1,8 +1,6 @@
1
1
  import type { Any } from '../../interface';
2
- import type { AstNode, CommonSpecialExpressionNode, SymbolNode } from '../../parser/interface';
2
+ import type { Node, SpecialExpressionNode, SymbolNode } from '../../parser/types';
3
3
  import type { BuiltinSpecialExpression } from '../interface';
4
- export interface TryNode extends CommonSpecialExpressionNode<'try'> {
5
- e: SymbolNode | undefined;
6
- ce: AstNode;
7
- }
4
+ import type { specialExpressionTypes } from '../specialExpressionTypes';
5
+ export type TryNode = SpecialExpressionNode<[typeof specialExpressionTypes['try'], Node, SymbolNode | undefined, Node]>;
8
6
  export declare const trySpecialExpression: BuiltinSpecialExpression<Any, TryNode>;
@@ -1,6 +1,6 @@
1
1
  import type { Any } from '../../interface';
2
- import type { CommonSpecialExpressionNode } from '../../parser/interface';
2
+ import type { Node, SpecialExpressionNode } from '../../parser/types';
3
3
  import type { BuiltinSpecialExpression } from '../interface';
4
- export interface UnlessNode extends CommonSpecialExpressionNode<'unless'> {
5
- }
4
+ import type { specialExpressionTypes } from '../specialExpressionTypes';
5
+ export type UnlessNode = SpecialExpressionNode<[typeof specialExpressionTypes['unless'], [Node, Node, Node?]]>;
6
6
  export declare const unlessSpecialExpression: BuiltinSpecialExpression<Any, UnlessNode>;
@@ -1,18 +1,6 @@
1
1
  import type { ContextStack } from '../evaluator/ContextStack';
2
- import type { AstNode, BindingNode } from '../parser/interface';
3
- import type { SourceCodeInfo } from '../tokenizer/interface';
2
+ import type { BindingTarget, Node } from '../parser/types';
3
+ import type { SourceCodeInfo } from '../tokenizer/token';
4
4
  import type { Builtin } from './interface';
5
- export type Arity = number | {
6
- min: number;
7
- };
8
- export interface FunctionOverload {
9
- as: FunctionArguments;
10
- a: Arity;
11
- b: AstNode[];
12
- }
13
- export interface FunctionArguments {
14
- m: string[];
15
- r?: string;
16
- b: BindingNode[];
17
- }
5
+ export type Function = [BindingTarget[], Node[]];
18
6
  export declare function assertNameNotDefined<T>(name: T, contextStack: ContextStack, builtin: Builtin, sourceCodeInfo?: SourceCodeInfo): asserts name is T;
@@ -1,30 +1,19 @@
1
- export declare enum AstNodeType {
2
- Number = 201,
3
- String = 202,
4
- NormalExpression = 203,
5
- SpecialExpression = 204,
6
- Symbol = 205,
7
- Modifier = 206,
8
- ReservedSymbol = 207,
9
- Binding = 208,
10
- Argument = 209,
11
- Partial = 210,
12
- Comment = 211
13
- }
14
- export declare const astNodeTypeName: Map<AstNodeType, string>;
15
- export declare function isAstNodeType(type: unknown): type is AstNodeType;
16
- export declare enum FunctionType {
17
- UserDefined = 301,
18
- Partial = 302,
19
- Comp = 303,
20
- Constantly = 304,
21
- Juxt = 305,
22
- Complement = 306,
23
- EveryPred = 307,
24
- SomePred = 308,
25
- Fnil = 309,
26
- Builtin = 310,
27
- NativeJsFunction = 399
28
- }
29
- export declare const functionTypeName: Map<FunctionType, string>;
1
+ export declare const NodeTypes: {
2
+ readonly Number: 1;
3
+ readonly String: 2;
4
+ readonly NormalExpression: 3;
5
+ readonly SpecialExpression: 4;
6
+ readonly UserDefinedSymbol: 5;
7
+ readonly NormalBuiltinSymbol: 6;
8
+ readonly SpecialBuiltinSymbol: 7;
9
+ readonly ReservedSymbol: 8;
10
+ readonly Binding: 9;
11
+ readonly Spread: 10;
12
+ };
13
+ export type NodeType = typeof NodeTypes[keyof typeof NodeTypes];
14
+ export declare function getNodeTypeName(type: NodeType): keyof typeof NodeTypes;
15
+ export declare function isNodeType(type: unknown): type is NodeType;
16
+ declare const functionTypes: readonly ["UserDefined", "Partial", "Comp", "Constantly", "Juxt", "Complement", "EveryPred", "SomePred", "Fnull", "Builtin", "NativeJsFunction"];
17
+ export type FunctionType = typeof functionTypes[number];
30
18
  export declare function isFunctionType(type: unknown): type is FunctionType;
19
+ export {};
@@ -1,5 +1,5 @@
1
1
  import type { Arr } from './interface';
2
- import type { SourceCodeInfo } from './tokenizer/interface';
2
+ import type { SourceCodeInfo } from './tokenizer/token';
3
3
  export declare class RecurSignal extends Error {
4
4
  params: Arr;
5
5
  constructor(params: Arr);
@@ -1,6 +1,6 @@
1
- import type { ExtraData, NativeJsFunction, SymbolNode } from '../parser/interface';
2
1
  import type { Any } from '../interface';
3
- import type { LazyValue, LitsParams } from '../Lits/Lits';
2
+ import type { ContextParams, LazyValue } from '../Lits/Lits';
3
+ import type { NativeJsFunction, SymbolNode, UserDefinedSymbolNode } from '../parser/types';
4
4
  import type { Context, LookUpResult } from './interface';
5
5
  export type ContextStack = ContextStackImpl;
6
6
  export declare class ContextStackImpl {
@@ -15,12 +15,12 @@ export declare class ContextStackImpl {
15
15
  lazyValues?: Record<string, LazyValue>;
16
16
  nativeJsFunctions?: Record<string, NativeJsFunction>;
17
17
  });
18
- create(context: Context, extraData?: ExtraData): ContextStack;
19
- exportValue(name: string, value: Any): void;
20
- addValue(name: string, value: Any): void;
21
- clone(): ContextStack;
18
+ create(context: Context): ContextStack;
19
+ new(context: Context): ContextStack;
20
+ exportValues(values: Record<string, Any>): void;
21
+ addValues(values: Record<string, Any>): void;
22
22
  getValue(name: string): unknown;
23
- lookUp(node: SymbolNode): LookUpResult;
24
- evaluateName(node: SymbolNode): Any;
23
+ lookUp(node: UserDefinedSymbolNode): LookUpResult;
24
+ evaluateSymbol(node: SymbolNode): Any;
25
25
  }
26
- export declare function createContextStack(params?: LitsParams): ContextStack;
26
+ export declare function createContextStack(params?: ContextParams): ContextStack;
@@ -1,10 +1,10 @@
1
1
  import type { Any, Arr } from '../interface';
2
- import type { LitsFunctionType } from '../parser/interface';
3
- import type { SourceCodeInfo } from '../tokenizer/interface';
4
- import type { EvaluateAstNode, ExecuteFunction } from './interface';
2
+ import { type LitsFunctionType } from '../parser/types';
3
+ import type { SourceCodeInfo } from '../tokenizer/token';
5
4
  import type { ContextStack } from './ContextStack';
5
+ import type { EvaluateNode, ExecuteFunction } from './interface';
6
6
  type FunctionExecutors = Record<LitsFunctionType, (fn: any, params: Arr, sourceCodeInfo: SourceCodeInfo | undefined, contextStack: ContextStack, helpers: {
7
- evaluateAstNode: EvaluateAstNode;
7
+ evaluateNode: EvaluateNode;
8
8
  executeFunction: ExecuteFunction;
9
9
  }) => Any>;
10
10
  export declare const functionExecutors: FunctionExecutors;
@@ -1,5 +1,5 @@
1
- import type { Ast, AstNode } from '../parser/interface';
2
1
  import type { Any } from '../interface';
2
+ import type { Ast, Node } from '../parser/types';
3
3
  import type { ContextStack } from './ContextStack';
4
4
  export declare function evaluate(ast: Ast, contextStack: ContextStack): Any;
5
- export declare function evaluateAstNode(node: AstNode, contextStack: ContextStack): Any;
5
+ export declare function evaluateNode(node: Node, contextStack: ContextStack): Any;
@@ -1,12 +1,12 @@
1
1
  import type { Any, Arr } from '../interface';
2
- import type { AstNode, BuiltinFunction } from '../parser/interface';
3
- import type { SourceCodeInfo } from '../tokenizer/interface';
2
+ import type { Node } from '../parser/types';
3
+ import type { SourceCodeInfo } from '../tokenizer/token';
4
4
  import type { ContextStack } from './ContextStack';
5
5
  export interface ContextEntry {
6
6
  value: Any;
7
7
  }
8
8
  export type Context = Record<string, ContextEntry>;
9
- export type EvaluateAstNode = (node: AstNode, contextStack: ContextStack) => Any;
9
+ export type EvaluateNode = (node: Node, contextStack: ContextStack) => Any;
10
10
  export type ExecuteFunction = (fn: Any, params: Arr, contextStack: ContextStack, sourceCodeInfo?: SourceCodeInfo) => Any;
11
- export type LookUpResult = ContextEntry | BuiltinFunction | 'specialExpression' | null;
11
+ export type LookUpResult = ContextEntry | null;
12
12
  export declare function isContextEntry(value: unknown): value is ContextEntry;
@@ -0,0 +1,7 @@
1
+ import type { Builtin } from '../builtin/interface';
2
+ import type { ContextStack } from '../evaluator/ContextStack';
3
+ import type { EvaluateNode } from '../evaluator/interface';
4
+ import type { Ast, Node } from '../parser/types';
5
+ export type UndefinedSymbols = Set<string>;
6
+ export declare const getUndefinedSymbols: GetUndefinedSymbols;
7
+ export type GetUndefinedSymbols = (ast: Ast | Node[], contextStack: ContextStack, builtin: Builtin, evaluateNode: EvaluateNode) => UndefinedSymbols;
@@ -1,18 +1,15 @@
1
- export { AstNodeType, FunctionType } from './constants/constants';
2
1
  export { isBuiltinFunction, isLitsFunction, asLitsFunction, assertLitsFunction, isUserDefinedFunction, asUserDefinedFunction, assertUserDefinedFunction, isNativeJsFunction, asNativeJsFunction, assertNativeJsFunction, } from './typeGuards/litsFunction';
3
- export { type LitsFunction, type NativeJsFunction, type ExtraData } from './parser/interface';
2
+ export { type LitsFunction, type NativeJsFunction } from './parser/types';
4
3
  export type { Context } from './evaluator/interface';
5
- export type { Ast } from './parser/interface';
6
- export type { SourceCodeInfo } from './tokenizer/interface';
7
- export type { Token } from './tokenizer/tokens';
4
+ export type { Ast } from './parser/types';
5
+ export type { SourceCodeInfo } from './tokenizer/token';
6
+ export type { Token } from './tokenizer/token';
8
7
  export { normalExpressionKeys, specialExpressionKeys } from './builtin';
9
- export { polishReservedNames } from './tokenizer/polish/polishReservedNames';
10
8
  export { Lits } from './Lits/Lits';
11
9
  export { type LitsError, isLitsError } from './errors';
12
- export type { LitsParams, LitsRuntimeInfo, LazyValue, JsFunction } from './Lits/Lits';
10
+ export type { ContextParams, FilePathParams, MinifyParams, LitsRuntimeInfo, LazyValue, JsFunction } from './Lits/Lits';
13
11
  export { createNativeJsFunction } from './utils';
14
- export { apiReference, isDatatypeReference, isFunctionReference, isNormalExpressionArgument, isShorthandReference, isSpecialExpressionArgument, isTypedValue } from '../reference';
12
+ export { apiReference, isDatatypeReference, isFunctionReference, isShorthandReference } from '../reference';
15
13
  export type { Argument, CommonReference, DatatypeReference, FunctionReference, Reference, ShorthandReference } from '../reference';
16
14
  export type { ApiName, FunctionName, ShorthandName, DatatypeName } from '../reference/api';
17
15
  export { isApiName, isDataType } from '../reference/api';
18
- export { polishIdentifierCharacterClass as identifierCharacterClass, polishIdentifierFirstCharacterClass as identifierFirstCharacterClass } from './identifier';
@@ -1,5 +1,4 @@
1
- import type { RegularExpression } from './parser/interface';
2
- import type { LitsFunction } from '.';
1
+ import type { LitsFunction, RegularExpression } from './parser/types';
3
2
  export type Arr = unknown[];
4
3
  export type Seq = string | Arr;
5
4
  export type Obj = Record<string, unknown>;
@@ -0,0 +1,49 @@
1
+ import type { CondNode } from '../builtin/specialExpressions/cond';
2
+ import type { FnNode, FunctionNode } from '../builtin/specialExpressions/functions';
3
+ import type { IfNode } from '../builtin/specialExpressions/if';
4
+ import type { SwitchNode } from '../builtin/specialExpressions/switch';
5
+ import type { UnlessNode } from '../builtin/specialExpressions/unless';
6
+ import type { ReservedSymbolToken, SymbolToken } from '../tokenizer/token';
7
+ import type { TokenStream } from '../tokenizer/tokenize';
8
+ import { type BindingTarget, type Node, type ParseState } from './types';
9
+ export declare class Parser {
10
+ private readonly tokenStream;
11
+ private parseState;
12
+ constructor(tokenStream: TokenStream, parseState: ParseState);
13
+ private peek;
14
+ private peekAhead;
15
+ private advance;
16
+ parse(): Node[];
17
+ private parseExpression;
18
+ private parseOperand;
19
+ private parseOperandPart;
20
+ private parseObject;
21
+ private parseArray;
22
+ private parseFunctionCall;
23
+ parseLambdaFunction(): FnNode | null;
24
+ parseFunctionArguments(): BindingTarget[];
25
+ private parseShorthandLamdaFunction;
26
+ private parseOptionalDefaulValue;
27
+ private parseBindingTarget;
28
+ private parseLet;
29
+ private parseDo;
30
+ private parseLoop;
31
+ private parseTry;
32
+ private parseForOrDoseq;
33
+ private parseForLoopBinding;
34
+ private parseBinding;
35
+ parseIfOrUnless(token: SymbolToken): IfNode | UnlessNode;
36
+ parseCond(token: SymbolToken): CondNode;
37
+ parseSwitch(token: SymbolToken): SwitchNode;
38
+ parseFunction(token: ReservedSymbolToken<'function'>): FunctionNode;
39
+ private isAtEnd;
40
+ private isAtExpressionEnd;
41
+ private parseExport;
42
+ private stringToSymbolNode;
43
+ stringFromQuotedSymbol(value: string): string;
44
+ private parseSymbol;
45
+ private parseReservedSymbol;
46
+ private parseNumber;
47
+ private parseString;
48
+ private parseRegexpShorthand;
49
+ }