@aster-cloud/aster-lang-ts 1.0.1 → 1.0.3

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 (123) hide show
  1. package/CHANGELOG.md +26 -1
  2. package/dist/src/ast/ast_visitor.d.ts.map +1 -1
  3. package/dist/src/ast/ast_visitor.js +7 -0
  4. package/dist/src/ast/ast_visitor.js.map +1 -1
  5. package/dist/src/browser.d.ts +1 -1
  6. package/dist/src/browser.d.ts.map +1 -1
  7. package/dist/src/browser.js +1 -1
  8. package/dist/src/browser.js.map +1 -1
  9. package/dist/src/config/lexicons/overlay-loader.d.ts.map +1 -1
  10. package/dist/src/config/lexicons/overlay-loader.js +33 -10
  11. package/dist/src/config/lexicons/overlay-loader.js.map +1 -1
  12. package/dist/src/config/lexicons/regex-guard.d.ts +47 -0
  13. package/dist/src/config/lexicons/regex-guard.d.ts.map +1 -0
  14. package/dist/src/config/lexicons/regex-guard.js +126 -0
  15. package/dist/src/config/lexicons/regex-guard.js.map +1 -0
  16. package/dist/src/config/semantic.d.ts +2 -0
  17. package/dist/src/config/semantic.d.ts.map +1 -1
  18. package/dist/src/config/semantic.js +5 -0
  19. package/dist/src/config/semantic.js.map +1 -1
  20. package/dist/src/core/core_ir.d.ts +1 -0
  21. package/dist/src/core/core_ir.d.ts.map +1 -1
  22. package/dist/src/core/core_ir.js +7 -0
  23. package/dist/src/core/core_ir.js.map +1 -1
  24. package/dist/src/core/interpreter.js +6 -0
  25. package/dist/src/core/interpreter.js.map +1 -1
  26. package/dist/src/core/pretty_core.d.ts.map +1 -1
  27. package/dist/src/core/pretty_core.js +3 -0
  28. package/dist/src/core/pretty_core.js.map +1 -1
  29. package/dist/src/core/visitor.d.ts.map +1 -1
  30. package/dist/src/core/visitor.js +7 -0
  31. package/dist/src/core/visitor.js.map +1 -1
  32. package/dist/src/diagnostics/diagnostics.d.ts +2 -0
  33. package/dist/src/diagnostics/diagnostics.d.ts.map +1 -1
  34. package/dist/src/diagnostics/diagnostics.js +4 -0
  35. package/dist/src/diagnostics/diagnostics.js.map +1 -1
  36. package/dist/src/formatter.js +3 -0
  37. package/dist/src/formatter.js.map +1 -1
  38. package/dist/src/frontend/canonicalizer.d.ts.map +1 -1
  39. package/dist/src/frontend/canonicalizer.js +15 -4
  40. package/dist/src/frontend/canonicalizer.js.map +1 -1
  41. package/dist/src/frontend/keyword-translator.d.ts.map +1 -1
  42. package/dist/src/frontend/keyword-translator.js +11 -5
  43. package/dist/src/frontend/keyword-translator.js.map +1 -1
  44. package/dist/src/jvm/emitter.d.ts.map +1 -1
  45. package/dist/src/jvm/emitter.js +8 -2
  46. package/dist/src/jvm/emitter.js.map +1 -1
  47. package/dist/src/lower_to_core.js +3 -0
  48. package/dist/src/lower_to_core.js.map +1 -1
  49. package/dist/src/lsp/codeaction.d.ts.map +1 -1
  50. package/dist/src/lsp/codeaction.js +7 -6
  51. package/dist/src/lsp/codeaction.js.map +1 -1
  52. package/dist/src/lsp/diagnostics.d.ts.map +1 -1
  53. package/dist/src/lsp/diagnostics.js +12 -1
  54. package/dist/src/lsp/diagnostics.js.map +1 -1
  55. package/dist/src/lsp/navigation/shared.d.ts +6 -0
  56. package/dist/src/lsp/navigation/shared.d.ts.map +1 -1
  57. package/dist/src/lsp/navigation/shared.js +9 -1
  58. package/dist/src/lsp/navigation/shared.js.map +1 -1
  59. package/dist/src/lsp/pii_diagnostics.d.ts.map +1 -1
  60. package/dist/src/lsp/pii_diagnostics.js +10 -0
  61. package/dist/src/lsp/pii_diagnostics.js.map +1 -1
  62. package/dist/src/lsp/type-guards.d.ts +7 -7
  63. package/dist/src/lsp/type-guards.d.ts.map +1 -1
  64. package/dist/src/lsp/type-guards.js.map +1 -1
  65. package/dist/src/lsp/workspace/index-manager.d.ts.map +1 -1
  66. package/dist/src/lsp/workspace/index-manager.js +12 -1
  67. package/dist/src/lsp/workspace/index-manager.js.map +1 -1
  68. package/dist/src/package/manifest-parser.d.ts.map +1 -1
  69. package/dist/src/package/manifest-parser.js +36 -12
  70. package/dist/src/package/manifest-parser.js.map +1 -1
  71. package/dist/src/package/package-cache.d.ts.map +1 -1
  72. package/dist/src/package/package-cache.js +29 -2
  73. package/dist/src/package/package-cache.js.map +1 -1
  74. package/dist/src/parser/context.d.ts +25 -0
  75. package/dist/src/parser/context.d.ts.map +1 -1
  76. package/dist/src/parser/context.js +28 -0
  77. package/dist/src/parser/context.js.map +1 -1
  78. package/dist/src/parser/decl-parser.d.ts.map +1 -1
  79. package/dist/src/parser/decl-parser.js +23 -11
  80. package/dist/src/parser/decl-parser.js.map +1 -1
  81. package/dist/src/parser/expr-stmt-parser.d.ts +0 -6
  82. package/dist/src/parser/expr-stmt-parser.d.ts.map +1 -1
  83. package/dist/src/parser/expr-stmt-parser.js +132 -2
  84. package/dist/src/parser/expr-stmt-parser.js.map +1 -1
  85. package/dist/src/typecheck/expression.d.ts.map +1 -1
  86. package/dist/src/typecheck/expression.js +11 -0
  87. package/dist/src/typecheck/expression.js.map +1 -1
  88. package/dist/src/typecheck-pii.js +9 -0
  89. package/dist/src/typecheck-pii.js.map +1 -1
  90. package/dist/src/types/base.d.ts +10 -0
  91. package/dist/src/types/base.d.ts.map +1 -1
  92. package/dist/src/types.d.ts +9 -2
  93. package/dist/src/types.d.ts.map +1 -1
  94. package/dist/src/types.js.map +1 -1
  95. package/dist/test/unit/corpus-version.test.d.ts +14 -0
  96. package/dist/test/unit/corpus-version.test.d.ts.map +1 -0
  97. package/dist/test/unit/corpus-version.test.js +37 -0
  98. package/dist/test/unit/corpus-version.test.js.map +1 -0
  99. package/dist/test/unit/emitter/emitter.test.js +10 -13
  100. package/dist/test/unit/emitter/emitter.test.js.map +1 -1
  101. package/dist/test/unit/lexicons/hi-in-export.test.d.ts +9 -0
  102. package/dist/test/unit/lexicons/hi-in-export.test.d.ts.map +1 -0
  103. package/dist/test/unit/lexicons/hi-in-export.test.js +38 -0
  104. package/dist/test/unit/lexicons/hi-in-export.test.js.map +1 -0
  105. package/dist/test/unit/manifest-corrupt-json.test.d.ts +8 -0
  106. package/dist/test/unit/manifest-corrupt-json.test.d.ts.map +1 -0
  107. package/dist/test/unit/manifest-corrupt-json.test.js +51 -0
  108. package/dist/test/unit/manifest-corrupt-json.test.js.map +1 -0
  109. package/dist/test/unit/parser/depth-limit.test.d.ts +9 -0
  110. package/dist/test/unit/parser/depth-limit.test.d.ts.map +1 -0
  111. package/dist/test/unit/parser/depth-limit.test.js +39 -0
  112. package/dist/test/unit/parser/depth-limit.test.js.map +1 -0
  113. package/dist/test/unit/parser/inline-if.test.d.ts +2 -0
  114. package/dist/test/unit/parser/inline-if.test.d.ts.map +1 -0
  115. package/dist/test/unit/parser/inline-if.test.js +70 -0
  116. package/dist/test/unit/parser/inline-if.test.js.map +1 -0
  117. package/dist/test/unit/parser/parser.test.js +40 -1
  118. package/dist/test/unit/parser/parser.test.js.map +1 -1
  119. package/dist/test/unit/regex-guard.test.d.ts +12 -0
  120. package/dist/test/unit/regex-guard.test.d.ts.map +1 -0
  121. package/dist/test/unit/regex-guard.test.js +66 -0
  122. package/dist/test/unit/regex-guard.test.js.map +1 -0
  123. package/package.json +5 -1
@@ -9,6 +9,27 @@ import { join } from 'node:path';
9
9
  import { extract } from 'tar';
10
10
  import { parseManifest } from './manifest-parser.js';
11
11
  import { DiagnosticCode, DiagnosticBuilder, dummyPosition, } from '../diagnostics/diagnostics.js';
12
+ /**
13
+ * 校验从磁盘 JSON 反序列化得到的对象是否符合 CacheMetadata 形状,
14
+ * 而非盲目 `as CacheMetadata`。损坏/被篡改的元数据返回 null,调用方按
15
+ * “缓存无效/过期”处理。
16
+ */
17
+ function parseCacheMetadata(json) {
18
+ let raw;
19
+ try {
20
+ raw = JSON.parse(json);
21
+ }
22
+ catch {
23
+ return null;
24
+ }
25
+ if (raw === null ||
26
+ typeof raw !== 'object' ||
27
+ typeof raw.cachedAt !== 'number' ||
28
+ typeof raw.version !== 'string') {
29
+ return null;
30
+ }
31
+ return raw;
32
+ }
12
33
  /**
13
34
  * 基于文件系统的包缓存管理器
14
35
  */
@@ -38,7 +59,10 @@ export class PackageCache {
38
59
  }
39
60
  try {
40
61
  const metadataJson = readFileSync(metadataPath, 'utf-8');
41
- const metadataContent = JSON.parse(metadataJson);
62
+ const metadataContent = parseCacheMetadata(metadataJson);
63
+ if (!metadataContent) {
64
+ return false;
65
+ }
42
66
  const cachedAt = metadataContent.cachedAt;
43
67
  const now = Date.now();
44
68
  if (now - cachedAt > this.ttl) {
@@ -145,7 +169,10 @@ export class PackageCache {
145
169
  }
146
170
  try {
147
171
  const metadataContent = await readFile(metadataPath, 'utf-8');
148
- const metadata = JSON.parse(metadataContent);
172
+ const metadata = parseCacheMetadata(metadataContent);
173
+ if (!metadata) {
174
+ continue;
175
+ }
149
176
  const now = Date.now();
150
177
  if (now - metadata.cachedAt > this.ttl) {
151
178
  const cachePath = join(packagePath, version);
@@ -1 +1 @@
1
- {"version":3,"file":"package-cache.js","sourceRoot":"","sources":["../../../src/package/package-cache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"package-cache.js","sourceRoot":"","sources":["../../../src/package/package-cache.ts"],"names":[],"mappings":"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"}
@@ -48,7 +48,32 @@ export interface ParserContext {
48
48
  popCompoundContext(): void;
49
49
  /** 检查是否在指定复合模式上下文内 */
50
50
  inCompoundContext(opener: string): boolean;
51
+ /** 当前递归下降嵌套深度(用于防止栈溢出 / DoS) */
52
+ recursionDepth: number;
53
+ /**
54
+ * 进入一层递归下降。超过 MAX_RECURSION_DEPTH 时抛出可恢复的
55
+ * DiagnosticError(而非原生 RangeError),调用方应在 finally 中
56
+ * 调用 exitRecursion()。
57
+ */
58
+ enterRecursion(): void;
59
+ /** 退出一层递归下降。 */
60
+ exitRecursion(): void;
51
61
  }
62
+ /**
63
+ * 递归下降解析器允许的最大嵌套深度。
64
+ *
65
+ * 单线程 JS 无法对深递归做真正的超时;恶意/病态输入(如 5000 个嵌套
66
+ * 括号)会撑爆原生调用栈并以 RangeError 崩溃。在解析器入口处显式计数,
67
+ * 超限时抛出**可恢复**的 DiagnosticError,让 decl-parser 的恢复逻辑捕获
68
+ * 并降级为诊断信息,而不是让整个进程崩溃。
69
+ *
70
+ * 选值说明:每层括号嵌套会走完整条表达式优先级链(parseExpr→parseOr→
71
+ * parseAnd→parseNot→parseComparison→parseAddition→parseMultiplication→
72
+ * parsePrimary,外加 peek/assignSpan 等辅助帧),约 10+ 原生栈帧/层。Node
73
+ * 默认原生栈约 ~12500 个简单帧,故每层成本越高,安全上限越低。取 300 在
74
+ * “远高于任何合法源码真实嵌套需求”与“远低于原生溢出阈值”之间留足余量。
75
+ */
76
+ export declare const MAX_RECURSION_DEPTH = 300;
52
77
  /**
53
78
  * 将关键字短语拆分为单词数组
54
79
  * @param phrase 关键字短语(如 "module is")
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/parser/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAKlD;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,iBAAiB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B,gBAAgB,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAClC,eAAe,EAAE,KAAK,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;IACxC,KAAK,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IACvE,+BAA+B;IAC/B,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,iCAAiC;IACjC,UAAU,IAAI,IAAI,CAAC;IACnB,6CAA6C;IAC7C,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAClC,iCAAiC;IACjC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC7B,kCAAkC;IAClC,IAAI,IAAI,KAAK,CAAC;IACd,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IACrD,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC;IAChD,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/B,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC;IAChD,QAAQ,IAAI,KAAK,CAAC;IAClB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACjC,aAAa,IAAI,IAAI,CAAC;IACtB,eAAe,IAAI,IAAI,CAAC;IACxB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACpC,eAAe,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC;IACnC,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;IAChD,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5D,gBAAgB;IAChB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,gBAAgB;IAChB,kBAAkB,IAAI,IAAI,CAAC;IAC3B,sBAAsB;IACtB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;CAC5C;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAEhD;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAUzE;AAID,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,aAAa,CA0K9F"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/parser/context.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,21 @@ import { TokenKind } from '../frontend/tokens.js';
2
2
  import { ConfigService } from '../config/config-service.js';
3
3
  import { Diagnostics } from '../diagnostics/diagnostics.js';
4
4
  import { createLogger } from '../utils/logger.js';
5
+ /**
6
+ * 递归下降解析器允许的最大嵌套深度。
7
+ *
8
+ * 单线程 JS 无法对深递归做真正的超时;恶意/病态输入(如 5000 个嵌套
9
+ * 括号)会撑爆原生调用栈并以 RangeError 崩溃。在解析器入口处显式计数,
10
+ * 超限时抛出**可恢复**的 DiagnosticError,让 decl-parser 的恢复逻辑捕获
11
+ * 并降级为诊断信息,而不是让整个进程崩溃。
12
+ *
13
+ * 选值说明:每层括号嵌套会走完整条表达式优先级链(parseExpr→parseOr→
14
+ * parseAnd→parseNot→parseComparison→parseAddition→parseMultiplication→
15
+ * parsePrimary,外加 peek/assignSpan 等辅助帧),约 10+ 原生栈帧/层。Node
16
+ * 默认原生栈约 ~12500 个简单帧,故每层成本越高,安全上限越低。取 300 在
17
+ * “远高于任何合法源码真实嵌套需求”与“远低于原生溢出阈值”之间留足余量。
18
+ */
19
+ export const MAX_RECURSION_DEPTH = 300;
5
20
  /**
6
21
  * 将关键字短语拆分为单词数组
7
22
  * @param phrase 关键字短语(如 "module is")
@@ -203,6 +218,19 @@ export function createParserContext(tokens, lexicon) {
203
218
  inCompoundContext: (opener) => {
204
219
  return compoundContextStack.includes(opener);
205
220
  },
221
+ recursionDepth: 0,
222
+ enterRecursion: () => {
223
+ ctx.recursionDepth++;
224
+ if (ctx.recursionDepth > MAX_RECURSION_DEPTH) {
225
+ // Throw a recoverable DiagnosticError (NOT a raw RangeError) so the
226
+ // decl-parser recovery loop can catch it and continue.
227
+ Diagnostics.nestingTooDeep(MAX_RECURSION_DEPTH, ctx.peek().start).throw();
228
+ }
229
+ },
230
+ exitRecursion: () => {
231
+ if (ctx.recursionDepth > 0)
232
+ ctx.recursionDepth--;
233
+ },
206
234
  };
207
235
  return ctx;
208
236
  }
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/parser/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/parser/context.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"decl-parser.d.ts","sourceRoot":"","sources":["../../../src/parser/decl-parser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAyC,WAAW,EAAE,KAAK,EAAQ,MAAM,aAAa,CAAC;AAC/G,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAsIrD;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,KAAK,KAAK,EAC1C,SAAS,EAAE,MAAM,IAAI,EACrB,cAAc,EAAE,MAAM,MAAM,GAC3B,WAAW,CA4Bb;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,KAAK,KAAK,EAC1C,SAAS,EAAE,MAAM,IAAI,EACrB,cAAc,EAAE,MAAM,MAAM,GAC3B,WAAW,CAiCb;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,KAAK,KAAK,EAC1C,aAAa,EAAE,MAAM,IAAI,EACzB,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,EAChD,aAAa,EAAE,MAAM,IAAI,EACzB,UAAU,EAAE,MAAM,MAAM,EACxB,WAAW,GAAE,SAAS,UAAU,EAAO,EACvC,YAAY,CAAC,EAAE,KAAK,GACnB,WAAW,CAiRb;AA2CD,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,WAAW,GACjB;IAAE,KAAK,EAAE,WAAW,EAAE,CAAC;IAAC,WAAW,EAAE,UAAU,EAAE,CAAA;CAAE,CA0GrD"}
1
+ {"version":3,"file":"decl-parser.d.ts","sourceRoot":"","sources":["../../../src/parser/decl-parser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAyC,WAAW,EAAE,KAAK,EAAQ,MAAM,aAAa,CAAC;AAC/G,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAsIrD;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,KAAK,KAAK,EAC1C,SAAS,EAAE,MAAM,IAAI,EACrB,cAAc,EAAE,MAAM,MAAM,GAC3B,WAAW,CA4Bb;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,KAAK,KAAK,EAC1C,SAAS,EAAE,MAAM,IAAI,EACrB,cAAc,EAAE,MAAM,MAAM,GAC3B,WAAW,CAiCb;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,KAAK,KAAK,EAC1C,aAAa,EAAE,MAAM,IAAI,EACzB,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,EAChD,aAAa,EAAE,MAAM,IAAI,EACzB,UAAU,EAAE,MAAM,MAAM,EACxB,WAAW,GAAE,SAAS,UAAU,EAAO,EACvC,YAAY,CAAC,EAAE,KAAK,GACnB,WAAW,CA4Rb;AA2CD,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,WAAW,GACjB;IAAE,KAAK,EAAE,WAAW,EAAE,CAAC;IAAC,WAAW,EAAE,UAAU,EAAE,CAAA;CAAE,CA0GrD"}
@@ -288,25 +288,37 @@ export function parseFuncDecl(ctx, error, expectCommaOr, expectKeyword, expectNe
288
288
  expectCommaOr();
289
289
  else if (ctx.at(TokenKind.COMMA))
290
290
  ctx.next();
291
- // 期望 'produce' 和返回类型
291
+ // `produce` 子句可选(与 core grammar `(PRODUCE annotatedType?)?` 对齐,ADR 0019 G0):
292
+ // - `produce T`:显式返回类型
293
+ // - `produce`(无类型)/ `produce .` / `produce :`:返回类型推断
294
+ // - 完全省略 produce(`Rule greet given name:` 直接接块/`.`/`It performs`):同样推断
295
+ // 省略 produce 时直接走下方场景分派(COLON 块 / DOT 无体 / It performs)。
292
296
  skipLayoutTrivia();
293
297
  const produceTok = ctx.peek();
294
- expectKeyword(KW.PRODUCE, "Expected 'produce' and return type");
295
- skipLayoutTrivia();
296
298
  let retType;
297
299
  let retTypeInferred = false;
298
- if (ctx.at(TokenKind.COLON) ||
299
- ctx.at(TokenKind.DOT) ||
300
- ctx.isKeyword(KW.WITH) ||
301
- ctx.isKeywordSeq(KW.PERFORMS) ||
302
- (tokLowerAt(ctx, ctx.index) === 'it' && tokLowerAt(ctx, ctx.index + 1) === 'performs')) {
300
+ if (ctx.isKeyword(KW.PRODUCE)) {
301
+ ctx.nextWords(kwParts(KW.PRODUCE));
302
+ skipLayoutTrivia();
303
+ if (ctx.at(TokenKind.COLON) ||
304
+ ctx.at(TokenKind.DOT) ||
305
+ ctx.isKeyword(KW.WITH) ||
306
+ ctx.isKeywordSeq(KW.PERFORMS) ||
307
+ (tokLowerAt(ctx, ctx.index) === 'it' && tokLowerAt(ctx, ctx.index + 1) === 'performs')) {
308
+ retTypeInferred = true;
309
+ retType = Node.TypeName('Unknown');
310
+ assignSpan(retType, spanFromTokens(produceTok, produceTok));
311
+ }
312
+ else {
313
+ retType = parseType(ctx, error);
314
+ }
315
+ }
316
+ else {
317
+ // 完全省略 produce:返回类型推断,直接进入函数体/效果场景分派。
303
318
  retTypeInferred = true;
304
319
  retType = Node.TypeName('Unknown');
305
320
  assignSpan(retType, spanFromTokens(produceTok, produceTok));
306
321
  }
307
- else {
308
- retType = parseType(ctx, error);
309
- }
310
322
  let effects = [];
311
323
  // 允许在返回类型后声明效果:produce Result ... with IO.
312
324
  if (ctx.isKeyword(KW.WITH)) {
@@ -1 +1 @@
1
- {"version":3,"file":"decl-parser.js","sourceRoot":"","sources":["../../../src/parser/decl-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decl-parser.js","sourceRoot":"","sources":["../../../src/parser/decl-parser.ts"],"names":[],"mappings":"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"}
@@ -7,12 +7,6 @@ import type { ParserContext } from './context.js';
7
7
  * @returns Block 节点
8
8
  */
9
9
  export declare function parseBlock(ctx: ParserContext, error: (msg: string) => never): Block;
10
- /**
11
- * 解析语句
12
- * @param ctx Parser 上下文
13
- * @param error 错误报告函数
14
- * @returns Statement 节点
15
- */
16
10
  export declare function parseStatement(ctx: ParserContext, error: (msg: string) => never): Statement;
17
11
  /**
18
12
  * 解析表达式
@@ -1 +1 @@
1
- {"version":3,"file":"expr-stmt-parser.d.ts","sourceRoot":"","sources":["../../../src/parser/expr-stmt-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EAGL,UAAU,EACV,SAAS,EACT,OAAO,EAEP,SAAS,EAGT,IAAI,EAIL,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAsDlD;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,KAAK,GAC5B,KAAK,CAkDP;AAiCD;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,KAAK,GAC5B,SAAS,CA0LX;AA2ND;;;;;GAKG;AACH,wBAAgB,SAAS,CACvB,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,KAAK,GAC5B,UAAU,CAEZ;AAmoBD;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,KAAK,GAC5B,UAAU,EAAE,CAcd;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,KAAK,GAC5B,OAAO,CAiDT;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,aAAa,EAAE,KAAK,KAAK,KAAK,GAC/D,SAAS,EAAE,CAsIb;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI,CA2BzD"}
1
+ {"version":3,"file":"expr-stmt-parser.d.ts","sourceRoot":"","sources":["../../../src/parser/expr-stmt-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EAGL,UAAU,EAEV,SAAS,EACT,OAAO,EAEP,SAAS,EAGT,IAAI,EAIL,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAsDlD;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,KAAK,GAC5B,KAAK,CAkDP;AAqHD,wBAAgB,cAAc,CAC5B,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,KAAK,GAC5B,SAAS,CAkMX;AA2ND;;;;;GAKG;AACH,wBAAgB,SAAS,CACvB,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,KAAK,GAC5B,UAAU,CAiBZ;AAmqBD;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,KAAK,GAC5B,UAAU,EAAE,CAcd;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,KAAK,GAC5B,OAAO,CAiDT;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,aAAa,EAAE,KAAK,KAAK,KAAK,GAC/D,SAAS,EAAE,CAsIb;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI,CA2BzD"}
@@ -128,6 +128,83 @@ function expectPeriodEndOrLine(ctx, error) {
128
128
  * @param error 错误报告函数
129
129
  * @returns Statement 节点
130
130
  */
131
+ /**
132
+ * ADR 0019 G2a:探测 if 条件之后是否跟内联 `then`(可隔着换行+缩进,文档里
133
+ * `if cond \n then return ...`)。不消费 token——只前瞻。block-if 走 `:`/NEWLINE
134
+ * 进缩进块,无 then,故 then 是两者的消歧点。
135
+ */
136
+ function peekInlineThen(ctx) {
137
+ let k = ctx.index;
138
+ // 跳过可选的 NEWLINE / INDENT(then 换行缩进场景)。
139
+ while (ctx.tokens[k] && (ctx.tokens[k].kind === TokenKind.NEWLINE || ctx.tokens[k].kind === TokenKind.INDENT)) {
140
+ k++;
141
+ }
142
+ const tok = ctx.tokens[k];
143
+ if (!tok)
144
+ return false;
145
+ return (tok.value || '').toLowerCase() === KW.THEN;
146
+ }
147
+ /** 跳过 then 前的可选 NEWLINE/INDENT 布局 token。 */
148
+ function skipInlineThenLayout(ctx) {
149
+ while (ctx.at(TokenKind.NEWLINE) || ctx.at(TokenKind.INDENT))
150
+ ctx.next();
151
+ }
152
+ /** 跳过 else 前的可选 NEWLINE/DEDENT 布局 token(then 分支缩进产生的 DEDENT)。 */
153
+ function skipInlineElseLayout(ctx) {
154
+ while (ctx.at(TokenKind.NEWLINE) || ctx.at(TokenKind.DEDENT))
155
+ ctx.next();
156
+ }
157
+ /**
158
+ * ADR 0019 G2a:解析内联 if 的 then/else 链,降级为与块式 if 相同的 {@link AST.If}
159
+ * ——单语句 return 包成单元素 Block,else-if 链右递归成嵌套 If 的 else 分支。
160
+ * 调用方已消费 `if` 和 cond,此处从 then 前布局开始。
161
+ */
162
+ function parseInlineIf(ctx, error, cond) {
163
+ skipInlineThenLayout(ctx);
164
+ if (!ctx.isKeyword(KW.THEN))
165
+ error("Expected 'then' in inline if");
166
+ ctx.nextWord();
167
+ // then 分支:单个 return(内联,不带句点;句点由整条 inline-if 末尾的 return 承担)。
168
+ if (!ctx.isKeyword(KW.RETURN))
169
+ error("Expected 'return' after 'then'");
170
+ const thenRetTok = ctx.peek();
171
+ ctx.nextWord();
172
+ const thenExpr = parseExpr(ctx, error);
173
+ const thenRet = Node.Return(thenExpr);
174
+ assignSpan(thenRet, spanFromTokens(thenRetTok, lastConsumedToken(ctx)));
175
+ const thenBlock = Node.Block([thenRet]);
176
+ // else 分支:可选。`else if ...`(嵌套)或 `else return X.`(末尾带句点)。
177
+ skipInlineElseLayout(ctx);
178
+ let elseBlock = null;
179
+ if (ctx.isKeyword(KW.OTHERWISE) || ctx.isKeyword(KW.ELSE)) {
180
+ ctx.nextWord();
181
+ if (ctx.isKeyword(KW.IF)) {
182
+ // else if:消费 `if`,递归。(Codex 审查:仅认 `else if`,不靠 peekInlineThen
183
+ // 兜底——否则非法 `else then ...` 会走 else-if 路径产生绕弯诊断。)
184
+ ctx.nextWord();
185
+ const nestedCond = parseExpr(ctx, error);
186
+ const nested = parseInlineIf(ctx, error, nestedCond);
187
+ elseBlock = Node.Block([nested]);
188
+ }
189
+ else {
190
+ // else return X.(末尾 return,带句点)。
191
+ if (!ctx.isKeyword(KW.RETURN))
192
+ error("Expected 'return' or 'if' after 'else'");
193
+ const elseRetTok = ctx.peek();
194
+ ctx.nextWord();
195
+ const elseExpr = parseExpr(ctx, error);
196
+ expectPeriodEnd(ctx, error);
197
+ const elseRet = Node.Return(elseExpr);
198
+ assignSpan(elseRet, spanFromTokens(elseRetTok, lastConsumedToken(ctx)));
199
+ elseBlock = Node.Block([elseRet]);
200
+ }
201
+ }
202
+ else {
203
+ // 无 else:then 分支的 return 必须带句点收尾。
204
+ expectPeriodEnd(ctx, error);
205
+ }
206
+ return Node.If(cond, thenBlock, elseBlock);
207
+ }
131
208
  export function parseStatement(ctx, error) {
132
209
  if (ctx.isKeyword(KW.LET)) {
133
210
  const letTok = ctx.peek();
@@ -227,6 +304,13 @@ export function parseStatement(ctx, error) {
227
304
  const ifTok = ctx.peek();
228
305
  ctx.nextWord();
229
306
  const cond = parseExpr(ctx, error);
307
+ // ADR 0019 G2a:内联 if(`if cond then return X else return Y`)。在 cond 之后、
308
+ // 块式分隔符之前探测 then——then 前可有换行+缩进(文档里 `if ... \n then ...`)。
309
+ if (peekInlineThen(ctx)) {
310
+ const nd = parseInlineIf(ctx, error, cond);
311
+ assignSpan(nd, spanFromTokens(ifTok, lastConsumedToken(ctx)));
312
+ return nd;
313
+ }
230
314
  // 可选逗号或冒号分隔(兼容 Java ANTLR 语法 If condition:)
231
315
  if (ctx.at(TokenKind.COMMA))
232
316
  ctx.next();
@@ -235,7 +319,8 @@ export function parseStatement(ctx, error) {
235
319
  expectNewline(ctx, error);
236
320
  const thenBlock = parseBlock(ctx, error);
237
321
  let elseBlock = null;
238
- if (ctx.isKeyword(KW.OTHERWISE)) {
322
+ // else 与 otherwise 都接受(与 core ELSE: Else|Otherwise 对齐)。
323
+ if (ctx.isKeyword(KW.OTHERWISE) || ctx.isKeyword(KW.ELSE)) {
239
324
  ctx.nextWord();
240
325
  if (ctx.at(TokenKind.COMMA))
241
326
  ctx.next();
@@ -553,7 +638,52 @@ function parseCaseBody(ctx, error) {
553
638
  * @returns Expression 节点
554
639
  */
555
640
  export function parseExpr(ctx, error) {
556
- return parseOr(ctx, error);
641
+ // Enforce a max nesting depth. Every parenthesized sub-expression re-enters
642
+ // parseExpr, so counting here bounds the recursive-descent stack and turns a
643
+ // pathological input (e.g. 5000 nested `(`) into a recoverable DiagnosticError
644
+ // instead of a native RangeError / stack overflow.
645
+ ctx.enterRecursion();
646
+ try {
647
+ // ADR 0019 G2b:表达式级 if(`if cond then a else b`)锚在表达式入口,与 Java grammar
648
+ // `expr : ifExpr | orExpr` 对齐。cond 用 parseOr(不含 if-expr,避免 `if if ...` 歧义),
649
+ // then/else 用 parseExpr → 支持嵌套。else 必需(表达式两方向都要有值)。
650
+ if (ctx.isKeyword(KW.IF)) {
651
+ return parseIfExpr(ctx, error);
652
+ }
653
+ return parseOr(ctx, error);
654
+ }
655
+ finally {
656
+ ctx.exitRecursion();
657
+ }
658
+ }
659
+ /**
660
+ * 表达式级 if(ADR 0019 G2b):`IF cond THEN thenE ELSE elseE`,产出 IfExpr 表达式。
661
+ * 调用方已确认当前 token 是 IF。then 前用 G2a 的 skipInlineThenLayout 吸收可选换行/缩进,
662
+ * 保持与文档 `if ... \n then ...` 写法一致。
663
+ */
664
+ function parseIfExpr(ctx, error) {
665
+ const startTok = ctx.peek();
666
+ ctx.nextWord(); // 消费 IF
667
+ const cond = parseOr(ctx, error);
668
+ skipInlineThenLayout(ctx);
669
+ if (!ctx.isKeyword(KW.THEN))
670
+ error("Expected 'then' in if-expression");
671
+ ctx.nextWord(); // 消费 THEN
672
+ const thenE = parseExpr(ctx, error);
673
+ skipInlineElseLayout(ctx);
674
+ if (!ctx.isKeyword(KW.ELSE) && !ctx.isKeyword(KW.OTHERWISE)) {
675
+ error("Expected 'else' in if-expression (else is mandatory for expression-level if)");
676
+ }
677
+ ctx.nextWord(); // 消费 ELSE / OTHERWISE
678
+ const elseE = parseExpr(ctx, error);
679
+ const node = {
680
+ kind: 'IfExpr',
681
+ cond,
682
+ thenE,
683
+ elseE,
684
+ span: spanFromTokens(startTok, lastConsumedToken(ctx)),
685
+ };
686
+ return node;
557
687
  }
558
688
  /**
559
689
  * `and` 在多个 statement-level 上下文也用作列表分隔符(Construct fields、