@mojir/lits 1.1.0 → 1.2.1-alpha.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 (192) hide show
  1. package/dist/cli/cli/src/colorizer.d.ts +817 -784
  2. package/dist/cli/cli/src/createReadlineInterface.d.ts +0 -1
  3. package/dist/cli/cli.js +6857 -5196
  4. package/dist/cli/common/utils.d.ts +0 -1
  5. package/dist/cli/reference/api.d.ts +1 -1
  6. package/dist/cli/reference/examples.d.ts +1 -6
  7. package/dist/cli/src/Lits/Lits.d.ts +10 -7
  8. package/dist/cli/src/analyze/calculateOutcomes/calculateAndOutcomes.d.ts +3 -0
  9. package/dist/cli/src/analyze/calculateOutcomes/calculateCommentOutcomes.d.ts +3 -0
  10. package/dist/cli/src/analyze/calculateOutcomes/calculateCondOutcomes.d.ts +3 -0
  11. package/dist/cli/src/analyze/calculateOutcomes/calculateDeclaredOutcomes.d.ts +3 -0
  12. package/dist/cli/src/analyze/calculateOutcomes/calculateDefOutcomes.d.ts +3 -0
  13. package/dist/cli/src/analyze/calculateOutcomes/calculateDefsOutcomes.d.ts +3 -0
  14. package/dist/cli/src/analyze/calculateOutcomes/calculateDoOutcomes.d.ts +3 -0
  15. package/dist/cli/src/analyze/calculateOutcomes/calculateFunctionOutcomes.d.ts +5 -0
  16. package/dist/cli/src/analyze/calculateOutcomes/calculateIfLetOutcomes.d.ts +3 -0
  17. package/dist/cli/src/analyze/calculateOutcomes/calculateIfNotOutcomes.d.ts +3 -0
  18. package/dist/cli/src/analyze/calculateOutcomes/calculateIfOutcomes.d.ts +3 -0
  19. package/dist/cli/src/analyze/calculateOutcomes/calculateLetOutcomes.d.ts +3 -0
  20. package/dist/cli/src/analyze/calculateOutcomes/calculateLoopOutcomes.d.ts +3 -0
  21. package/dist/cli/src/analyze/calculateOutcomes/calculateLoopsOutcomes.d.ts +4 -0
  22. package/dist/cli/src/analyze/calculateOutcomes/calculateOrOutcomes.d.ts +3 -0
  23. package/dist/cli/src/analyze/calculateOutcomes/calculateQqOutcomes.d.ts +3 -0
  24. package/dist/cli/src/analyze/calculateOutcomes/calculateRecurOutcomes.d.ts +3 -0
  25. package/dist/cli/src/analyze/calculateOutcomes/calculateThrowOutcomes.d.ts +3 -0
  26. package/dist/cli/src/analyze/calculateOutcomes/calculateTimeOutcomes.d.ts +3 -0
  27. package/dist/cli/src/analyze/calculateOutcomes/calculateTryOutcomes.d.ts +3 -0
  28. package/dist/cli/src/analyze/calculateOutcomes/calculateWhenFirstOutcomes.d.ts +3 -0
  29. package/dist/cli/src/analyze/calculateOutcomes/calculateWhenLetOutcomes.d.ts +3 -0
  30. package/dist/cli/src/analyze/calculateOutcomes/calculateWhenNotOutcomes.d.ts +3 -0
  31. package/dist/cli/src/analyze/calculateOutcomes/calculateWhenOutcomes.d.ts +3 -0
  32. package/dist/cli/src/analyze/calculateOutcomes/index.d.ts +18 -0
  33. package/dist/cli/src/analyze/calculateOutcomes/specialExpressionCalculators.d.ts +55 -0
  34. package/dist/cli/src/analyze/findUnresolvedIdentifiers.d.ts +2 -0
  35. package/dist/cli/src/analyze/index.d.ts +17 -2
  36. package/dist/cli/src/analyze/utils.d.ts +4 -3
  37. package/dist/cli/src/builtin/index.d.ts +35 -2
  38. package/dist/cli/src/builtin/interface.d.ts +13 -14
  39. package/dist/cli/src/builtin/specialExpressions/and.d.ts +4 -1
  40. package/dist/cli/src/builtin/specialExpressions/comment.d.ts +4 -1
  41. package/dist/cli/src/builtin/specialExpressions/cond.d.ts +3 -5
  42. package/dist/cli/src/builtin/specialExpressions/declared.d.ts +4 -1
  43. package/dist/cli/src/builtin/specialExpressions/def.d.ts +4 -2
  44. package/dist/cli/src/builtin/specialExpressions/defs.d.ts +4 -2
  45. package/dist/cli/src/builtin/specialExpressions/do.d.ts +4 -1
  46. package/dist/cli/src/builtin/specialExpressions/functions.d.ts +15 -6
  47. package/dist/cli/src/builtin/specialExpressions/if-let.d.ts +8 -1
  48. package/dist/cli/src/builtin/specialExpressions/if-not.d.ts +4 -1
  49. package/dist/cli/src/builtin/specialExpressions/if.d.ts +4 -1
  50. package/dist/cli/src/builtin/specialExpressions/let.d.ts +8 -1
  51. package/dist/cli/src/builtin/specialExpressions/loop.d.ts +5 -1
  52. package/dist/cli/src/builtin/specialExpressions/loops.d.ts +9 -3
  53. package/dist/cli/src/builtin/specialExpressions/or.d.ts +4 -1
  54. package/dist/cli/src/builtin/specialExpressions/qq.d.ts +4 -1
  55. package/dist/cli/src/builtin/specialExpressions/recur.d.ts +4 -1
  56. package/dist/cli/src/builtin/specialExpressions/throw.d.ts +4 -1
  57. package/dist/cli/src/builtin/specialExpressions/time.d.ts +4 -1
  58. package/dist/cli/src/builtin/specialExpressions/try.d.ts +6 -1
  59. package/dist/cli/src/builtin/specialExpressions/when-first.d.ts +5 -1
  60. package/dist/cli/src/builtin/specialExpressions/when-let.d.ts +5 -1
  61. package/dist/cli/src/builtin/specialExpressions/when-not.d.ts +4 -1
  62. package/dist/cli/src/builtin/specialExpressions/when.d.ts +4 -1
  63. package/dist/cli/src/colorizer.d.ts +817 -784
  64. package/dist/cli/src/constants/constants.d.ts +5 -2
  65. package/dist/cli/src/createReadlineInterface.d.ts +0 -1
  66. package/dist/cli/src/errors.d.ts +2 -1
  67. package/dist/cli/src/evaluator/ContextStack.d.ts +5 -2
  68. package/dist/cli/src/index.d.ts +1 -0
  69. package/dist/cli/src/parser/interface.d.ts +27 -32
  70. package/dist/cli/src/removeCommentNodes/index.d.ts +11 -0
  71. package/dist/cli/src/removeCommentNodes/removeCommentNodesFromSpecialExpression.d.ts +3 -0
  72. package/dist/cli/src/tokenizer/index.d.ts +8 -1
  73. package/dist/cli/src/tokenizer/interface.d.ts +15 -5
  74. package/dist/cli/src/tokenizer/tokenizers.d.ts +3 -2
  75. package/dist/cli/src/typeGuards/index.d.ts +8 -6
  76. package/dist/cli/src/typeGuards/token.d.ts +1 -1
  77. package/dist/cli/src/unparser/UnparseOptions.d.ts +15 -0
  78. package/dist/cli/src/unparser/unparse.d.ts +5 -0
  79. package/dist/cli/src/unparser/unparseArrayLiteral.d.ts +3 -0
  80. package/dist/cli/src/unparser/unparseBindings.d.ts +3 -0
  81. package/dist/cli/src/unparser/unparseNormalExpression.d.ts +3 -0
  82. package/dist/cli/src/unparser/unparseObjectLiteral.d.ts +3 -0
  83. package/dist/cli/src/unparser/unparseParams.d.ts +17 -0
  84. package/dist/cli/src/unparser/unparseSpecialExpression/index.d.ts +3 -0
  85. package/dist/cli/src/unparser/unparseSpecialExpression/unparseCond.d.ts +3 -0
  86. package/dist/cli/src/unparser/unparseSpecialExpression/unparseDo.d.ts +3 -0
  87. package/dist/cli/src/unparser/unparseSpecialExpression/unparseIfLet.d.ts +3 -0
  88. package/dist/cli/src/unparser/unparseSpecialExpression/unparseIfOrWhenLike.d.ts +6 -0
  89. package/dist/cli/src/unparser/unparseSpecialExpression/unparseLet.d.ts +3 -0
  90. package/dist/cli/src/unparser/utils.d.ts +5 -0
  91. package/dist/cli/src/utils/index.d.ts +1 -0
  92. package/dist/cli/src/utils/symbols.d.ts +2 -2
  93. package/dist/common/utils.d.ts +0 -1
  94. package/dist/index.esm.js +14008 -5896
  95. package/dist/index.esm.js.map +1 -1
  96. package/dist/index.js +14008 -5895
  97. package/dist/index.js.map +1 -1
  98. package/dist/lits.iife.js +14008 -5895
  99. package/dist/lits.iife.js.map +1 -1
  100. package/dist/reference/api.d.ts +1 -1
  101. package/dist/src/Lits/Lits.d.ts +10 -7
  102. package/dist/src/analyze/calculateOutcomes/calculateAndOutcomes.d.ts +3 -0
  103. package/dist/src/analyze/calculateOutcomes/calculateCommentOutcomes.d.ts +3 -0
  104. package/dist/src/analyze/calculateOutcomes/calculateCondOutcomes.d.ts +3 -0
  105. package/dist/src/analyze/calculateOutcomes/calculateDeclaredOutcomes.d.ts +3 -0
  106. package/dist/src/analyze/calculateOutcomes/calculateDefOutcomes.d.ts +3 -0
  107. package/dist/src/analyze/calculateOutcomes/calculateDefsOutcomes.d.ts +3 -0
  108. package/dist/src/analyze/calculateOutcomes/calculateDoOutcomes.d.ts +3 -0
  109. package/dist/src/analyze/calculateOutcomes/calculateFunctionOutcomes.d.ts +5 -0
  110. package/dist/src/analyze/calculateOutcomes/calculateIfLetOutcomes.d.ts +3 -0
  111. package/dist/src/analyze/calculateOutcomes/calculateIfNotOutcomes.d.ts +3 -0
  112. package/dist/src/analyze/calculateOutcomes/calculateIfOutcomes.d.ts +3 -0
  113. package/dist/src/analyze/calculateOutcomes/calculateLetOutcomes.d.ts +3 -0
  114. package/dist/src/analyze/calculateOutcomes/calculateLoopOutcomes.d.ts +3 -0
  115. package/dist/src/analyze/calculateOutcomes/calculateLoopsOutcomes.d.ts +4 -0
  116. package/dist/src/analyze/calculateOutcomes/calculateOrOutcomes.d.ts +3 -0
  117. package/dist/src/analyze/calculateOutcomes/calculateQqOutcomes.d.ts +3 -0
  118. package/dist/src/analyze/calculateOutcomes/calculateRecurOutcomes.d.ts +3 -0
  119. package/dist/src/analyze/calculateOutcomes/calculateThrowOutcomes.d.ts +3 -0
  120. package/dist/src/analyze/calculateOutcomes/calculateTimeOutcomes.d.ts +3 -0
  121. package/dist/src/analyze/calculateOutcomes/calculateTryOutcomes.d.ts +3 -0
  122. package/dist/src/analyze/calculateOutcomes/calculateWhenFirstOutcomes.d.ts +3 -0
  123. package/dist/src/analyze/calculateOutcomes/calculateWhenLetOutcomes.d.ts +3 -0
  124. package/dist/src/analyze/calculateOutcomes/calculateWhenNotOutcomes.d.ts +3 -0
  125. package/dist/src/analyze/calculateOutcomes/calculateWhenOutcomes.d.ts +3 -0
  126. package/dist/src/analyze/calculateOutcomes/index.d.ts +18 -0
  127. package/dist/src/analyze/calculateOutcomes/specialExpressionCalculators.d.ts +55 -0
  128. package/dist/src/analyze/findUnresolvedIdentifiers.d.ts +2 -0
  129. package/dist/src/analyze/index.d.ts +17 -2
  130. package/dist/src/analyze/utils.d.ts +4 -3
  131. package/dist/src/builtin/index.d.ts +35 -2
  132. package/dist/src/builtin/interface.d.ts +13 -14
  133. package/dist/src/builtin/specialExpressions/and.d.ts +4 -1
  134. package/dist/src/builtin/specialExpressions/comment.d.ts +4 -1
  135. package/dist/src/builtin/specialExpressions/cond.d.ts +3 -5
  136. package/dist/src/builtin/specialExpressions/declared.d.ts +4 -1
  137. package/dist/src/builtin/specialExpressions/def.d.ts +4 -2
  138. package/dist/src/builtin/specialExpressions/defs.d.ts +4 -2
  139. package/dist/src/builtin/specialExpressions/do.d.ts +4 -1
  140. package/dist/src/builtin/specialExpressions/functions.d.ts +15 -6
  141. package/dist/src/builtin/specialExpressions/if-let.d.ts +8 -1
  142. package/dist/src/builtin/specialExpressions/if-not.d.ts +4 -1
  143. package/dist/src/builtin/specialExpressions/if.d.ts +4 -1
  144. package/dist/src/builtin/specialExpressions/let.d.ts +8 -1
  145. package/dist/src/builtin/specialExpressions/loop.d.ts +5 -1
  146. package/dist/src/builtin/specialExpressions/loops.d.ts +9 -3
  147. package/dist/src/builtin/specialExpressions/or.d.ts +4 -1
  148. package/dist/src/builtin/specialExpressions/qq.d.ts +4 -1
  149. package/dist/src/builtin/specialExpressions/recur.d.ts +4 -1
  150. package/dist/src/builtin/specialExpressions/throw.d.ts +4 -1
  151. package/dist/src/builtin/specialExpressions/time.d.ts +4 -1
  152. package/dist/src/builtin/specialExpressions/try.d.ts +6 -1
  153. package/dist/src/builtin/specialExpressions/when-first.d.ts +5 -1
  154. package/dist/src/builtin/specialExpressions/when-let.d.ts +5 -1
  155. package/dist/src/builtin/specialExpressions/when-not.d.ts +4 -1
  156. package/dist/src/builtin/specialExpressions/when.d.ts +4 -1
  157. package/dist/src/constants/constants.d.ts +5 -2
  158. package/dist/src/errors.d.ts +2 -1
  159. package/dist/src/evaluator/ContextStack.d.ts +5 -2
  160. package/dist/src/index.d.ts +1 -0
  161. package/dist/src/parser/interface.d.ts +27 -32
  162. package/dist/src/removeCommentNodes/index.d.ts +11 -0
  163. package/dist/src/removeCommentNodes/removeCommentNodesFromSpecialExpression.d.ts +3 -0
  164. package/dist/src/tokenizer/index.d.ts +8 -1
  165. package/dist/src/tokenizer/interface.d.ts +15 -5
  166. package/dist/src/tokenizer/tokenizers.d.ts +3 -2
  167. package/dist/src/typeGuards/index.d.ts +8 -6
  168. package/dist/src/typeGuards/token.d.ts +1 -1
  169. package/dist/src/unparser/UnparseOptions.d.ts +15 -0
  170. package/dist/src/unparser/__tests__/testFormatter.d.ts +1 -0
  171. package/dist/src/unparser/unparse.d.ts +5 -0
  172. package/dist/src/unparser/unparseArrayLiteral.d.ts +3 -0
  173. package/dist/src/unparser/unparseBindings.d.ts +3 -0
  174. package/dist/src/unparser/unparseNormalExpression.d.ts +3 -0
  175. package/dist/src/unparser/unparseObjectLiteral.d.ts +3 -0
  176. package/dist/src/unparser/unparseParams.d.ts +17 -0
  177. package/dist/src/unparser/unparseSpecialExpression/index.d.ts +3 -0
  178. package/dist/src/unparser/unparseSpecialExpression/unparseCond.d.ts +3 -0
  179. package/dist/src/unparser/unparseSpecialExpression/unparseDo.d.ts +3 -0
  180. package/dist/src/unparser/unparseSpecialExpression/unparseIfLet.d.ts +3 -0
  181. package/dist/src/unparser/unparseSpecialExpression/unparseIfOrWhenLike.d.ts +6 -0
  182. package/dist/src/unparser/unparseSpecialExpression/unparseLet.d.ts +3 -0
  183. package/dist/src/unparser/utils.d.ts +5 -0
  184. package/dist/src/utils/index.d.ts +1 -0
  185. package/dist/src/utils/symbols.d.ts +2 -2
  186. package/dist/testFramework.esm.js +6180 -4521
  187. package/dist/testFramework.esm.js.map +1 -1
  188. package/dist/testFramework.js +6180 -4521
  189. package/dist/testFramework.js.map +1 -1
  190. package/package.json +6 -5
  191. package/dist/cli/src/analyze/interface.d.ts +0 -12
  192. package/dist/src/analyze/interface.d.ts +0 -12
@@ -1,3 +1,2 @@
1
- export declare function throttle<T extends (...args: any[]) => void>(func: T): (this: any, ...args: Parameters<T>) => void;
2
1
  export declare function stringifyValue(value: unknown, html: boolean): string;
3
2
  export declare function findAllOccurrences(input: string, pattern: RegExp): Set<string>;
@@ -52,7 +52,7 @@ export declare const categoryRecord: {
52
52
  readonly Datatype: true;
53
53
  };
54
54
  export type Category = keyof typeof categoryRecord;
55
- export declare const categories: ("String" | "Functional" | "Special expression" | "Predicate" | "Sequence" | "Collection" | "Array" | "Object" | "Math" | "Regular expression" | "Bitwise" | "Misc" | "Assert" | "Shorthand" | "Datatype")[];
55
+ export declare const categories: Category[];
56
56
  declare const dataTypes: readonly ["number", "string", "object", "array", "boolean", "function", "integer", "any", "nil", "collection", "sequence", "regexp", "never"];
57
57
  export type DataType = typeof dataTypes[number];
58
58
  export declare function isDataType(arg: string): arg is DataType;
@@ -5,12 +5,7 @@ export interface Example {
5
5
  code: string;
6
6
  context?: {
7
7
  values?: Record<string, unknown>;
8
- lazyValues?: Record<string, {
9
- read: string;
10
- }>;
11
- jsFunctions?: Record<string, {
12
- fn: string;
13
- }>;
8
+ jsFunctions?: Record<string, string>;
14
9
  };
15
10
  }
16
11
  export declare const examples: Example[];
@@ -1,9 +1,8 @@
1
- import type { AnalyzeResult } from '../analyze/interface';
2
- import { ContextStack } from '../evaluator/ContextStack';
1
+ import type { Analysis } from '../analyze';
3
2
  import type { Context } from '../evaluator/interface';
4
3
  import type { Any } from '../interface';
5
4
  import type { Ast, LitsFunction } from '../parser/interface';
6
- import type { TokenStream } from '../tokenizer/interface';
5
+ import type { TokenStream, TokenizeParams } from '../tokenizer/interface';
7
6
  import { Cache } from './Cache';
8
7
  export interface LitsRuntimeInfo {
9
8
  astCache: Cache | null;
@@ -25,12 +24,16 @@ export interface LitsParams {
25
24
  lazyValues?: Record<string, LazyValue>;
26
25
  jsFunctions?: Record<string, JsFunction>;
27
26
  filePath?: string;
27
+ debug?: boolean;
28
28
  }
29
29
  interface LitsConfig {
30
30
  initialCache?: Record<string, Ast>;
31
31
  astCacheSize?: number | null;
32
32
  debug?: boolean;
33
33
  }
34
+ type FormatParams = LitsParams & {
35
+ lineLength?: number;
36
+ };
34
37
  export declare class Lits {
35
38
  private astCache;
36
39
  private astCacheSize;
@@ -38,13 +41,13 @@ export declare class Lits {
38
41
  constructor(config?: LitsConfig);
39
42
  getRuntimeInfo(): LitsRuntimeInfo;
40
43
  run(program: string, params?: LitsParams): unknown;
44
+ format(program: string, params?: FormatParams): string;
41
45
  context(program: string, params?: LitsParams): Context;
42
- analyze(program: string): AnalyzeResult;
43
- tokenize(program: string, filePath?: string): TokenStream;
46
+ analyze(program: string, params?: LitsParams): Analysis;
47
+ tokenize(program: string, tokenizeParams?: TokenizeParams): TokenStream;
44
48
  parse(tokenStream: TokenStream): Ast;
45
- private evaluate;
49
+ evaluate(ast: Ast, params: LitsParams): Any;
46
50
  apply(fn: LitsFunction, fnParams: unknown[], params?: LitsParams): Any;
47
51
  private generateAst;
48
52
  }
49
- export declare function createContextStack(params?: LitsParams): ContextStack;
50
53
  export {};
@@ -0,0 +1,3 @@
1
+ import type { AndNode } from '../../builtin/specialExpressions/and';
2
+ import type { CalculatePossibleAstNodesHelper } from '.';
3
+ export declare const calculateAndOutcomes: CalculatePossibleAstNodesHelper<AndNode>;
@@ -0,0 +1,3 @@
1
+ import type { CommentExpressionNode } from '../../builtin/specialExpressions/comment';
2
+ import type { CalculatePossibleAstNodesHelper } from '.';
3
+ export declare const calculateCommentOutcomes: CalculatePossibleAstNodesHelper<CommentExpressionNode>;
@@ -0,0 +1,3 @@
1
+ import type { CondNode } from '../../builtin/specialExpressions/cond';
2
+ import type { CalculatePossibleAstNodesHelper } from '.';
3
+ export declare const calculateCondOutcomes: CalculatePossibleAstNodesHelper<CondNode>;
@@ -0,0 +1,3 @@
1
+ import type { DeclaredNode } from '../../builtin/specialExpressions/declared';
2
+ import type { CalculatePossibleAstNodesHelper } from '.';
3
+ export declare const calculateDeclaredOutcomes: CalculatePossibleAstNodesHelper<DeclaredNode>;
@@ -0,0 +1,3 @@
1
+ import type { DefNode } from '../../builtin/specialExpressions/def';
2
+ import type { CalculatePossibleAstNodesHelper } from '.';
3
+ export declare const calculateDefOutcomes: CalculatePossibleAstNodesHelper<DefNode>;
@@ -0,0 +1,3 @@
1
+ import type { DefsNode } from '../../builtin/specialExpressions/defs';
2
+ import type { CalculatePossibleAstNodesHelper } from '.';
3
+ export declare const calculateDefsOutcomes: CalculatePossibleAstNodesHelper<DefsNode>;
@@ -0,0 +1,3 @@
1
+ import type { DoNode } from '../../builtin/specialExpressions/do';
2
+ import type { CalculatePossibleAstNodesHelper } from '.';
3
+ export declare const calculateDoOutcomes: CalculatePossibleAstNodesHelper<DoNode>;
@@ -0,0 +1,5 @@
1
+ import type { DefnNode, DefnsNode, FnNode } from '../../builtin/specialExpressions/functions';
2
+ import type { CalculatePossibleAstNodesHelper } from '.';
3
+ export declare const calculateDefnOutcomes: CalculatePossibleAstNodesHelper<DefnNode>;
4
+ export declare const calculateDefnsOutcomes: CalculatePossibleAstNodesHelper<DefnsNode>;
5
+ export declare const calculateFnOutcomes: CalculatePossibleAstNodesHelper<FnNode>;
@@ -0,0 +1,3 @@
1
+ import type { IfLetNode } from '../../builtin/specialExpressions/if-let';
2
+ import type { CalculatePossibleAstNodesHelper } from '.';
3
+ export declare const calculateIfLetOutcomes: CalculatePossibleAstNodesHelper<IfLetNode>;
@@ -0,0 +1,3 @@
1
+ import type { IfNotNode } from '../../builtin/specialExpressions/if-not';
2
+ import type { CalculatePossibleAstNodesHelper } from '.';
3
+ export declare const calculateIfNotOutcomes: CalculatePossibleAstNodesHelper<IfNotNode>;
@@ -0,0 +1,3 @@
1
+ import type { IfNode } from '../../builtin/specialExpressions/if';
2
+ import type { CalculatePossibleAstNodesHelper } from '.';
3
+ export declare const calculateIfOutcomes: CalculatePossibleAstNodesHelper<IfNode>;
@@ -0,0 +1,3 @@
1
+ import type { LetNode } from '../../builtin/specialExpressions/let';
2
+ import type { CalculatePossibleAstNodesHelper } from '.';
3
+ export declare const calculateLetOutcomes: CalculatePossibleAstNodesHelper<LetNode>;
@@ -0,0 +1,3 @@
1
+ import type { LoopNode } from '../../builtin/specialExpressions/loop';
2
+ import type { CalculatePossibleAstNodesHelper } from '.';
3
+ export declare const calculateLoopOutcomes: CalculatePossibleAstNodesHelper<LoopNode>;
@@ -0,0 +1,4 @@
1
+ import type { DoSeqNode, ForNode } from '../../builtin/specialExpressions/loops';
2
+ import type { CalculatePossibleAstNodesHelper } from '.';
3
+ export declare const calculateForOutcomes: CalculatePossibleAstNodesHelper<ForNode>;
4
+ export declare const calculateDoSeqOutcomes: CalculatePossibleAstNodesHelper<DoSeqNode>;
@@ -0,0 +1,3 @@
1
+ import type { OrNode } from '../../builtin/specialExpressions/or';
2
+ import type { CalculatePossibleAstNodesHelper } from '.';
3
+ export declare const calculateOrOutcomes: CalculatePossibleAstNodesHelper<OrNode>;
@@ -0,0 +1,3 @@
1
+ import type { QqNode } from '../../builtin/specialExpressions/qq';
2
+ import type { CalculatePossibleAstNodesHelper } from '.';
3
+ export declare const calculateQqOutcomes: CalculatePossibleAstNodesHelper<QqNode>;
@@ -0,0 +1,3 @@
1
+ import type { RecurNode } from '../../builtin/specialExpressions/recur';
2
+ import type { CalculatePossibleAstNodesHelper } from '.';
3
+ export declare const calculateRecurOutcomes: CalculatePossibleAstNodesHelper<RecurNode>;
@@ -0,0 +1,3 @@
1
+ import type { ThrowNode } from '../../builtin/specialExpressions/throw';
2
+ import type { CalculatePossibleAstNodesHelper } from '.';
3
+ export declare const calculateThrowOutcomes: CalculatePossibleAstNodesHelper<ThrowNode>;
@@ -0,0 +1,3 @@
1
+ import type { TimeNode } from '../../builtin/specialExpressions/time';
2
+ import type { CalculatePossibleAstNodesHelper } from '.';
3
+ export declare const calculateTimeOutcomes: CalculatePossibleAstNodesHelper<TimeNode>;
@@ -0,0 +1,3 @@
1
+ import type { TryNode } from '../../builtin/specialExpressions/try';
2
+ import type { CalculatePossibleAstNodesHelper } from '.';
3
+ export declare const calculateTryOutcomes: CalculatePossibleAstNodesHelper<TryNode>;
@@ -0,0 +1,3 @@
1
+ import type { WhenFirstNode } from '../../builtin/specialExpressions/when-first';
2
+ import type { CalculatePossibleAstNodesHelper } from '.';
3
+ export declare const calculateWhenFirstOutcomes: CalculatePossibleAstNodesHelper<WhenFirstNode>;
@@ -0,0 +1,3 @@
1
+ import type { WhenLetNode } from '../../builtin/specialExpressions/when-let';
2
+ import type { CalculatePossibleAstNodesHelper } from '.';
3
+ export declare const calculateWhenLetOutcomes: CalculatePossibleAstNodesHelper<WhenLetNode>;
@@ -0,0 +1,3 @@
1
+ import type { WhenNotNode } from '../../builtin/specialExpressions/when-not';
2
+ import type { CalculatePossibleAstNodesHelper } from '.';
3
+ export declare const calculateWhenNotOutcomes: CalculatePossibleAstNodesHelper<WhenNotNode>;
@@ -0,0 +1,3 @@
1
+ import type { WhenNode } from '../../builtin/specialExpressions/when';
2
+ import type { CalculatePossibleAstNodesHelper } from '.';
3
+ export declare const calculateWhenOutcomes: CalculatePossibleAstNodesHelper<WhenNode>;
@@ -0,0 +1,18 @@
1
+ import type { Outcomes } from '..';
2
+ import type { ContextStack } from '../../evaluator/ContextStack';
3
+ import type { AstNode } from '../../parser/interface';
4
+ export type CalculatePossibleAstNodes = (astNode: AstNode, indentifiers?: string[]) => AstNode[];
5
+ export type CombinateAstNodes = (astNodes: AstNode[], indentifiers?: string[]) => AstNode[][];
6
+ export type IsAstComputable = (node: AstNode | AstNode[] | AstNode[][]) => boolean;
7
+ export type AddGlobaleIdentifier = (name: string) => void;
8
+ export interface CalculatePossibleAstNodesHelperOptions<T extends AstNode> {
9
+ astNode: T;
10
+ nilNode: AstNode;
11
+ calculatePossibleAstNodes: CalculatePossibleAstNodes;
12
+ combinateAstNodes: CombinateAstNodes;
13
+ isAstComputable: IsAstComputable;
14
+ addGlobalIdentifier: AddGlobaleIdentifier;
15
+ }
16
+ export type CalculatePossibleAstNodesHelper<T extends AstNode> = (options: CalculatePossibleAstNodesHelperOptions<T>) => AstNode[];
17
+ export declare function calculateOutcomes(contextStack: ContextStack, astNodes: AstNode[]): Outcomes | null;
18
+ export declare function calculateOutcomesInner(contextStack: ContextStack, astNodes: AstNode[]): Outcomes | null;
@@ -0,0 +1,55 @@
1
+ import type { AndNode } from '../../builtin/specialExpressions/and';
2
+ import type { CommentExpressionNode } from '../../builtin/specialExpressions/comment';
3
+ import type { CondNode } from '../../builtin/specialExpressions/cond';
4
+ import type { DeclaredNode } from '../../builtin/specialExpressions/declared';
5
+ import type { DefNode } from '../../builtin/specialExpressions/def';
6
+ import type { DefsNode } from '../../builtin/specialExpressions/defs';
7
+ import type { DoNode } from '../../builtin/specialExpressions/do';
8
+ import type { DefnNode, DefnsNode, FnNode } from '../../builtin/specialExpressions/functions';
9
+ import type { IfNode } from '../../builtin/specialExpressions/if';
10
+ import type { IfLetNode } from '../../builtin/specialExpressions/if-let';
11
+ import type { IfNotNode } from '../../builtin/specialExpressions/if-not';
12
+ import type { LetNode } from '../../builtin/specialExpressions/let';
13
+ import type { LoopNode } from '../../builtin/specialExpressions/loop';
14
+ import type { DoSeqNode, ForNode } from '../../builtin/specialExpressions/loops';
15
+ import type { OrNode } from '../../builtin/specialExpressions/or';
16
+ import type { QqNode } from '../../builtin/specialExpressions/qq';
17
+ import type { RecurNode } from '../../builtin/specialExpressions/recur';
18
+ import type { ThrowNode } from '../../builtin/specialExpressions/throw';
19
+ import type { TimeNode } from '../../builtin/specialExpressions/time';
20
+ import type { TryNode } from '../../builtin/specialExpressions/try';
21
+ import type { WhenNode } from '../../builtin/specialExpressions/when';
22
+ import type { WhenFirstNode } from '../../builtin/specialExpressions/when-first';
23
+ import type { WhenLetNode } from '../../builtin/specialExpressions/when-let';
24
+ import type { WhenNotNode } from '../../builtin/specialExpressions/when-not';
25
+ import type { AstNode } from '../../parser/interface';
26
+ import type { CalculatePossibleAstNodesHelperOptions } from '.';
27
+ export declare const specialExpressionCalculator: {
28
+ and: (astNode: AndNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, "astNode">) => AstNode[];
29
+ comment: (astNode: CommentExpressionNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, "astNode">) => AstNode[];
30
+ cond: (astNode: CondNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, "astNode">) => AstNode[];
31
+ 'declared?': (astNode: DeclaredNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, "astNode">) => AstNode[];
32
+ defn: (astNode: DefnNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, "astNode">) => AstNode[];
33
+ def: (astNode: DefNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, "astNode">) => AstNode[];
34
+ defns: (astNode: DefnsNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, "astNode">) => AstNode[];
35
+ defs: (astNode: DefsNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, "astNode">) => AstNode[];
36
+ do: (astNode: DoNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, "astNode">) => AstNode[];
37
+ doseq: (astNode: DoSeqNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, "astNode">) => AstNode[];
38
+ fn: (astNode: FnNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, "astNode">) => AstNode[];
39
+ for: (astNode: ForNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, "astNode">) => AstNode[];
40
+ 'if-let': (astNode: IfLetNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, "astNode">) => AstNode[];
41
+ if: (astNode: IfNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, "astNode">) => AstNode[];
42
+ 'if-not': (astNode: IfNotNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, "astNode">) => AstNode[];
43
+ let: (astNode: LetNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, "astNode">) => AstNode[];
44
+ loop: (astNode: LoopNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, "astNode">) => AstNode[];
45
+ or: (astNode: OrNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, "astNode">) => AstNode[];
46
+ '??': (astNode: QqNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, "astNode">) => AstNode[];
47
+ recur: (astNode: RecurNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, "astNode">) => AstNode[];
48
+ 'time!': (astNode: TimeNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, "astNode">) => AstNode[];
49
+ throw: (astNode: ThrowNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, "astNode">) => AstNode[];
50
+ try: (astNode: TryNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, "astNode">) => AstNode[];
51
+ 'when-first': (astNode: WhenFirstNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, "astNode">) => AstNode[];
52
+ 'when-let': (astNode: WhenLetNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, "astNode">) => AstNode[];
53
+ when: (astNode: WhenNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, "astNode">) => AstNode[];
54
+ 'when-not': (astNode: WhenNotNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, "astNode">) => AstNode[];
55
+ };
@@ -0,0 +1,2 @@
1
+ import type { FindUnresolvedIdentifiers } from '.';
2
+ export declare const findUnresolvedIdentifiers: FindUnresolvedIdentifiers;
@@ -1,2 +1,17 @@
1
- import type { AnalyzeAst } from './interface';
2
- export declare const analyzeAst: AnalyzeAst;
1
+ import type { LitsParams } from '../Lits/Lits';
2
+ import type { Builtin } from '../builtin/interface';
3
+ import { type ContextStack } from '../evaluator/ContextStack';
4
+ import type { Ast, AstNode } from '../parser/interface';
5
+ import type { Token } from '../tokenizer/interface';
6
+ export interface UnresolvedIdentifier {
7
+ symbol: string;
8
+ token: Token | undefined;
9
+ }
10
+ export type UnresolvedIdentifiers = Set<UnresolvedIdentifier>;
11
+ export type Outcomes = unknown[];
12
+ export interface Analysis {
13
+ unresolvedIdentifiers: UnresolvedIdentifiers;
14
+ outcomes: Outcomes | null;
15
+ }
16
+ export type FindUnresolvedIdentifiers = (ast: Ast | AstNode[], contextStack: ContextStack, builtin: Builtin) => UnresolvedIdentifiers;
17
+ export declare function analyze(ast: Ast, params: LitsParams): Analysis;
@@ -1,3 +1,4 @@
1
- import type { AnalyzeResult } from './interface';
2
- export declare function joinAnalyzeResults(...results: AnalyzeResult[]): AnalyzeResult;
3
- export declare function addAnalyzeResults(target: AnalyzeResult, source: AnalyzeResult): void;
1
+ import type { UnresolvedIdentifiers } from '.';
2
+ export declare function joinAnalyzeResults(...results: UnresolvedIdentifiers[]): UnresolvedIdentifiers;
3
+ export declare function addAnalyzeResults(target: UnresolvedIdentifiers, source: UnresolvedIdentifiers): void;
4
+ export declare function combinate<T>(arrays: T[][]): T[][];
@@ -1,5 +1,38 @@
1
- import type { Builtin, BuiltinSpecialExpressions } from './interface';
2
- export declare const specialExpressions: BuiltinSpecialExpressions;
1
+ import type { Builtin } from './interface';
2
+ declare const specialExpressions: {
3
+ readonly and: import("./interface").BuiltinSpecialExpression<import("../interface").Any, import("./specialExpressions/and").AndNode>;
4
+ readonly comment: import("./interface").BuiltinSpecialExpression<null, import("./specialExpressions/comment").CommentExpressionNode>;
5
+ readonly cond: import("./interface").BuiltinSpecialExpression<import("../interface").Any, import("./specialExpressions/cond").CondNode>;
6
+ readonly def: import("./interface").BuiltinSpecialExpression<null, import("./specialExpressions/def").DefNode>;
7
+ readonly defn: import("./interface").BuiltinSpecialExpression<null, import("./specialExpressions/functions").DefnNode>;
8
+ readonly defns: import("./interface").BuiltinSpecialExpression<null, import("./specialExpressions/functions").DefnsNode>;
9
+ readonly defs: import("./interface").BuiltinSpecialExpression<null, import("./specialExpressions/defs").DefsNode>;
10
+ readonly do: import("./interface").BuiltinSpecialExpression<import("../interface").Any, import("./specialExpressions/do").DoNode>;
11
+ readonly doseq: import("./interface").BuiltinSpecialExpression<null, import("./specialExpressions/loops").DoSeqNode>;
12
+ readonly for: import("./interface").BuiltinSpecialExpression<import("../interface").Any, import("./specialExpressions/loops").ForNode>;
13
+ readonly fn: import("./interface").BuiltinSpecialExpression<import("..").LitsFunction, import("./specialExpressions/functions").FnNode>;
14
+ readonly if: import("./interface").BuiltinSpecialExpression<import("../interface").Any, import("./specialExpressions/if").IfNode>;
15
+ readonly 'if-let': import("./interface").BuiltinSpecialExpression<import("../interface").Any, import("./specialExpressions/if-let").IfLetNode>;
16
+ readonly 'if-not': import("./interface").BuiltinSpecialExpression<import("../interface").Any, import("./specialExpressions/if-not").IfNotNode>;
17
+ readonly let: import("./interface").BuiltinSpecialExpression<import("../interface").Any, import("./specialExpressions/let").LetNode>;
18
+ readonly loop: import("./interface").BuiltinSpecialExpression<import("../interface").Any, import("./specialExpressions/loop").LoopNode>;
19
+ readonly or: import("./interface").BuiltinSpecialExpression<import("../interface").Any, import("./specialExpressions/or").OrNode>;
20
+ readonly recur: import("./interface").BuiltinSpecialExpression<null, import("./specialExpressions/recur").RecurNode>;
21
+ readonly throw: import("./interface").BuiltinSpecialExpression<null, import("./specialExpressions/throw").ThrowNode>;
22
+ readonly 'time!': import("./interface").BuiltinSpecialExpression<import("../interface").Any, import("./specialExpressions/time").TimeNode>;
23
+ readonly try: import("./interface").BuiltinSpecialExpression<import("../interface").Any, import("./specialExpressions/try").TryNode>;
24
+ readonly when: import("./interface").BuiltinSpecialExpression<import("../interface").Any, import("./specialExpressions/when").WhenNode>;
25
+ readonly 'when-first': import("./interface").BuiltinSpecialExpression<import("../interface").Any, import("./specialExpressions/when-first").WhenFirstNode>;
26
+ readonly 'when-let': import("./interface").BuiltinSpecialExpression<import("../interface").Any, import("./specialExpressions/when-let").WhenLetNode>;
27
+ readonly 'when-not': import("./interface").BuiltinSpecialExpression<import("../interface").Any, import("./specialExpressions/when-not").WhenNotNode>;
28
+ readonly 'declared?': import("./interface").BuiltinSpecialExpression<boolean, import("./specialExpressions/declared").DeclaredNode>;
29
+ readonly '??': import("./interface").BuiltinSpecialExpression<import("../interface").Any, import("./specialExpressions/qq").QqNode>;
30
+ };
31
+ export type SpecialExpressionName = keyof typeof specialExpressions;
32
+ export type BuiltinSpecialExpressions = typeof specialExpressions;
33
+ export type BuiltinSpecialExpression = typeof specialExpressions[SpecialExpressionName];
34
+ export type SpecialExpressionNode = ReturnType<typeof specialExpressions[SpecialExpressionName]['parse']>[1];
3
35
  export declare const builtin: Builtin;
4
36
  export declare const normalExpressionKeys: string[];
5
37
  export declare const specialExpressionKeys: string[];
38
+ export {};
@@ -1,9 +1,10 @@
1
+ import type { FindUnresolvedIdentifiers, UnresolvedIdentifiers } from '../analyze';
2
+ import type { ContextStack } from '../evaluator/ContextStack';
1
3
  import type { EvaluateAstNode, ExecuteFunction } from '../evaluator/interface';
2
- import type { NormalExpressionNode, ParseArgument, ParseBinding, ParseBindings, ParseExpression, ParseToken, ParseTokens, SpecialExpressionNode } from '../parser/interface';
3
- import type { SourceCodeInfo, TokenStream } from '../tokenizer/interface';
4
4
  import type { Any, Arr } from '../interface';
5
- import type { AnalyzeAst, AnalyzeResult } from '../analyze/interface';
6
- import type { ContextStack } from '../evaluator/ContextStack';
5
+ import type { NormalExpressionNode, ParseArgument, ParseBinding, ParseBindings, ParseExpression, ParseToken, ParseTokensUntilClosingBracket } from '../parser/interface';
6
+ import type { SourceCodeInfo, Token, TokenStream } from '../tokenizer/interface';
7
+ import type { BuiltinSpecialExpressions, SpecialExpressionNode } from '.';
7
8
  export type NormalExpressionEvaluator<T> = (params: Arr, sourceCodeInfo: SourceCodeInfo | undefined, contextStack: ContextStack, { executeFunction }: {
8
9
  executeFunction: ExecuteFunction;
9
10
  }) => T;
@@ -14,28 +15,26 @@ interface BuiltinNormalExpression<T> {
14
15
  }
15
16
  export interface ParserHelpers {
16
17
  parseExpression: ParseExpression;
17
- parseTokens: ParseTokens;
18
+ parseTokensUntilClosingBracket: ParseTokensUntilClosingBracket;
18
19
  parseToken: ParseToken;
19
20
  parseBinding: ParseBinding;
20
21
  parseBindings: ParseBindings;
21
22
  parseArgument: ParseArgument;
22
23
  }
23
24
  export type BuiltinNormalExpressions = Record<string, BuiltinNormalExpression<Any>>;
24
- export type BuiltinSpecialExpressions = Record<string, BuiltinSpecialExpression<Any>>;
25
25
  interface EvaluateHelpers {
26
26
  evaluateAstNode: EvaluateAstNode;
27
27
  builtin: Builtin;
28
28
  }
29
- export interface BuiltinSpecialExpression<T> {
30
- parse: (tokenStream: TokenStream, position: number, parsers: ParserHelpers) => [number, SpecialExpressionNode];
31
- evaluate: (node: SpecialExpressionNode, contextStack: ContextStack, helpers: EvaluateHelpers) => T;
32
- validate?: (node: SpecialExpressionNode) => void;
33
- analyze: (node: SpecialExpressionNode, contextStack: ContextStack, params: {
34
- analyzeAst: AnalyzeAst;
29
+ export interface BuiltinSpecialExpression<T, N extends SpecialExpressionNode> {
30
+ parse: (tokenStream: TokenStream, position: number, firstToken: Token, parsers: ParserHelpers) => [number, N];
31
+ evaluate: (node: N, contextStack: ContextStack, helpers: EvaluateHelpers) => T;
32
+ findUnresolvedIdentifiers: (node: N, contextStack: ContextStack, params: {
33
+ findUnresolvedIdentifiers: FindUnresolvedIdentifiers;
35
34
  builtin: Builtin;
36
- }) => AnalyzeResult;
35
+ evaluateAstNode: EvaluateAstNode;
36
+ }) => UnresolvedIdentifiers;
37
37
  }
38
- export type SpecialExpressionName = 'and' | 'block' | 'comment' | 'cond' | 'def' | 'defn' | 'defns' | 'defs' | 'do' | 'doseq' | 'fn' | 'for' | 'function' | 'if-let' | 'if-not' | 'if' | 'let' | 'loop' | 'or' | 'partial' | 'recur' | 'return-from' | 'return' | 'throw' | 'time!' | 'try' | 'when-first' | 'when-let' | 'when-not' | 'when' | 'declared?' | '??';
39
38
  export interface Builtin {
40
39
  normalExpressions: BuiltinNormalExpressions;
41
40
  specialExpressions: BuiltinSpecialExpressions;
@@ -1,3 +1,6 @@
1
1
  import type { Any } from '../../interface';
2
+ import type { CommonSpecialExpressionNode } from '../../parser/interface';
2
3
  import type { BuiltinSpecialExpression } from '../interface';
3
- export declare const andSpecialExpression: BuiltinSpecialExpression<Any>;
4
+ export interface AndNode extends CommonSpecialExpressionNode<'and'> {
5
+ }
6
+ export declare const andSpecialExpression: BuiltinSpecialExpression<Any, AndNode>;
@@ -1,2 +1,5 @@
1
+ import type { CommonSpecialExpressionNode } from '../../parser/interface';
1
2
  import type { BuiltinSpecialExpression } from '../interface';
2
- export declare const commentSpecialExpression: BuiltinSpecialExpression<null>;
3
+ export interface CommentExpressionNode extends CommonSpecialExpressionNode<'comment'> {
4
+ }
5
+ export declare const commentSpecialExpression: BuiltinSpecialExpression<null, CommentExpressionNode>;
@@ -1,8 +1,6 @@
1
1
  import type { Any } from '../../interface';
2
- import type { AstNode } from '../../parser/interface';
2
+ import type { CommonSpecialExpressionNode } from '../../parser/interface';
3
3
  import type { BuiltinSpecialExpression } from '../interface';
4
- export interface Condition {
5
- t: AstNode;
6
- f: AstNode;
4
+ export interface CondNode extends CommonSpecialExpressionNode<'cond'> {
7
5
  }
8
- export declare const condSpecialExpression: BuiltinSpecialExpression<Any>;
6
+ export declare const condSpecialExpression: BuiltinSpecialExpression<Any, CondNode>;
@@ -1,2 +1,5 @@
1
+ import type { CommonSpecialExpressionNode } from '../../parser/interface';
1
2
  import type { BuiltinSpecialExpression } from '../interface';
2
- export declare const declaredSpecialExpression: BuiltinSpecialExpression<boolean>;
3
+ export interface DeclaredNode extends CommonSpecialExpressionNode<'declared?'> {
4
+ }
5
+ export declare const declaredSpecialExpression: BuiltinSpecialExpression<boolean, DeclaredNode>;
@@ -1,3 +1,5 @@
1
- import type { Any } from '../../interface';
1
+ import type { CommonSpecialExpressionNode } from '../../parser/interface';
2
2
  import type { BuiltinSpecialExpression } from '../interface';
3
- export declare const defSpecialExpression: BuiltinSpecialExpression<Any>;
3
+ export interface DefNode extends CommonSpecialExpressionNode<'def'> {
4
+ }
5
+ export declare const defSpecialExpression: BuiltinSpecialExpression<null, DefNode>;
@@ -1,3 +1,5 @@
1
- import type { Any } from '../../interface';
1
+ import type { CommonSpecialExpressionNode } from '../../parser/interface';
2
2
  import type { BuiltinSpecialExpression } from '../interface';
3
- export declare const defsSpecialExpression: BuiltinSpecialExpression<Any>;
3
+ export interface DefsNode extends CommonSpecialExpressionNode<'defs'> {
4
+ }
5
+ export declare const defsSpecialExpression: BuiltinSpecialExpression<null, DefsNode>;
@@ -1,3 +1,6 @@
1
1
  import type { Any } from '../../interface';
2
+ import type { CommonSpecialExpressionNode } from '../../parser/interface';
2
3
  import type { BuiltinSpecialExpression } from '../interface';
3
- export declare const doSpecialExpression: BuiltinSpecialExpression<Any>;
4
+ export interface DoNode extends CommonSpecialExpressionNode<'do'> {
5
+ }
6
+ export declare const doSpecialExpression: BuiltinSpecialExpression<Any, DoNode>;
@@ -1,9 +1,18 @@
1
- import type { LitsFunction, SpecialExpressionNode } from '../../parser/interface';
1
+ import type { AstNode, CommonSpecialExpressionNode, LitsFunction, NameNode } from '../../parser/interface';
2
2
  import type { BuiltinSpecialExpression } from '../interface';
3
3
  import type { FunctionOverload } from '../utils';
4
- export type FnNode = SpecialExpressionNode & {
4
+ export interface DefnNode extends CommonSpecialExpressionNode<'defn'> {
5
+ f: NameNode;
5
6
  o: FunctionOverload[];
6
- };
7
- export declare const defnSpecialExpression: BuiltinSpecialExpression<null>;
8
- export declare const defnsSpecialExpression: BuiltinSpecialExpression<null>;
9
- export declare const fnSpecialExpression: BuiltinSpecialExpression<LitsFunction>;
7
+ }
8
+ export interface DefnsNode extends CommonSpecialExpressionNode<'defns'> {
9
+ f: AstNode;
10
+ o: FunctionOverload[];
11
+ }
12
+ export interface FnNode extends CommonSpecialExpressionNode<'fn'> {
13
+ p: AstNode[];
14
+ o: FunctionOverload[];
15
+ }
16
+ export declare const defnSpecialExpression: BuiltinSpecialExpression<null, DefnNode>;
17
+ export declare const defnsSpecialExpression: BuiltinSpecialExpression<null, DefnsNode>;
18
+ export declare const fnSpecialExpression: BuiltinSpecialExpression<LitsFunction, FnNode>;
@@ -1,3 +1,10 @@
1
1
  import type { Any } from '../../interface';
2
+ import type { BindingNode, CommonSpecialExpressionNode, NormalExpressionNode } from '../../parser/interface';
2
3
  import type { BuiltinSpecialExpression } from '../interface';
3
- export declare const ifLetSpecialExpression: BuiltinSpecialExpression<Any>;
4
+ export interface IfLetNode extends CommonSpecialExpressionNode<'if-let'> {
5
+ b: BindingNode;
6
+ debugData: CommonSpecialExpressionNode<'let'>['debugData'] & ({
7
+ bindingArray: NormalExpressionNode;
8
+ } | undefined);
9
+ }
10
+ export declare const ifLetSpecialExpression: BuiltinSpecialExpression<Any, IfLetNode>;
@@ -1,3 +1,6 @@
1
1
  import type { Any } from '../../interface';
2
+ import type { CommonSpecialExpressionNode } from '../../parser/interface';
2
3
  import type { BuiltinSpecialExpression } from '../interface';
3
- export declare const ifNotSpecialExpression: BuiltinSpecialExpression<Any>;
4
+ export interface IfNotNode extends CommonSpecialExpressionNode<'if-not'> {
5
+ }
6
+ export declare const ifNotSpecialExpression: BuiltinSpecialExpression<Any, IfNotNode>;
@@ -1,3 +1,6 @@
1
1
  import type { Any } from '../../interface';
2
+ import type { CommonSpecialExpressionNode } from '../../parser/interface';
2
3
  import type { BuiltinSpecialExpression } from '../interface';
3
- export declare const ifSpecialExpression: BuiltinSpecialExpression<Any>;
4
+ export interface IfNode extends CommonSpecialExpressionNode<'if'> {
5
+ }
6
+ export declare const ifSpecialExpression: BuiltinSpecialExpression<Any, IfNode>;
@@ -1,3 +1,10 @@
1
1
  import type { Any } from '../../interface';
2
+ import type { BindingNode, CommonSpecialExpressionNode, NormalExpressionNode } from '../../parser/interface';
2
3
  import type { BuiltinSpecialExpression } from '../interface';
3
- export declare const letSpecialExpression: BuiltinSpecialExpression<Any>;
4
+ export interface LetNode extends CommonSpecialExpressionNode<'let'> {
5
+ bs: BindingNode[];
6
+ debugData: CommonSpecialExpressionNode<'let'>['debugData'] & ({
7
+ bindingArray: NormalExpressionNode;
8
+ } | undefined);
9
+ }
10
+ export declare const letSpecialExpression: BuiltinSpecialExpression<Any, LetNode>;
@@ -1,3 +1,7 @@
1
1
  import type { Any } from '../../interface';
2
+ import type { BindingNode, CommonSpecialExpressionNode } from '../../parser/interface';
2
3
  import type { BuiltinSpecialExpression } from '../interface';
3
- export declare const loopSpecialExpression: BuiltinSpecialExpression<Any>;
4
+ export interface LoopNode extends CommonSpecialExpressionNode<'loop'> {
5
+ bs: BindingNode[];
6
+ }
7
+ export declare const loopSpecialExpression: BuiltinSpecialExpression<Any, LoopNode>;
@@ -1,6 +1,12 @@
1
1
  import type { Any } from '../../interface';
2
- import type { AstNode, BindingNode } from '../../parser/interface';
2
+ import type { AstNode, BindingNode, CommonSpecialExpressionNode } from '../../parser/interface';
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
+ }
4
10
  export interface LoopBindingNode {
5
11
  b: BindingNode;
6
12
  m: Array<'&let' | '&when' | '&while'>;
@@ -8,5 +14,5 @@ export interface LoopBindingNode {
8
14
  wn?: AstNode;
9
15
  we?: AstNode;
10
16
  }
11
- export declare const forSpecialExpression: BuiltinSpecialExpression<Any>;
12
- export declare const doseqSpecialExpression: BuiltinSpecialExpression<null>;
17
+ export declare const forSpecialExpression: BuiltinSpecialExpression<Any, ForNode>;
18
+ export declare const doseqSpecialExpression: BuiltinSpecialExpression<null, DoSeqNode>;
@@ -1,3 +1,6 @@
1
1
  import type { Any } from '../../interface';
2
+ import type { CommonSpecialExpressionNode } from '../../parser/interface';
2
3
  import type { BuiltinSpecialExpression } from '../interface';
3
- export declare const orSpecialExpression: BuiltinSpecialExpression<Any>;
4
+ export interface OrNode extends CommonSpecialExpressionNode<'or'> {
5
+ }
6
+ export declare const orSpecialExpression: BuiltinSpecialExpression<Any, OrNode>;