semantifold 0.2.0 → 0.3.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 (356) hide show
  1. package/README.md +37 -12
  2. package/build/index.js +2 -2
  3. package/build/src/acceptance.d.ts +10 -0
  4. package/build/src/acceptance.d.ts.map +1 -1
  5. package/build/src/acceptance.js +24 -5
  6. package/build/src/backends/c-runtime.d.ts +3 -0
  7. package/build/src/backends/c-runtime.d.ts.map +1 -0
  8. package/build/src/backends/c-runtime.js +151 -0
  9. package/build/src/backends/c-validation.d.ts +12 -0
  10. package/build/src/backends/c-validation.d.ts.map +1 -0
  11. package/build/src/backends/c-validation.js +85 -0
  12. package/build/src/backends/c.d.ts +31 -0
  13. package/build/src/backends/c.d.ts.map +1 -0
  14. package/build/src/backends/c.js +308 -0
  15. package/build/src/backends/cpp-runtime.d.ts +3 -0
  16. package/build/src/backends/cpp-runtime.d.ts.map +1 -0
  17. package/build/src/backends/cpp-runtime.js +99 -0
  18. package/build/src/backends/cpp-validation.d.ts +9 -0
  19. package/build/src/backends/cpp-validation.d.ts.map +1 -0
  20. package/build/src/backends/cpp-validation.js +74 -0
  21. package/build/src/backends/cpp.d.ts +16 -0
  22. package/build/src/backends/cpp.d.ts.map +1 -0
  23. package/build/src/backends/cpp.js +285 -0
  24. package/build/src/backends/csharp.d.ts +20 -0
  25. package/build/src/backends/csharp.d.ts.map +1 -0
  26. package/build/src/backends/csharp.js +259 -0
  27. package/build/src/backends/go.d.ts +20 -0
  28. package/build/src/backends/go.d.ts.map +1 -0
  29. package/build/src/backends/go.js +374 -0
  30. package/build/src/backends/identifiers.d.ts +12 -0
  31. package/build/src/backends/identifiers.d.ts.map +1 -1
  32. package/build/src/backends/identifiers.js +71 -2
  33. package/build/src/backends/index.d.ts.map +1 -1
  34. package/build/src/backends/index.js +9 -1
  35. package/build/src/backends/native-validation.d.ts +9 -0
  36. package/build/src/backends/native-validation.d.ts.map +1 -0
  37. package/build/src/backends/native-validation.js +59 -0
  38. package/build/src/backends/ordered-expressions.d.ts +74 -0
  39. package/build/src/backends/ordered-expressions.d.ts.map +1 -0
  40. package/build/src/backends/ordered-expressions.js +159 -0
  41. package/build/src/backends/scalars.d.ts.map +1 -1
  42. package/build/src/backends/scalars.js +7 -2
  43. package/build/src/backends/shared.d.ts.map +1 -1
  44. package/build/src/backends/shared.js +59 -14
  45. package/build/src/frontends/c-parser.d.ts +20 -0
  46. package/build/src/frontends/c-parser.d.ts.map +1 -0
  47. package/build/src/frontends/c-parser.js +14 -0
  48. package/build/src/frontends/c.d.ts +220 -0
  49. package/build/src/frontends/c.d.ts.map +1 -0
  50. package/build/src/frontends/c.js +750 -0
  51. package/build/src/frontends/cpp-parser.d.ts +11 -0
  52. package/build/src/frontends/cpp-parser.d.ts.map +1 -0
  53. package/build/src/frontends/cpp-parser.js +15 -0
  54. package/build/src/frontends/cpp.d.ts +227 -0
  55. package/build/src/frontends/cpp.d.ts.map +1 -0
  56. package/build/src/frontends/cpp.js +784 -0
  57. package/build/src/frontends/csharp.d.ts +14 -0
  58. package/build/src/frontends/csharp.d.ts.map +1 -0
  59. package/build/src/frontends/csharp.js +708 -0
  60. package/build/src/frontends/go.d.ts +15 -0
  61. package/build/src/frontends/go.d.ts.map +1 -0
  62. package/build/src/frontends/go.js +712 -0
  63. package/build/src/frontends/scalars.d.ts.map +1 -1
  64. package/build/src/frontends/scalars.js +16 -1
  65. package/build/src/language-registry.d.ts.map +1 -1
  66. package/build/src/language-registry.js +51 -2
  67. package/build/src/mapping.js +2 -2
  68. package/build/src/semantic/provenance.js +3 -3
  69. package/build/src/semantic/types.d.ts +4 -4
  70. package/build/src/semantic/types.d.ts.map +1 -1
  71. package/build/src/semantic/types.js +3 -3
  72. package/build/src/subprocess.d.ts +10 -1
  73. package/build/src/subprocess.d.ts.map +1 -1
  74. package/build/src/subprocess.js +29 -3
  75. package/build/src/toolchains.d.ts +24 -0
  76. package/build/src/toolchains.d.ts.map +1 -1
  77. package/build/src/toolchains.js +6 -2
  78. package/docs/architecture.md +20 -6
  79. package/docs/c.md +60 -0
  80. package/docs/cpp.md +61 -0
  81. package/docs/goals.md +4 -2
  82. package/docs/language-support.md +27 -8
  83. package/docs/parser-qualification.md +153 -4
  84. package/docs/plans/2026-09-05-standard-library-portability.md +46 -0
  85. package/docs/source-maps.md +11 -5
  86. package/docs/standard-library-portability.md +190 -0
  87. package/docs/testing.md +113 -4
  88. package/index.js +1 -1
  89. package/node_modules/node-addon-api/LICENSE.md +9 -0
  90. package/node_modules/node-addon-api/README.md +95 -0
  91. package/node_modules/node-addon-api/common.gypi +21 -0
  92. package/node_modules/node-addon-api/except.gypi +25 -0
  93. package/node_modules/node-addon-api/index.js +14 -0
  94. package/node_modules/node-addon-api/napi-inl.deprecated.h +186 -0
  95. package/node_modules/node-addon-api/napi-inl.h +7250 -0
  96. package/node_modules/node-addon-api/napi.h +3463 -0
  97. package/node_modules/node-addon-api/node_addon_api.gyp +42 -0
  98. package/node_modules/node-addon-api/node_api.gyp +9 -0
  99. package/node_modules/node-addon-api/noexcept.gypi +26 -0
  100. package/node_modules/node-addon-api/nothing.c +0 -0
  101. package/node_modules/node-addon-api/package-support.json +21 -0
  102. package/node_modules/node-addon-api/package.json +481 -0
  103. package/node_modules/node-addon-api/tools/README.md +73 -0
  104. package/node_modules/node-addon-api/tools/check-napi.js +99 -0
  105. package/node_modules/node-addon-api/tools/clang-format.js +71 -0
  106. package/node_modules/node-addon-api/tools/conversion.js +301 -0
  107. package/node_modules/node-gyp-build/LICENSE +21 -0
  108. package/node_modules/node-gyp-build/README.md +58 -0
  109. package/node_modules/node-gyp-build/SECURITY.md +5 -0
  110. package/node_modules/node-gyp-build/bin.js +84 -0
  111. package/node_modules/node-gyp-build/build-test.js +19 -0
  112. package/node_modules/node-gyp-build/index.js +6 -0
  113. package/node_modules/node-gyp-build/node-gyp-build.js +207 -0
  114. package/node_modules/node-gyp-build/optional.js +7 -0
  115. package/node_modules/node-gyp-build/package.json +43 -0
  116. package/node_modules/semantifold-tree-sitter-legacy-internal/LICENSE +15 -0
  117. package/node_modules/semantifold-tree-sitter-legacy-internal/README.md +7 -0
  118. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/LICENSE +21 -0
  119. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/README.md +90 -0
  120. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/binding.gyp +79 -0
  121. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/index.js +895 -0
  122. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/package.json +62 -0
  123. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/prebuilds/darwin-arm64/tree-sitter.node +0 -0
  124. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/prebuilds/darwin-x64/tree-sitter.node +0 -0
  125. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/prebuilds/linux-x64/tree-sitter.node +0 -0
  126. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/prebuilds/win32-x64/tree-sitter.node +0 -0
  127. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/addon_data.h +47 -0
  128. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/binding.cc +35 -0
  129. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/conversions.cc +140 -0
  130. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/conversions.h +22 -0
  131. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/language.cc +106 -0
  132. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/language.h +17 -0
  133. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/logger.cc +70 -0
  134. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/logger.h +19 -0
  135. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/lookaheaditerator.cc +122 -0
  136. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/lookaheaditerator.h +33 -0
  137. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/node.cc +1056 -0
  138. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/node.h +30 -0
  139. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/parser.cc +298 -0
  140. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/parser.h +35 -0
  141. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/query.cc +383 -0
  142. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/query.h +39 -0
  143. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/tree.cc +307 -0
  144. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/tree.h +45 -0
  145. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/tree_cursor.cc +213 -0
  146. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/tree_cursor.h +52 -0
  147. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/tree-sitter.d.ts +211 -0
  148. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/include/tree_sitter/api.h +1266 -0
  149. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/alloc.c +48 -0
  150. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/alloc.h +41 -0
  151. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/array.h +290 -0
  152. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/atomic.h +68 -0
  153. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/clock.h +146 -0
  154. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/error_costs.h +11 -0
  155. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/get_changed_ranges.c +501 -0
  156. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/get_changed_ranges.h +36 -0
  157. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/host.h +21 -0
  158. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/language.c +221 -0
  159. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/language.h +299 -0
  160. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/length.h +52 -0
  161. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lexer.c +419 -0
  162. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lexer.h +49 -0
  163. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lib.c +14 -0
  164. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/node.c +774 -0
  165. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/parser.c +2151 -0
  166. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/parser.h +230 -0
  167. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/point.h +62 -0
  168. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/query.c +4134 -0
  169. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/reduce_action.h +34 -0
  170. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/reusable_node.h +95 -0
  171. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/stack.c +899 -0
  172. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/stack.h +133 -0
  173. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/subtree.c +1060 -0
  174. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/subtree.h +382 -0
  175. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree.c +165 -0
  176. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree.h +31 -0
  177. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree_cursor.c +714 -0
  178. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree_cursor.h +48 -0
  179. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/ICU_SHA +1 -0
  180. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/LICENSE +414 -0
  181. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/README.md +29 -0
  182. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/ptypes.h +1 -0
  183. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/umachine.h +448 -0
  184. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/urename.h +1 -0
  185. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf.h +1 -0
  186. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf16.h +733 -0
  187. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf8.h +881 -0
  188. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode.h +50 -0
  189. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/stdlib-symbols.txt +23 -0
  190. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/stdlib.c +109 -0
  191. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/wasm-stdlib.h +1294 -0
  192. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm_store.c +1823 -0
  193. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm_store.h +31 -0
  194. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/LICENSE +21 -0
  195. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/README.md +18 -0
  196. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/binding.gyp +29 -0
  197. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/bindings/node/binding.cc +20 -0
  198. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/bindings/node/binding_test.js +9 -0
  199. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/bindings/node/index.d.ts +28 -0
  200. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/bindings/node/index.js +11 -0
  201. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/grammar.js +1470 -0
  202. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/package.json +60 -0
  203. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/prebuilds/darwin-arm64/tree-sitter-c.node +0 -0
  204. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/prebuilds/darwin-x64/tree-sitter-c.node +0 -0
  205. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/prebuilds/linux-arm64/tree-sitter-c.node +0 -0
  206. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/prebuilds/linux-x64/tree-sitter-c.node +0 -0
  207. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/prebuilds/win32-arm64/tree-sitter-c.node +0 -0
  208. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/prebuilds/win32-x64/tree-sitter-c.node +0 -0
  209. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/queries/highlights.scm +81 -0
  210. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/queries/tags.scm +9 -0
  211. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/src/grammar.json +9735 -0
  212. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/src/node-types.json +4614 -0
  213. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/src/parser.c +119615 -0
  214. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/src/tree_sitter/alloc.h +54 -0
  215. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/src/tree_sitter/array.h +290 -0
  216. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/src/tree_sitter/parser.h +266 -0
  217. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/tree-sitter-c.wasm +0 -0
  218. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/tree-sitter.json +43 -0
  219. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/LICENSE +21 -0
  220. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/README.md +22 -0
  221. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/binding.gyp +30 -0
  222. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/bindings/node/binding.cc +20 -0
  223. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/bindings/node/binding_test.js +9 -0
  224. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/bindings/node/index.d.ts +28 -0
  225. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/bindings/node/index.js +11 -0
  226. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/grammar.js +1436 -0
  227. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/package.json +61 -0
  228. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/prebuilds/darwin-arm64/tree-sitter-cpp.node +0 -0
  229. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/prebuilds/darwin-x64/tree-sitter-cpp.node +0 -0
  230. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/prebuilds/linux-arm64/tree-sitter-cpp.node +0 -0
  231. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/prebuilds/linux-x64/tree-sitter-cpp.node +0 -0
  232. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/prebuilds/win32-arm64/tree-sitter-cpp.node +0 -0
  233. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/prebuilds/win32-x64/tree-sitter-cpp.node +0 -0
  234. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/queries/highlights.scm +70 -0
  235. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/queries/injections.scm +3 -0
  236. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/queries/tags.scm +15 -0
  237. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/src/grammar.json +17084 -0
  238. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/src/node-types.json +7997 -0
  239. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/src/parser.c +530368 -0
  240. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/src/scanner.c +148 -0
  241. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/src/tree_sitter/alloc.h +54 -0
  242. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/src/tree_sitter/array.h +290 -0
  243. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/src/tree_sitter/parser.h +266 -0
  244. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/tree-sitter-cpp.wasm +0 -0
  245. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/tree-sitter.json +55 -0
  246. package/node_modules/semantifold-tree-sitter-legacy-internal/package.json +22 -0
  247. package/node_modules/semantifold-tree-sitter-legacy-internal/src/c.js +152 -0
  248. package/node_modules/tree-sitter/LICENSE +21 -0
  249. package/node_modules/tree-sitter/README.md +128 -0
  250. package/node_modules/tree-sitter/binding.gyp +88 -0
  251. package/node_modules/tree-sitter/index.js +950 -0
  252. package/node_modules/tree-sitter/package.json +76 -0
  253. package/node_modules/tree-sitter/prebuilds/darwin-arm64/tree-sitter.node +0 -0
  254. package/node_modules/tree-sitter/prebuilds/darwin-x64/tree-sitter.node +0 -0
  255. package/node_modules/tree-sitter/prebuilds/linux-arm64/tree-sitter.node +0 -0
  256. package/node_modules/tree-sitter/prebuilds/linux-x64/tree-sitter.node +0 -0
  257. package/node_modules/tree-sitter/prebuilds/win32-arm64/tree-sitter.node +0 -0
  258. package/node_modules/tree-sitter/prebuilds/win32-x64/tree-sitter.node +0 -0
  259. package/node_modules/tree-sitter/src/addon_data.h +47 -0
  260. package/node_modules/tree-sitter/src/binding.cc +35 -0
  261. package/node_modules/tree-sitter/src/conversions.cc +140 -0
  262. package/node_modules/tree-sitter/src/conversions.h +22 -0
  263. package/node_modules/tree-sitter/src/language.cc +105 -0
  264. package/node_modules/tree-sitter/src/language.h +17 -0
  265. package/node_modules/tree-sitter/src/logger.cc +70 -0
  266. package/node_modules/tree-sitter/src/logger.h +19 -0
  267. package/node_modules/tree-sitter/src/lookaheaditerator.cc +122 -0
  268. package/node_modules/tree-sitter/src/lookaheaditerator.h +33 -0
  269. package/node_modules/tree-sitter/src/node.cc +1088 -0
  270. package/node_modules/tree-sitter/src/node.h +30 -0
  271. package/node_modules/tree-sitter/src/parser.cc +332 -0
  272. package/node_modules/tree-sitter/src/parser.h +35 -0
  273. package/node_modules/tree-sitter/src/query.cc +425 -0
  274. package/node_modules/tree-sitter/src/query.h +40 -0
  275. package/node_modules/tree-sitter/src/tree.cc +316 -0
  276. package/node_modules/tree-sitter/src/tree.h +45 -0
  277. package/node_modules/tree-sitter/src/tree_cursor.cc +213 -0
  278. package/node_modules/tree-sitter/src/tree_cursor.h +52 -0
  279. package/node_modules/tree-sitter/tree-sitter.d.ts +1083 -0
  280. package/node_modules/tree-sitter/vendor/tree-sitter/lib/include/tree_sitter/api.h +1478 -0
  281. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/alloc.c +48 -0
  282. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/alloc.h +41 -0
  283. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/array.h +291 -0
  284. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/atomic.h +68 -0
  285. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/clock.h +146 -0
  286. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/error_costs.h +11 -0
  287. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/get_changed_ranges.c +523 -0
  288. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/get_changed_ranges.h +36 -0
  289. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/host.h +21 -0
  290. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/language.c +293 -0
  291. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/language.h +293 -0
  292. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/length.h +52 -0
  293. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lexer.c +483 -0
  294. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lexer.h +54 -0
  295. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lib.c +12 -0
  296. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/node.c +875 -0
  297. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/parser.c +2297 -0
  298. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/parser.h +286 -0
  299. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/point.h +48 -0
  300. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/portable/endian.h +241 -0
  301. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/query.c +4347 -0
  302. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/reduce_action.h +34 -0
  303. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/reusable_node.h +95 -0
  304. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/stack.c +912 -0
  305. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/stack.h +133 -0
  306. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/subtree.c +1034 -0
  307. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/subtree.h +399 -0
  308. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree.c +170 -0
  309. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree.h +31 -0
  310. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree_cursor.c +716 -0
  311. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree_cursor.h +48 -0
  312. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/ts_assert.h +11 -0
  313. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/ICU_SHA +1 -0
  314. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/LICENSE +414 -0
  315. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/README.md +29 -0
  316. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/ptypes.h +1 -0
  317. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/umachine.h +448 -0
  318. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/urename.h +1 -0
  319. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf.h +1 -0
  320. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf16.h +733 -0
  321. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf8.h +881 -0
  322. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode.h +75 -0
  323. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/stdlib-symbols.txt +24 -0
  324. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/stdlib.c +137 -0
  325. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/wasm-stdlib.h +1314 -0
  326. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm_store.c +1937 -0
  327. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm_store.h +31 -0
  328. package/package.json +21 -5
  329. package/src/acceptance.js +25 -4
  330. package/src/backends/c-runtime.js +151 -0
  331. package/src/backends/c-validation.js +83 -0
  332. package/src/backends/c.js +308 -0
  333. package/src/backends/cpp-runtime.js +99 -0
  334. package/src/backends/cpp-validation.js +70 -0
  335. package/src/backends/cpp.js +285 -0
  336. package/src/backends/csharp.js +270 -0
  337. package/src/backends/go.js +383 -0
  338. package/src/backends/identifiers.js +72 -1
  339. package/src/backends/index.js +7 -0
  340. package/src/backends/native-validation.js +64 -0
  341. package/src/backends/ordered-expressions.js +161 -0
  342. package/src/backends/scalars.js +7 -1
  343. package/src/backends/shared.js +56 -12
  344. package/src/frontends/c-parser.js +17 -0
  345. package/src/frontends/c.js +780 -0
  346. package/src/frontends/cpp-parser.js +18 -0
  347. package/src/frontends/cpp.js +816 -0
  348. package/src/frontends/csharp.js +759 -0
  349. package/src/frontends/go.js +770 -0
  350. package/src/frontends/scalars.js +15 -0
  351. package/src/language-registry.js +52 -1
  352. package/src/mapping.js +1 -1
  353. package/src/semantic/provenance.js +2 -2
  354. package/src/semantic/types.js +2 -2
  355. package/src/subprocess.js +31 -2
  356. package/src/toolchains.js +5 -1
@@ -0,0 +1,151 @@
1
+ // @ts-check
2
+ /** Canonical C17 support header; native ownership never enters semantic IR. */
3
+ export const cRuntimeHeader = `#ifndef SEMANTIFOLD_RUNTIME_H
4
+ #define SEMANTIFOLD_RUNTIME_H
5
+
6
+ #include <stdbool.h>
7
+ #include <stddef.h>
8
+ #include <stdint.h>
9
+ #include <limits.h>
10
+ #include <stdio.h>
11
+ #include <stdlib.h>
12
+ #include <string.h>
13
+
14
+ _Static_assert(CHAR_BIT == 8, "Semantifold requires eight-bit bytes");
15
+ _Static_assert(sizeof(int64_t) == 8, "Semantifold requires exact int64_t");
16
+ _Static_assert(sizeof(size_t) == 8 && PTRDIFF_MAX == INT64_MAX, "Semantifold requires the qualified 64-bit ABI");
17
+
18
+ typedef struct {
19
+ const unsigned char *data;
20
+ size_t length;
21
+ } SemantifoldString;
22
+
23
+ #define SEMANTIFOLD_STRING(literal) ((SemantifoldString){(const unsigned char *)(literal), sizeof(literal) - 1})
24
+
25
+ typedef struct SemantifoldAllocation {
26
+ struct SemantifoldAllocation *next;
27
+ unsigned char data[];
28
+ } SemantifoldAllocation;
29
+
30
+ _Static_assert(sizeof(SemantifoldAllocation) == 8, "Semantifold requires the qualified arena metadata size");
31
+
32
+ static SemantifoldAllocation *semantifold_arena = NULL;
33
+ static size_t semantifold_arena_bytes = 0;
34
+
35
+ static inline void semantifold_cleanup(void) {
36
+ while (semantifold_arena != NULL) {
37
+ SemantifoldAllocation *allocation = semantifold_arena;
38
+ semantifold_arena = allocation->next;
39
+ free(allocation);
40
+ }
41
+ semantifold_arena_bytes = 0;
42
+ }
43
+
44
+ _Noreturn static inline void semantifold_fatal(const char *message, size_t length) {
45
+ semantifold_cleanup();
46
+ (void)fwrite(message, 1, length, stderr);
47
+ exit(70);
48
+ }
49
+
50
+ static inline int64_t semantifold_integer_add(int64_t left, int64_t right) {
51
+ int64_t result;
52
+ if (__builtin_add_overflow(left, right, &result)) {
53
+ semantifold_fatal("semantifold: integer overflow\\n", sizeof("semantifold: integer overflow\\n") - 1);
54
+ }
55
+ return result;
56
+ }
57
+
58
+ static inline int64_t semantifold_integer_subtract(int64_t left, int64_t right) {
59
+ int64_t result;
60
+ if (__builtin_sub_overflow(left, right, &result)) {
61
+ semantifold_fatal("semantifold: integer overflow\\n", sizeof("semantifold: integer overflow\\n") - 1);
62
+ }
63
+ return result;
64
+ }
65
+
66
+ static inline int64_t semantifold_integer_multiply(int64_t left, int64_t right) {
67
+ int64_t result;
68
+ if (__builtin_mul_overflow(left, right, &result)) {
69
+ semantifold_fatal("semantifold: integer overflow\\n", sizeof("semantifold: integer overflow\\n") - 1);
70
+ }
71
+ return result;
72
+ }
73
+
74
+ static inline int64_t semantifold_integer_negate(int64_t value) {
75
+ return semantifold_integer_subtract(INT64_C(0), value);
76
+ }
77
+
78
+ static inline size_t semantifold_allocation_size(size_t left, size_t right) {
79
+ const size_t maximum = (size_t)PTRDIFF_MAX;
80
+ if (left > maximum || right > maximum - left ||
81
+ left + right > maximum - sizeof(SemantifoldAllocation)) {
82
+ semantifold_fatal("semantifold: allocation size\\n", sizeof("semantifold: allocation size\\n") - 1);
83
+ }
84
+ const size_t size = sizeof(SemantifoldAllocation) + left + right;
85
+ if (semantifold_arena_bytes > maximum - size) {
86
+ semantifold_fatal("semantifold: allocation size\\n", sizeof("semantifold: allocation size\\n") - 1);
87
+ }
88
+ return size;
89
+ }
90
+
91
+ static inline SemantifoldString semantifold_string_concat(SemantifoldString left, SemantifoldString right) {
92
+ const size_t size = semantifold_allocation_size(left.length, right.length);
93
+ SemantifoldAllocation *allocation = malloc(size);
94
+ if (allocation == NULL) {
95
+ semantifold_fatal("semantifold: allocation failure\\n", sizeof("semantifold: allocation failure\\n") - 1);
96
+ }
97
+ allocation->next = semantifold_arena;
98
+ semantifold_arena = allocation;
99
+ semantifold_arena_bytes += size;
100
+ if (left.length != 0) (void)memcpy(allocation->data, left.data, left.length);
101
+ if (right.length != 0) (void)memcpy(allocation->data + left.length, right.data, right.length);
102
+ return (SemantifoldString){allocation->data, left.length + right.length};
103
+ }
104
+
105
+ static inline bool semantifold_string_equal(SemantifoldString left, SemantifoldString right) {
106
+ return left.length == right.length && (left.length == 0 || memcmp(left.data, right.data, left.length) == 0);
107
+ }
108
+
109
+ static inline bool semantifold_string_not_equal(SemantifoldString left, SemantifoldString right) {
110
+ return !semantifold_string_equal(left, right);
111
+ }
112
+
113
+ static inline void semantifold_write(const unsigned char *data, size_t length) {
114
+ if (length != 0 && fwrite(data, 1, length, stdout) != length) {
115
+ semantifold_fatal("semantifold: output failure\\n", sizeof("semantifold: output failure\\n") - 1);
116
+ }
117
+ }
118
+
119
+ static inline void semantifold_newline(void) {
120
+ semantifold_write((const unsigned char *)"\\n", 1);
121
+ if (fflush(stdout) != 0) semantifold_fatal("semantifold: output failure\\n", sizeof("semantifold: output failure\\n") - 1);
122
+ }
123
+
124
+ static inline void semantifold_print_string(SemantifoldString value) {
125
+ semantifold_write(value.data, value.length);
126
+ semantifold_newline();
127
+ }
128
+
129
+ static inline void semantifold_print_boolean(bool value) {
130
+ if (value) semantifold_write((const unsigned char *)"true", 4);
131
+ else semantifold_write((const unsigned char *)"false", 5);
132
+ semantifold_newline();
133
+ }
134
+
135
+ static inline void semantifold_print_integer(int64_t value) {
136
+ unsigned char digits[20];
137
+ size_t position = sizeof(digits);
138
+ uint64_t magnitude = (uint64_t)value;
139
+ if (value < 0) magnitude = UINT64_C(0) - magnitude;
140
+ do {
141
+ digits[--position] = (unsigned char)(UINT64_C(48) + magnitude % UINT64_C(10));
142
+ magnitude /= UINT64_C(10);
143
+ } while (magnitude != 0);
144
+ if (value < 0) digits[--position] = (unsigned char)45;
145
+ semantifold_write(digits + position, sizeof(digits) - position);
146
+ semantifold_newline();
147
+ }
148
+
149
+ #endif
150
+ `;
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYy1ydW50aW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JhY2tlbmRzL2MtcnVudGltZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosK0VBQStFO0FBQy9FLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBbUo3QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbi8qKiBDYW5vbmljYWwgQzE3IHN1cHBvcnQgaGVhZGVyOyBuYXRpdmUgb3duZXJzaGlwIG5ldmVyIGVudGVycyBzZW1hbnRpYyBJUi4gKi9cbmV4cG9ydCBjb25zdCBjUnVudGltZUhlYWRlciA9IGAjaWZuZGVmIFNFTUFOVElGT0xEX1JVTlRJTUVfSFxuI2RlZmluZSBTRU1BTlRJRk9MRF9SVU5USU1FX0hcblxuI2luY2x1ZGUgPHN0ZGJvb2wuaD5cbiNpbmNsdWRlIDxzdGRkZWYuaD5cbiNpbmNsdWRlIDxzdGRpbnQuaD5cbiNpbmNsdWRlIDxsaW1pdHMuaD5cbiNpbmNsdWRlIDxzdGRpby5oPlxuI2luY2x1ZGUgPHN0ZGxpYi5oPlxuI2luY2x1ZGUgPHN0cmluZy5oPlxuXG5fU3RhdGljX2Fzc2VydChDSEFSX0JJVCA9PSA4LCBcIlNlbWFudGlmb2xkIHJlcXVpcmVzIGVpZ2h0LWJpdCBieXRlc1wiKTtcbl9TdGF0aWNfYXNzZXJ0KHNpemVvZihpbnQ2NF90KSA9PSA4LCBcIlNlbWFudGlmb2xkIHJlcXVpcmVzIGV4YWN0IGludDY0X3RcIik7XG5fU3RhdGljX2Fzc2VydChzaXplb2Yoc2l6ZV90KSA9PSA4ICYmIFBUUkRJRkZfTUFYID09IElOVDY0X01BWCwgXCJTZW1hbnRpZm9sZCByZXF1aXJlcyB0aGUgcXVhbGlmaWVkIDY0LWJpdCBBQklcIik7XG5cbnR5cGVkZWYgc3RydWN0IHtcbiAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhO1xuICAgIHNpemVfdCBsZW5ndGg7XG59IFNlbWFudGlmb2xkU3RyaW5nO1xuXG4jZGVmaW5lIFNFTUFOVElGT0xEX1NUUklORyhsaXRlcmFsKSAoKFNlbWFudGlmb2xkU3RyaW5nKXsoY29uc3QgdW5zaWduZWQgY2hhciAqKShsaXRlcmFsKSwgc2l6ZW9mKGxpdGVyYWwpIC0gMX0pXG5cbnR5cGVkZWYgc3RydWN0IFNlbWFudGlmb2xkQWxsb2NhdGlvbiB7XG4gICAgc3RydWN0IFNlbWFudGlmb2xkQWxsb2NhdGlvbiAqbmV4dDtcbiAgICB1bnNpZ25lZCBjaGFyIGRhdGFbXTtcbn0gU2VtYW50aWZvbGRBbGxvY2F0aW9uO1xuXG5fU3RhdGljX2Fzc2VydChzaXplb2YoU2VtYW50aWZvbGRBbGxvY2F0aW9uKSA9PSA4LCBcIlNlbWFudGlmb2xkIHJlcXVpcmVzIHRoZSBxdWFsaWZpZWQgYXJlbmEgbWV0YWRhdGEgc2l6ZVwiKTtcblxuc3RhdGljIFNlbWFudGlmb2xkQWxsb2NhdGlvbiAqc2VtYW50aWZvbGRfYXJlbmEgPSBOVUxMO1xuc3RhdGljIHNpemVfdCBzZW1hbnRpZm9sZF9hcmVuYV9ieXRlcyA9IDA7XG5cbnN0YXRpYyBpbmxpbmUgdm9pZCBzZW1hbnRpZm9sZF9jbGVhbnVwKHZvaWQpIHtcbiAgICB3aGlsZSAoc2VtYW50aWZvbGRfYXJlbmEgIT0gTlVMTCkge1xuICAgICAgICBTZW1hbnRpZm9sZEFsbG9jYXRpb24gKmFsbG9jYXRpb24gPSBzZW1hbnRpZm9sZF9hcmVuYTtcbiAgICAgICAgc2VtYW50aWZvbGRfYXJlbmEgPSBhbGxvY2F0aW9uLT5uZXh0O1xuICAgICAgICBmcmVlKGFsbG9jYXRpb24pO1xuICAgIH1cbiAgICBzZW1hbnRpZm9sZF9hcmVuYV9ieXRlcyA9IDA7XG59XG5cbl9Ob3JldHVybiBzdGF0aWMgaW5saW5lIHZvaWQgc2VtYW50aWZvbGRfZmF0YWwoY29uc3QgY2hhciAqbWVzc2FnZSwgc2l6ZV90IGxlbmd0aCkge1xuICAgIHNlbWFudGlmb2xkX2NsZWFudXAoKTtcbiAgICAodm9pZClmd3JpdGUobWVzc2FnZSwgMSwgbGVuZ3RoLCBzdGRlcnIpO1xuICAgIGV4aXQoNzApO1xufVxuXG5zdGF0aWMgaW5saW5lIGludDY0X3Qgc2VtYW50aWZvbGRfaW50ZWdlcl9hZGQoaW50NjRfdCBsZWZ0LCBpbnQ2NF90IHJpZ2h0KSB7XG4gICAgaW50NjRfdCByZXN1bHQ7XG4gICAgaWYgKF9fYnVpbHRpbl9hZGRfb3ZlcmZsb3cobGVmdCwgcmlnaHQsICZyZXN1bHQpKSB7XG4gICAgICAgIHNlbWFudGlmb2xkX2ZhdGFsKFwic2VtYW50aWZvbGQ6IGludGVnZXIgb3ZlcmZsb3dcXFxcblwiLCBzaXplb2YoXCJzZW1hbnRpZm9sZDogaW50ZWdlciBvdmVyZmxvd1xcXFxuXCIpIC0gMSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbnN0YXRpYyBpbmxpbmUgaW50NjRfdCBzZW1hbnRpZm9sZF9pbnRlZ2VyX3N1YnRyYWN0KGludDY0X3QgbGVmdCwgaW50NjRfdCByaWdodCkge1xuICAgIGludDY0X3QgcmVzdWx0O1xuICAgIGlmIChfX2J1aWx0aW5fc3ViX292ZXJmbG93KGxlZnQsIHJpZ2h0LCAmcmVzdWx0KSkge1xuICAgICAgICBzZW1hbnRpZm9sZF9mYXRhbChcInNlbWFudGlmb2xkOiBpbnRlZ2VyIG92ZXJmbG93XFxcXG5cIiwgc2l6ZW9mKFwic2VtYW50aWZvbGQ6IGludGVnZXIgb3ZlcmZsb3dcXFxcblwiKSAtIDEpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG5zdGF0aWMgaW5saW5lIGludDY0X3Qgc2VtYW50aWZvbGRfaW50ZWdlcl9tdWx0aXBseShpbnQ2NF90IGxlZnQsIGludDY0X3QgcmlnaHQpIHtcbiAgICBpbnQ2NF90IHJlc3VsdDtcbiAgICBpZiAoX19idWlsdGluX211bF9vdmVyZmxvdyhsZWZ0LCByaWdodCwgJnJlc3VsdCkpIHtcbiAgICAgICAgc2VtYW50aWZvbGRfZmF0YWwoXCJzZW1hbnRpZm9sZDogaW50ZWdlciBvdmVyZmxvd1xcXFxuXCIsIHNpemVvZihcInNlbWFudGlmb2xkOiBpbnRlZ2VyIG92ZXJmbG93XFxcXG5cIikgLSAxKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuc3RhdGljIGlubGluZSBpbnQ2NF90IHNlbWFudGlmb2xkX2ludGVnZXJfbmVnYXRlKGludDY0X3QgdmFsdWUpIHtcbiAgICByZXR1cm4gc2VtYW50aWZvbGRfaW50ZWdlcl9zdWJ0cmFjdChJTlQ2NF9DKDApLCB2YWx1ZSk7XG59XG5cbnN0YXRpYyBpbmxpbmUgc2l6ZV90IHNlbWFudGlmb2xkX2FsbG9jYXRpb25fc2l6ZShzaXplX3QgbGVmdCwgc2l6ZV90IHJpZ2h0KSB7XG4gICAgY29uc3Qgc2l6ZV90IG1heGltdW0gPSAoc2l6ZV90KVBUUkRJRkZfTUFYO1xuICAgIGlmIChsZWZ0ID4gbWF4aW11bSB8fCByaWdodCA+IG1heGltdW0gLSBsZWZ0IHx8XG4gICAgICAgIGxlZnQgKyByaWdodCA+IG1heGltdW0gLSBzaXplb2YoU2VtYW50aWZvbGRBbGxvY2F0aW9uKSkge1xuICAgICAgICBzZW1hbnRpZm9sZF9mYXRhbChcInNlbWFudGlmb2xkOiBhbGxvY2F0aW9uIHNpemVcXFxcblwiLCBzaXplb2YoXCJzZW1hbnRpZm9sZDogYWxsb2NhdGlvbiBzaXplXFxcXG5cIikgLSAxKTtcbiAgICB9XG4gICAgY29uc3Qgc2l6ZV90IHNpemUgPSBzaXplb2YoU2VtYW50aWZvbGRBbGxvY2F0aW9uKSArIGxlZnQgKyByaWdodDtcbiAgICBpZiAoc2VtYW50aWZvbGRfYXJlbmFfYnl0ZXMgPiBtYXhpbXVtIC0gc2l6ZSkge1xuICAgICAgICBzZW1hbnRpZm9sZF9mYXRhbChcInNlbWFudGlmb2xkOiBhbGxvY2F0aW9uIHNpemVcXFxcblwiLCBzaXplb2YoXCJzZW1hbnRpZm9sZDogYWxsb2NhdGlvbiBzaXplXFxcXG5cIikgLSAxKTtcbiAgICB9XG4gICAgcmV0dXJuIHNpemU7XG59XG5cbnN0YXRpYyBpbmxpbmUgU2VtYW50aWZvbGRTdHJpbmcgc2VtYW50aWZvbGRfc3RyaW5nX2NvbmNhdChTZW1hbnRpZm9sZFN0cmluZyBsZWZ0LCBTZW1hbnRpZm9sZFN0cmluZyByaWdodCkge1xuICAgIGNvbnN0IHNpemVfdCBzaXplID0gc2VtYW50aWZvbGRfYWxsb2NhdGlvbl9zaXplKGxlZnQubGVuZ3RoLCByaWdodC5sZW5ndGgpO1xuICAgIFNlbWFudGlmb2xkQWxsb2NhdGlvbiAqYWxsb2NhdGlvbiA9IG1hbGxvYyhzaXplKTtcbiAgICBpZiAoYWxsb2NhdGlvbiA9PSBOVUxMKSB7XG4gICAgICAgIHNlbWFudGlmb2xkX2ZhdGFsKFwic2VtYW50aWZvbGQ6IGFsbG9jYXRpb24gZmFpbHVyZVxcXFxuXCIsIHNpemVvZihcInNlbWFudGlmb2xkOiBhbGxvY2F0aW9uIGZhaWx1cmVcXFxcblwiKSAtIDEpO1xuICAgIH1cbiAgICBhbGxvY2F0aW9uLT5uZXh0ID0gc2VtYW50aWZvbGRfYXJlbmE7XG4gICAgc2VtYW50aWZvbGRfYXJlbmEgPSBhbGxvY2F0aW9uO1xuICAgIHNlbWFudGlmb2xkX2FyZW5hX2J5dGVzICs9IHNpemU7XG4gICAgaWYgKGxlZnQubGVuZ3RoICE9IDApICh2b2lkKW1lbWNweShhbGxvY2F0aW9uLT5kYXRhLCBsZWZ0LmRhdGEsIGxlZnQubGVuZ3RoKTtcbiAgICBpZiAocmlnaHQubGVuZ3RoICE9IDApICh2b2lkKW1lbWNweShhbGxvY2F0aW9uLT5kYXRhICsgbGVmdC5sZW5ndGgsIHJpZ2h0LmRhdGEsIHJpZ2h0Lmxlbmd0aCk7XG4gICAgcmV0dXJuIChTZW1hbnRpZm9sZFN0cmluZyl7YWxsb2NhdGlvbi0+ZGF0YSwgbGVmdC5sZW5ndGggKyByaWdodC5sZW5ndGh9O1xufVxuXG5zdGF0aWMgaW5saW5lIGJvb2wgc2VtYW50aWZvbGRfc3RyaW5nX2VxdWFsKFNlbWFudGlmb2xkU3RyaW5nIGxlZnQsIFNlbWFudGlmb2xkU3RyaW5nIHJpZ2h0KSB7XG4gICAgcmV0dXJuIGxlZnQubGVuZ3RoID09IHJpZ2h0Lmxlbmd0aCAmJiAobGVmdC5sZW5ndGggPT0gMCB8fCBtZW1jbXAobGVmdC5kYXRhLCByaWdodC5kYXRhLCBsZWZ0Lmxlbmd0aCkgPT0gMCk7XG59XG5cbnN0YXRpYyBpbmxpbmUgYm9vbCBzZW1hbnRpZm9sZF9zdHJpbmdfbm90X2VxdWFsKFNlbWFudGlmb2xkU3RyaW5nIGxlZnQsIFNlbWFudGlmb2xkU3RyaW5nIHJpZ2h0KSB7XG4gICAgcmV0dXJuICFzZW1hbnRpZm9sZF9zdHJpbmdfZXF1YWwobGVmdCwgcmlnaHQpO1xufVxuXG5zdGF0aWMgaW5saW5lIHZvaWQgc2VtYW50aWZvbGRfd3JpdGUoY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgc2l6ZV90IGxlbmd0aCkge1xuICAgIGlmIChsZW5ndGggIT0gMCAmJiBmd3JpdGUoZGF0YSwgMSwgbGVuZ3RoLCBzdGRvdXQpICE9IGxlbmd0aCkge1xuICAgICAgICBzZW1hbnRpZm9sZF9mYXRhbChcInNlbWFudGlmb2xkOiBvdXRwdXQgZmFpbHVyZVxcXFxuXCIsIHNpemVvZihcInNlbWFudGlmb2xkOiBvdXRwdXQgZmFpbHVyZVxcXFxuXCIpIC0gMSk7XG4gICAgfVxufVxuXG5zdGF0aWMgaW5saW5lIHZvaWQgc2VtYW50aWZvbGRfbmV3bGluZSh2b2lkKSB7XG4gICAgc2VtYW50aWZvbGRfd3JpdGUoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilcIlxcXFxuXCIsIDEpO1xuICAgIGlmIChmZmx1c2goc3Rkb3V0KSAhPSAwKSBzZW1hbnRpZm9sZF9mYXRhbChcInNlbWFudGlmb2xkOiBvdXRwdXQgZmFpbHVyZVxcXFxuXCIsIHNpemVvZihcInNlbWFudGlmb2xkOiBvdXRwdXQgZmFpbHVyZVxcXFxuXCIpIC0gMSk7XG59XG5cbnN0YXRpYyBpbmxpbmUgdm9pZCBzZW1hbnRpZm9sZF9wcmludF9zdHJpbmcoU2VtYW50aWZvbGRTdHJpbmcgdmFsdWUpIHtcbiAgICBzZW1hbnRpZm9sZF93cml0ZSh2YWx1ZS5kYXRhLCB2YWx1ZS5sZW5ndGgpO1xuICAgIHNlbWFudGlmb2xkX25ld2xpbmUoKTtcbn1cblxuc3RhdGljIGlubGluZSB2b2lkIHNlbWFudGlmb2xkX3ByaW50X2Jvb2xlYW4oYm9vbCB2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSkgc2VtYW50aWZvbGRfd3JpdGUoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilcInRydWVcIiwgNCk7XG4gICAgZWxzZSBzZW1hbnRpZm9sZF93cml0ZSgoY29uc3QgdW5zaWduZWQgY2hhciAqKVwiZmFsc2VcIiwgNSk7XG4gICAgc2VtYW50aWZvbGRfbmV3bGluZSgpO1xufVxuXG5zdGF0aWMgaW5saW5lIHZvaWQgc2VtYW50aWZvbGRfcHJpbnRfaW50ZWdlcihpbnQ2NF90IHZhbHVlKSB7XG4gICAgdW5zaWduZWQgY2hhciBkaWdpdHNbMjBdO1xuICAgIHNpemVfdCBwb3NpdGlvbiA9IHNpemVvZihkaWdpdHMpO1xuICAgIHVpbnQ2NF90IG1hZ25pdHVkZSA9ICh1aW50NjRfdCl2YWx1ZTtcbiAgICBpZiAodmFsdWUgPCAwKSBtYWduaXR1ZGUgPSBVSU5UNjRfQygwKSAtIG1hZ25pdHVkZTtcbiAgICBkbyB7XG4gICAgICAgIGRpZ2l0c1stLXBvc2l0aW9uXSA9ICh1bnNpZ25lZCBjaGFyKShVSU5UNjRfQyg0OCkgKyBtYWduaXR1ZGUgJSBVSU5UNjRfQygxMCkpO1xuICAgICAgICBtYWduaXR1ZGUgLz0gVUlOVDY0X0MoMTApO1xuICAgIH0gd2hpbGUgKG1hZ25pdHVkZSAhPSAwKTtcbiAgICBpZiAodmFsdWUgPCAwKSBkaWdpdHNbLS1wb3NpdGlvbl0gPSAodW5zaWduZWQgY2hhcik0NTtcbiAgICBzZW1hbnRpZm9sZF93cml0ZShkaWdpdHMgKyBwb3NpdGlvbiwgc2l6ZW9mKGRpZ2l0cykgLSBwb3NpdGlvbik7XG4gICAgc2VtYW50aWZvbGRfbmV3bGluZSgpO1xufVxuXG4jZW5kaWZcbmBcbiJdfQ==
@@ -0,0 +1,12 @@
1
+ export type SemanticModule = import("../semantic/types.js").SemanticModule;
2
+ export type Expression = import("../semantic/types.js").Expression;
3
+ export type SourceLocation = import("../semantic/types.js").SourceLocation;
4
+ /** Maximum UTF-16 input accepted by the unchanged qualified legacy parser. */
5
+ export declare const maximumCSourceLength = 32767;
6
+ /**
7
+ * Rejects compile-time-known object and arena sizes; unknown runtime lengths remain checked in C.
8
+ * @param {SemanticModule} module - Shape/type-validated module.
9
+ * @returns {void}
10
+ */
11
+ export declare function validateCMemory(module: SemanticModule): void;
12
+ //# sourceMappingURL=c-validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"c-validation.d.ts","sourceRoot":"","sources":["../../../src/backends/c-validation.js"],"names":[],"mappings":"AAII,YAAyD,cAAc,GAA7D,OAAO,sBAAsB,EAAE,cAAc,CAAgB;AACvE,YAAqD,UAAU,GAArD,OAAO,sBAAsB,EAAE,UAAU,CAAY;AAC/D,YAAyD,cAAc,GAA7D,OAAO,sBAAsB,EAAE,cAAc,CAAgB;AAG3E,8EAA8E;AAC9E,eAAO,MAAM,oBAAoB,QAAQ,CAAA;AAEzC;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAH3B,cAG2B,GAFzB,IAAI,CAmEhB"}
@@ -0,0 +1,85 @@
1
+ // @ts-check
2
+ import { unsupportedCapability } from "../diagnostic.js";
3
+ /** @typedef {import("../semantic/types.js").SemanticModule} SemanticModule */
4
+ /** @typedef {import("../semantic/types.js").Expression} Expression */
5
+ /** @typedef {import("../semantic/types.js").SourceLocation} SourceLocation */
6
+ const maximumObjectBytes = 9223372036854775807n;
7
+ /** Maximum UTF-16 input accepted by the unchanged qualified legacy parser. */
8
+ export const maximumCSourceLength = 32767;
9
+ const allocationMetadataBytes = 8n;
10
+ /**
11
+ * Rejects compile-time-known object and arena sizes; unknown runtime lengths remain checked in C.
12
+ * @param {SemanticModule} module - Shape/type-validated module.
13
+ * @returns {void}
14
+ */
15
+ export function validateCMemory(module) {
16
+ /**
17
+ * Checks one expression and its known byte lengths without folding the IR.
18
+ * @param {Expression} expression - Semantic expression.
19
+ * @param {Map<string, bigint | undefined>} lengths - Visible immutable or assigned lengths.
20
+ * @param {{bytes: bigint}} arena - Known minimum allocations in this lexical path.
21
+ * @returns {bigint | undefined} Known UTF-8 byte length.
22
+ */
23
+ function size(expression, lengths, arena) {
24
+ if (expression.kind == "StringLiteral") {
25
+ const bytes = BigInt(Buffer.byteLength(expression.value, "utf8"));
26
+ if (bytes > 4095n)
27
+ unsupportedCapability("c", "UTF-8 literal exceeds the strict C17 4095-byte translation limit", expression.location);
28
+ return bytes;
29
+ }
30
+ if (expression.kind == "IdentifierExpression")
31
+ return lengths.get(expression.name);
32
+ if (expression.kind == "CallExpression") {
33
+ for (const argument of expression.arguments)
34
+ size(argument, lengths, arena);
35
+ }
36
+ else if (expression.kind == "UnaryExpression")
37
+ size(expression.operand, lengths, arena);
38
+ else if (expression.kind == "BinaryExpression") {
39
+ const left = size(expression.left, lengths, arena);
40
+ const right = size(expression.right, lengths, arena);
41
+ if (expression.operation == "StringConcat") {
42
+ const minimum = (left ?? 0n) + (right ?? 0n);
43
+ arena.bytes += allocationMetadataBytes + minimum;
44
+ if (minimum > maximumObjectBytes - allocationMetadataBytes || arena.bytes > maximumObjectBytes) {
45
+ unsupportedCapability("c", "known immutable slice or module arena size exceeds PTRDIFF_MAX", expression.location);
46
+ }
47
+ return left === undefined || right === undefined ? undefined : left + right;
48
+ }
49
+ }
50
+ return undefined;
51
+ }
52
+ /**
53
+ * Propagates known local descriptor sizes through straight-line code and both branch paths.
54
+ * @param {import("../semantic/types.js").Block} block - Semantic block.
55
+ * @param {Map<string, bigint | undefined>} inherited - Visible known lengths.
56
+ * @param {{bytes: bigint}} arena - Known path allocation size.
57
+ * @returns {Map<string, bigint | undefined>} Outgoing known lengths.
58
+ */
59
+ function visit(block, inherited, arena) {
60
+ const lengths = new Map(inherited);
61
+ for (const statement of block.statements) {
62
+ if (statement.kind == "LocalDeclaration")
63
+ lengths.set(statement.name, size(statement.initializer, lengths, arena));
64
+ else if (statement.kind == "AssignmentStatement")
65
+ lengths.set(statement.target.name, size(statement.expression, lengths, arena));
66
+ else if (statement.kind == "IfStatement") {
67
+ size(statement.condition, lengths, arena);
68
+ const leftArena = { bytes: arena.bytes };
69
+ const rightArena = { bytes: arena.bytes };
70
+ const left = visit(statement.consequent, lengths, leftArena);
71
+ const right = statement.alternate ? visit(statement.alternate, lengths, rightArena) : lengths;
72
+ for (const name of lengths.keys())
73
+ lengths.set(name, left.get(name) === right.get(name) ? left.get(name) : undefined);
74
+ arena.bytes = leftArena.bytes < rightArena.bytes ? leftArena.bytes : rightArena.bytes;
75
+ }
76
+ else
77
+ size(statement.expression, lengths, arena);
78
+ }
79
+ return lengths;
80
+ }
81
+ for (const declaration of module.functions)
82
+ visit(declaration.body, new Map(), { bytes: 0n });
83
+ visit(module.entryPoint.body, new Map(), { bytes: 0n });
84
+ }
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYy12YWxpZGF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JhY2tlbmRzL2MtdmFsaWRhdGlvbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sa0JBQWtCLENBQUE7QUFFdEQsOEVBQThFO0FBQzlFLHNFQUFzRTtBQUN0RSw4RUFBOEU7QUFFOUUsTUFBTSxrQkFBa0IsR0FBRyxvQkFBb0IsQ0FBQTtBQUMvQyw4RUFBOEU7QUFDOUUsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsS0FBSyxDQUFBO0FBQ3pDLE1BQU0sdUJBQXVCLEdBQUcsRUFBRSxDQUFBO0FBQ2xDOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLE1BQU07SUFDcEM7Ozs7OztPQU1HO0lBQ0gsU0FBUyxJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxLQUFLO1FBQ3RDLElBQUksVUFBVSxDQUFDLElBQUksSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUN2QyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUE7WUFFakUsSUFBSSxLQUFLLEdBQUcsS0FBSztnQkFBRSxxQkFBcUIsQ0FBQyxHQUFHLEVBQUUsa0VBQWtFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1lBQ3RJLE9BQU8sS0FBSyxDQUFBO1FBQ2QsQ0FBQztRQUNELElBQUksVUFBVSxDQUFDLElBQUksSUFBSSxzQkFBc0I7WUFBRSxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ2xGLElBQUksVUFBVSxDQUFDLElBQUksSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3hDLEtBQUssTUFBTSxRQUFRLElBQUksVUFBVSxDQUFDLFNBQVM7Z0JBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUE7UUFDN0UsQ0FBQzthQUFNLElBQUksVUFBVSxDQUFDLElBQUksSUFBSSxpQkFBaUI7WUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUE7YUFDcEYsSUFBSSxVQUFVLENBQUMsSUFBSSxJQUFJLGtCQUFrQixFQUFFLENBQUM7WUFDL0MsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFBO1lBQ2xELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQTtZQUVwRCxJQUFJLFVBQVUsQ0FBQyxTQUFTLElBQUksY0FBYyxFQUFFLENBQUM7Z0JBQzNDLE1BQU0sT0FBTyxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFBO2dCQUU1QyxLQUFLLENBQUMsS0FBSyxJQUFJLHVCQUF1QixHQUFHLE9BQU8sQ0FBQTtnQkFDaEQsSUFBSSxPQUFPLEdBQUcsa0JBQWtCLEdBQUcsdUJBQXVCLElBQUksS0FBSyxDQUFDLEtBQUssR0FBRyxrQkFBa0IsRUFBRSxDQUFDO29CQUMvRixxQkFBcUIsQ0FBQyxHQUFHLEVBQUUsZ0VBQWdFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFBO2dCQUNuSCxDQUFDO2dCQUNELE9BQU8sSUFBSSxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUE7WUFDN0UsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQTtJQUNsQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsU0FBUyxLQUFLLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLO1FBQ3BDLE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBRWxDLEtBQUssTUFBTSxTQUFTLElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3pDLElBQUksU0FBUyxDQUFDLElBQUksSUFBSSxrQkFBa0I7Z0JBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFBO2lCQUM3RyxJQUFJLFNBQVMsQ0FBQyxJQUFJLElBQUkscUJBQXFCO2dCQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUE7aUJBQzNILElBQUksU0FBUyxDQUFDLElBQUksSUFBSSxhQUFhLEVBQUUsQ0FBQztnQkFDekMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFBO2dCQUN6QyxNQUFNLFNBQVMsR0FBRyxFQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFDLENBQUE7Z0JBQ3RDLE1BQU0sVUFBVSxHQUFHLEVBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUMsQ0FBQTtnQkFDdkMsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFBO2dCQUM1RCxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQTtnQkFFN0YsS0FBSyxNQUFNLElBQUksSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFO29CQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUE7Z0JBQ3JILEtBQUssQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFBO1lBQ3ZGLENBQUM7O2dCQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQTtRQUNuRCxDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUE7SUFDaEIsQ0FBQztJQUVELEtBQUssTUFBTSxXQUFXLElBQUksTUFBTSxDQUFDLFNBQVM7UUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLEdBQUcsRUFBRSxFQUFFLEVBQUMsS0FBSyxFQUFFLEVBQUUsRUFBQyxDQUFDLENBQUE7SUFDM0YsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksR0FBRyxFQUFFLEVBQUUsRUFBQyxLQUFLLEVBQUUsRUFBRSxFQUFDLENBQUMsQ0FBQTtBQUN2RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCB7dW5zdXBwb3J0ZWRDYXBhYmlsaXR5fSBmcm9tIFwiLi4vZGlhZ25vc3RpYy5qc1wiXG5cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuU2VtYW50aWNNb2R1bGV9IFNlbWFudGljTW9kdWxlICovXG4vKiogQHR5cGVkZWYge2ltcG9ydChcIi4uL3NlbWFudGljL3R5cGVzLmpzXCIpLkV4cHJlc3Npb259IEV4cHJlc3Npb24gKi9cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuU291cmNlTG9jYXRpb259IFNvdXJjZUxvY2F0aW9uICovXG5cbmNvbnN0IG1heGltdW1PYmplY3RCeXRlcyA9IDkyMjMzNzIwMzY4NTQ3NzU4MDduXG4vKiogTWF4aW11bSBVVEYtMTYgaW5wdXQgYWNjZXB0ZWQgYnkgdGhlIHVuY2hhbmdlZCBxdWFsaWZpZWQgbGVnYWN5IHBhcnNlci4gKi9cbmV4cG9ydCBjb25zdCBtYXhpbXVtQ1NvdXJjZUxlbmd0aCA9IDMyNzY3XG5jb25zdCBhbGxvY2F0aW9uTWV0YWRhdGFCeXRlcyA9IDhuXG4vKipcbiAqIFJlamVjdHMgY29tcGlsZS10aW1lLWtub3duIG9iamVjdCBhbmQgYXJlbmEgc2l6ZXM7IHVua25vd24gcnVudGltZSBsZW5ndGhzIHJlbWFpbiBjaGVja2VkIGluIEMuXG4gKiBAcGFyYW0ge1NlbWFudGljTW9kdWxlfSBtb2R1bGUgLSBTaGFwZS90eXBlLXZhbGlkYXRlZCBtb2R1bGUuXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlQ01lbW9yeShtb2R1bGUpIHtcbiAgLyoqXG4gICAqIENoZWNrcyBvbmUgZXhwcmVzc2lvbiBhbmQgaXRzIGtub3duIGJ5dGUgbGVuZ3RocyB3aXRob3V0IGZvbGRpbmcgdGhlIElSLlxuICAgKiBAcGFyYW0ge0V4cHJlc3Npb259IGV4cHJlc3Npb24gLSBTZW1hbnRpYyBleHByZXNzaW9uLlxuICAgKiBAcGFyYW0ge01hcDxzdHJpbmcsIGJpZ2ludCB8IHVuZGVmaW5lZD59IGxlbmd0aHMgLSBWaXNpYmxlIGltbXV0YWJsZSBvciBhc3NpZ25lZCBsZW5ndGhzLlxuICAgKiBAcGFyYW0ge3tieXRlczogYmlnaW50fX0gYXJlbmEgLSBLbm93biBtaW5pbXVtIGFsbG9jYXRpb25zIGluIHRoaXMgbGV4aWNhbCBwYXRoLlxuICAgKiBAcmV0dXJucyB7YmlnaW50IHwgdW5kZWZpbmVkfSBLbm93biBVVEYtOCBieXRlIGxlbmd0aC5cbiAgICovXG4gIGZ1bmN0aW9uIHNpemUoZXhwcmVzc2lvbiwgbGVuZ3RocywgYXJlbmEpIHtcbiAgICBpZiAoZXhwcmVzc2lvbi5raW5kID09IFwiU3RyaW5nTGl0ZXJhbFwiKSB7XG4gICAgICBjb25zdCBieXRlcyA9IEJpZ0ludChCdWZmZXIuYnl0ZUxlbmd0aChleHByZXNzaW9uLnZhbHVlLCBcInV0ZjhcIikpXG5cbiAgICAgIGlmIChieXRlcyA+IDQwOTVuKSB1bnN1cHBvcnRlZENhcGFiaWxpdHkoXCJjXCIsIFwiVVRGLTggbGl0ZXJhbCBleGNlZWRzIHRoZSBzdHJpY3QgQzE3IDQwOTUtYnl0ZSB0cmFuc2xhdGlvbiBsaW1pdFwiLCBleHByZXNzaW9uLmxvY2F0aW9uKVxuICAgICAgcmV0dXJuIGJ5dGVzXG4gICAgfVxuICAgIGlmIChleHByZXNzaW9uLmtpbmQgPT0gXCJJZGVudGlmaWVyRXhwcmVzc2lvblwiKSByZXR1cm4gbGVuZ3Rocy5nZXQoZXhwcmVzc2lvbi5uYW1lKVxuICAgIGlmIChleHByZXNzaW9uLmtpbmQgPT0gXCJDYWxsRXhwcmVzc2lvblwiKSB7XG4gICAgICBmb3IgKGNvbnN0IGFyZ3VtZW50IG9mIGV4cHJlc3Npb24uYXJndW1lbnRzKSBzaXplKGFyZ3VtZW50LCBsZW5ndGhzLCBhcmVuYSlcbiAgICB9IGVsc2UgaWYgKGV4cHJlc3Npb24ua2luZCA9PSBcIlVuYXJ5RXhwcmVzc2lvblwiKSBzaXplKGV4cHJlc3Npb24ub3BlcmFuZCwgbGVuZ3RocywgYXJlbmEpXG4gICAgZWxzZSBpZiAoZXhwcmVzc2lvbi5raW5kID09IFwiQmluYXJ5RXhwcmVzc2lvblwiKSB7XG4gICAgICBjb25zdCBsZWZ0ID0gc2l6ZShleHByZXNzaW9uLmxlZnQsIGxlbmd0aHMsIGFyZW5hKVxuICAgICAgY29uc3QgcmlnaHQgPSBzaXplKGV4cHJlc3Npb24ucmlnaHQsIGxlbmd0aHMsIGFyZW5hKVxuXG4gICAgICBpZiAoZXhwcmVzc2lvbi5vcGVyYXRpb24gPT0gXCJTdHJpbmdDb25jYXRcIikge1xuICAgICAgICBjb25zdCBtaW5pbXVtID0gKGxlZnQgPz8gMG4pICsgKHJpZ2h0ID8/IDBuKVxuXG4gICAgICAgIGFyZW5hLmJ5dGVzICs9IGFsbG9jYXRpb25NZXRhZGF0YUJ5dGVzICsgbWluaW11bVxuICAgICAgICBpZiAobWluaW11bSA+IG1heGltdW1PYmplY3RCeXRlcyAtIGFsbG9jYXRpb25NZXRhZGF0YUJ5dGVzIHx8IGFyZW5hLmJ5dGVzID4gbWF4aW11bU9iamVjdEJ5dGVzKSB7XG4gICAgICAgICAgdW5zdXBwb3J0ZWRDYXBhYmlsaXR5KFwiY1wiLCBcImtub3duIGltbXV0YWJsZSBzbGljZSBvciBtb2R1bGUgYXJlbmEgc2l6ZSBleGNlZWRzIFBUUkRJRkZfTUFYXCIsIGV4cHJlc3Npb24ubG9jYXRpb24pXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxlZnQgPT09IHVuZGVmaW5lZCB8fCByaWdodCA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogbGVmdCArIHJpZ2h0XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9wYWdhdGVzIGtub3duIGxvY2FsIGRlc2NyaXB0b3Igc2l6ZXMgdGhyb3VnaCBzdHJhaWdodC1saW5lIGNvZGUgYW5kIGJvdGggYnJhbmNoIHBhdGhzLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL3NlbWFudGljL3R5cGVzLmpzXCIpLkJsb2NrfSBibG9jayAtIFNlbWFudGljIGJsb2NrLlxuICAgKiBAcGFyYW0ge01hcDxzdHJpbmcsIGJpZ2ludCB8IHVuZGVmaW5lZD59IGluaGVyaXRlZCAtIFZpc2libGUga25vd24gbGVuZ3Rocy5cbiAgICogQHBhcmFtIHt7Ynl0ZXM6IGJpZ2ludH19IGFyZW5hIC0gS25vd24gcGF0aCBhbGxvY2F0aW9uIHNpemUuXG4gICAqIEByZXR1cm5zIHtNYXA8c3RyaW5nLCBiaWdpbnQgfCB1bmRlZmluZWQ+fSBPdXRnb2luZyBrbm93biBsZW5ndGhzLlxuICAgKi9cbiAgZnVuY3Rpb24gdmlzaXQoYmxvY2ssIGluaGVyaXRlZCwgYXJlbmEpIHtcbiAgICBjb25zdCBsZW5ndGhzID0gbmV3IE1hcChpbmhlcml0ZWQpXG5cbiAgICBmb3IgKGNvbnN0IHN0YXRlbWVudCBvZiBibG9jay5zdGF0ZW1lbnRzKSB7XG4gICAgICBpZiAoc3RhdGVtZW50LmtpbmQgPT0gXCJMb2NhbERlY2xhcmF0aW9uXCIpIGxlbmd0aHMuc2V0KHN0YXRlbWVudC5uYW1lLCBzaXplKHN0YXRlbWVudC5pbml0aWFsaXplciwgbGVuZ3RocywgYXJlbmEpKVxuICAgICAgZWxzZSBpZiAoc3RhdGVtZW50LmtpbmQgPT0gXCJBc3NpZ25tZW50U3RhdGVtZW50XCIpIGxlbmd0aHMuc2V0KHN0YXRlbWVudC50YXJnZXQubmFtZSwgc2l6ZShzdGF0ZW1lbnQuZXhwcmVzc2lvbiwgbGVuZ3RocywgYXJlbmEpKVxuICAgICAgZWxzZSBpZiAoc3RhdGVtZW50LmtpbmQgPT0gXCJJZlN0YXRlbWVudFwiKSB7XG4gICAgICAgIHNpemUoc3RhdGVtZW50LmNvbmRpdGlvbiwgbGVuZ3RocywgYXJlbmEpXG4gICAgICAgIGNvbnN0IGxlZnRBcmVuYSA9IHtieXRlczogYXJlbmEuYnl0ZXN9XG4gICAgICAgIGNvbnN0IHJpZ2h0QXJlbmEgPSB7Ynl0ZXM6IGFyZW5hLmJ5dGVzfVxuICAgICAgICBjb25zdCBsZWZ0ID0gdmlzaXQoc3RhdGVtZW50LmNvbnNlcXVlbnQsIGxlbmd0aHMsIGxlZnRBcmVuYSlcbiAgICAgICAgY29uc3QgcmlnaHQgPSBzdGF0ZW1lbnQuYWx0ZXJuYXRlID8gdmlzaXQoc3RhdGVtZW50LmFsdGVybmF0ZSwgbGVuZ3RocywgcmlnaHRBcmVuYSkgOiBsZW5ndGhzXG5cbiAgICAgICAgZm9yIChjb25zdCBuYW1lIG9mIGxlbmd0aHMua2V5cygpKSBsZW5ndGhzLnNldChuYW1lLCBsZWZ0LmdldChuYW1lKSA9PT0gcmlnaHQuZ2V0KG5hbWUpID8gbGVmdC5nZXQobmFtZSkgOiB1bmRlZmluZWQpXG4gICAgICAgIGFyZW5hLmJ5dGVzID0gbGVmdEFyZW5hLmJ5dGVzIDwgcmlnaHRBcmVuYS5ieXRlcyA/IGxlZnRBcmVuYS5ieXRlcyA6IHJpZ2h0QXJlbmEuYnl0ZXNcbiAgICAgIH0gZWxzZSBzaXplKHN0YXRlbWVudC5leHByZXNzaW9uLCBsZW5ndGhzLCBhcmVuYSlcbiAgICB9XG4gICAgcmV0dXJuIGxlbmd0aHNcbiAgfVxuXG4gIGZvciAoY29uc3QgZGVjbGFyYXRpb24gb2YgbW9kdWxlLmZ1bmN0aW9ucykgdmlzaXQoZGVjbGFyYXRpb24uYm9keSwgbmV3IE1hcCgpLCB7Ynl0ZXM6IDBufSlcbiAgdmlzaXQobW9kdWxlLmVudHJ5UG9pbnQuYm9keSwgbmV3IE1hcCgpLCB7Ynl0ZXM6IDBufSlcbn1cbiJdfQ==
@@ -0,0 +1,31 @@
1
+ export type SemanticModule = import("../semantic/types.js").SemanticModule;
2
+ export type SemanticNode = import("../semantic/types.js").SemanticNode;
3
+ export type Statement = import("../semantic/types.js").Statement;
4
+ export type Block = import("../semantic/types.js").Block;
5
+ export type PlannedValue = import("./ordered-expressions.js").PlannedValue;
6
+ export type PlannedStep = import("./ordered-expressions.js").PlannedStep;
7
+ export type StatementPlan = {
8
+ id: string;
9
+ steps: PlannedStep[];
10
+ value: PlannedValue;
11
+ };
12
+ /**
13
+ * Produces a fully validated, deterministic C17 translation unit and owned support header.
14
+ * @param {{filename?: string, mapDirective?: unknown, module: SemanticModule, sourceMapFilename?: unknown, sources?: {filename: string, content: string, language?: import("../semantic/types.js").SemanticLanguage}[]}} input - Backend request.
15
+ * @returns {{artifacts: import("../semantic/types.js").GeneratedSetArtifact[], target: string}} Complete candidate.
16
+ */
17
+ export declare function generateCProgram({ filename, mapDirective, module, sourceMapFilename, sources }: {
18
+ filename?: string;
19
+ mapDirective?: unknown;
20
+ module: SemanticModule;
21
+ sourceMapFilename?: unknown;
22
+ sources?: {
23
+ filename: string;
24
+ content: string;
25
+ language?: import("../semantic/types.js").SemanticLanguage;
26
+ }[];
27
+ }): {
28
+ artifacts: import("../semantic/types.js").GeneratedSetArtifact[];
29
+ target: string;
30
+ };
31
+ //# sourceMappingURL=c.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"c.d.ts","sourceRoot":"","sources":["../../../src/backends/c.js"],"names":[],"mappings":"AAYI,YAAyD,cAAc,GAA7D,OAAO,sBAAsB,EAAE,cAAc,CAAgB;AACvE,YAAuD,YAAY,GAAzD,OAAO,sBAAsB,EAAE,YAAY,CAAc;AACnE,YAAoD,SAAS,GAAnD,OAAO,sBAAsB,EAAE,SAAS,CAAW;AAC7D,YAAgD,KAAK,GAA3C,OAAO,sBAAsB,EAAE,KAAK,CAAO;AACrD,YAA2D,YAAY,GAA7D,OAAO,0BAA0B,EAAE,YAAY,CAAc;AACvE,YAA0D,WAAW,GAA3D,OAAO,0BAA0B,EAAE,WAAW,CAAa;AACrE,YAAmE,aAAa,GAAtE;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,WAAW,EAAE,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAC,CAAe;AAWpF;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,EAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAC,EAHlF;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,cAAc,CAAC;IAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,sBAAsB,EAAE,gBAAgB,CAAA;KAAC,EAAE,CAAA;CAG1H,GAFhF;IAAC,SAAS,EAAE,OAAO,sBAAsB,EAAE,oBAAoB,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,CA+B9F"}