semantifold 0.1.1 → 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 (399) hide show
  1. package/README.md +42 -10
  2. package/build/index.d.ts +32 -3
  3. package/build/index.d.ts.map +1 -1
  4. package/build/index.js +99 -4
  5. package/build/src/acceptance.d.ts +32 -0
  6. package/build/src/acceptance.d.ts.map +1 -0
  7. package/build/src/acceptance.js +358 -0
  8. package/build/src/array.d.ts +7 -0
  9. package/build/src/array.d.ts.map +1 -0
  10. package/build/src/array.js +18 -0
  11. package/build/src/artifact-path.d.ts +13 -0
  12. package/build/src/artifact-path.d.ts.map +1 -0
  13. package/build/src/artifact-path.js +30 -0
  14. package/build/src/artifacts.d.ts +7 -0
  15. package/build/src/artifacts.d.ts.map +1 -0
  16. package/build/src/artifacts.js +389 -0
  17. package/build/src/backends/c-runtime.d.ts +3 -0
  18. package/build/src/backends/c-runtime.d.ts.map +1 -0
  19. package/build/src/backends/c-runtime.js +151 -0
  20. package/build/src/backends/c-validation.d.ts +12 -0
  21. package/build/src/backends/c-validation.d.ts.map +1 -0
  22. package/build/src/backends/c-validation.js +85 -0
  23. package/build/src/backends/c.d.ts +31 -0
  24. package/build/src/backends/c.d.ts.map +1 -0
  25. package/build/src/backends/c.js +308 -0
  26. package/build/src/backends/cpp-runtime.d.ts +3 -0
  27. package/build/src/backends/cpp-runtime.d.ts.map +1 -0
  28. package/build/src/backends/cpp-runtime.js +99 -0
  29. package/build/src/backends/cpp-validation.d.ts +9 -0
  30. package/build/src/backends/cpp-validation.d.ts.map +1 -0
  31. package/build/src/backends/cpp-validation.js +74 -0
  32. package/build/src/backends/cpp.d.ts +16 -0
  33. package/build/src/backends/cpp.d.ts.map +1 -0
  34. package/build/src/backends/cpp.js +285 -0
  35. package/build/src/backends/csharp.d.ts +20 -0
  36. package/build/src/backends/csharp.d.ts.map +1 -0
  37. package/build/src/backends/csharp.js +259 -0
  38. package/build/src/backends/go.d.ts +20 -0
  39. package/build/src/backends/go.d.ts.map +1 -0
  40. package/build/src/backends/go.js +374 -0
  41. package/build/src/backends/identifiers.d.ts +12 -0
  42. package/build/src/backends/identifiers.d.ts.map +1 -1
  43. package/build/src/backends/identifiers.js +79 -2
  44. package/build/src/backends/index.d.ts.map +1 -1
  45. package/build/src/backends/index.js +27 -37
  46. package/build/src/backends/native-validation.d.ts +9 -0
  47. package/build/src/backends/native-validation.d.ts.map +1 -0
  48. package/build/src/backends/native-validation.js +59 -0
  49. package/build/src/backends/ordered-expressions.d.ts +74 -0
  50. package/build/src/backends/ordered-expressions.d.ts.map +1 -0
  51. package/build/src/backends/ordered-expressions.js +159 -0
  52. package/build/src/backends/python.d.ts +8 -0
  53. package/build/src/backends/python.d.ts.map +1 -0
  54. package/build/src/backends/python.js +162 -0
  55. package/build/src/backends/scalars.d.ts.map +1 -1
  56. package/build/src/backends/scalars.js +8 -2
  57. package/build/src/backends/shared.d.ts.map +1 -1
  58. package/build/src/backends/shared.js +67 -19
  59. package/build/src/binary-mapping.d.ts +32 -0
  60. package/build/src/binary-mapping.d.ts.map +1 -0
  61. package/build/src/binary-mapping.js +285 -0
  62. package/build/src/diagnostic.d.ts +36 -4
  63. package/build/src/diagnostic.d.ts.map +1 -1
  64. package/build/src/diagnostic.js +42 -3
  65. package/build/src/frontends/c-parser.d.ts +20 -0
  66. package/build/src/frontends/c-parser.d.ts.map +1 -0
  67. package/build/src/frontends/c-parser.js +14 -0
  68. package/build/src/frontends/c.d.ts +220 -0
  69. package/build/src/frontends/c.d.ts.map +1 -0
  70. package/build/src/frontends/c.js +750 -0
  71. package/build/src/frontends/cpp-parser.d.ts +11 -0
  72. package/build/src/frontends/cpp-parser.d.ts.map +1 -0
  73. package/build/src/frontends/cpp-parser.js +15 -0
  74. package/build/src/frontends/cpp.d.ts +227 -0
  75. package/build/src/frontends/cpp.d.ts.map +1 -0
  76. package/build/src/frontends/cpp.js +784 -0
  77. package/build/src/frontends/csharp.d.ts +14 -0
  78. package/build/src/frontends/csharp.d.ts.map +1 -0
  79. package/build/src/frontends/csharp.js +708 -0
  80. package/build/src/frontends/go.d.ts +15 -0
  81. package/build/src/frontends/go.d.ts.map +1 -0
  82. package/build/src/frontends/go.js +712 -0
  83. package/build/src/frontends/index.d.ts.map +1 -1
  84. package/build/src/frontends/index.js +5 -23
  85. package/build/src/frontends/python.d.ts +14 -0
  86. package/build/src/frontends/python.d.ts.map +1 -0
  87. package/build/src/frontends/python.js +615 -0
  88. package/build/src/frontends/scalars.d.ts.map +1 -1
  89. package/build/src/frontends/scalars.js +21 -1
  90. package/build/src/language-registry.d.ts +113 -0
  91. package/build/src/language-registry.d.ts.map +1 -0
  92. package/build/src/language-registry.js +421 -0
  93. package/build/src/mapping.js +3 -2
  94. package/build/src/semantic/location.d.ts +7 -0
  95. package/build/src/semantic/location.d.ts.map +1 -1
  96. package/build/src/semantic/location.js +10 -1
  97. package/build/src/semantic/provenance.js +3 -3
  98. package/build/src/semantic/types.d.ts +399 -2
  99. package/build/src/semantic/types.d.ts.map +1 -1
  100. package/build/src/semantic/types.js +110 -2
  101. package/build/src/subprocess.d.ts +38 -0
  102. package/build/src/subprocess.d.ts.map +1 -0
  103. package/build/src/subprocess.js +233 -0
  104. package/build/src/timeout.d.ts +8 -0
  105. package/build/src/timeout.d.ts.map +1 -0
  106. package/build/src/timeout.js +11 -0
  107. package/build/src/toolchains.d.ts +107 -0
  108. package/build/src/toolchains.d.ts.map +1 -0
  109. package/build/src/toolchains.js +417 -0
  110. package/docs/architecture.md +23 -5
  111. package/docs/c.md +60 -0
  112. package/docs/cpp.md +61 -0
  113. package/docs/goals.md +4 -2
  114. package/docs/language-support.md +46 -6
  115. package/docs/parser-qualification.md +219 -0
  116. package/docs/plans/2026-09-05-standard-library-portability.md +46 -0
  117. package/docs/source-maps.md +38 -5
  118. package/docs/standard-library-portability.md +190 -0
  119. package/docs/testing.md +131 -3
  120. package/index.js +109 -4
  121. package/node_modules/node-addon-api/LICENSE.md +9 -0
  122. package/node_modules/node-addon-api/README.md +95 -0
  123. package/node_modules/node-addon-api/common.gypi +21 -0
  124. package/node_modules/node-addon-api/except.gypi +25 -0
  125. package/node_modules/node-addon-api/index.js +14 -0
  126. package/node_modules/node-addon-api/napi-inl.deprecated.h +186 -0
  127. package/node_modules/node-addon-api/napi-inl.h +7250 -0
  128. package/node_modules/node-addon-api/napi.h +3463 -0
  129. package/node_modules/node-addon-api/node_addon_api.gyp +42 -0
  130. package/node_modules/node-addon-api/node_api.gyp +9 -0
  131. package/node_modules/node-addon-api/noexcept.gypi +26 -0
  132. package/node_modules/node-addon-api/nothing.c +0 -0
  133. package/node_modules/node-addon-api/package-support.json +21 -0
  134. package/node_modules/node-addon-api/package.json +481 -0
  135. package/node_modules/node-addon-api/tools/README.md +73 -0
  136. package/node_modules/node-addon-api/tools/check-napi.js +99 -0
  137. package/node_modules/node-addon-api/tools/clang-format.js +71 -0
  138. package/node_modules/node-addon-api/tools/conversion.js +301 -0
  139. package/node_modules/node-gyp-build/LICENSE +21 -0
  140. package/node_modules/node-gyp-build/README.md +58 -0
  141. package/node_modules/node-gyp-build/SECURITY.md +5 -0
  142. package/node_modules/node-gyp-build/bin.js +84 -0
  143. package/node_modules/node-gyp-build/build-test.js +19 -0
  144. package/node_modules/node-gyp-build/index.js +6 -0
  145. package/node_modules/node-gyp-build/node-gyp-build.js +207 -0
  146. package/node_modules/node-gyp-build/optional.js +7 -0
  147. package/node_modules/node-gyp-build/package.json +43 -0
  148. package/node_modules/semantifold-tree-sitter-legacy-internal/LICENSE +15 -0
  149. package/node_modules/semantifold-tree-sitter-legacy-internal/README.md +7 -0
  150. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/LICENSE +21 -0
  151. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/README.md +90 -0
  152. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/binding.gyp +79 -0
  153. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/index.js +895 -0
  154. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/package.json +62 -0
  155. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/prebuilds/darwin-arm64/tree-sitter.node +0 -0
  156. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/prebuilds/darwin-x64/tree-sitter.node +0 -0
  157. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/prebuilds/linux-x64/tree-sitter.node +0 -0
  158. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/prebuilds/win32-x64/tree-sitter.node +0 -0
  159. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/addon_data.h +47 -0
  160. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/binding.cc +35 -0
  161. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/conversions.cc +140 -0
  162. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/conversions.h +22 -0
  163. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/language.cc +106 -0
  164. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/language.h +17 -0
  165. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/logger.cc +70 -0
  166. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/logger.h +19 -0
  167. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/lookaheaditerator.cc +122 -0
  168. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/lookaheaditerator.h +33 -0
  169. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/node.cc +1056 -0
  170. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/node.h +30 -0
  171. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/parser.cc +298 -0
  172. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/parser.h +35 -0
  173. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/query.cc +383 -0
  174. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/query.h +39 -0
  175. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/tree.cc +307 -0
  176. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/tree.h +45 -0
  177. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/tree_cursor.cc +213 -0
  178. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/tree_cursor.h +52 -0
  179. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/tree-sitter.d.ts +211 -0
  180. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/include/tree_sitter/api.h +1266 -0
  181. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/alloc.c +48 -0
  182. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/alloc.h +41 -0
  183. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/array.h +290 -0
  184. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/atomic.h +68 -0
  185. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/clock.h +146 -0
  186. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/error_costs.h +11 -0
  187. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/get_changed_ranges.c +501 -0
  188. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/get_changed_ranges.h +36 -0
  189. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/host.h +21 -0
  190. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/language.c +221 -0
  191. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/language.h +299 -0
  192. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/length.h +52 -0
  193. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lexer.c +419 -0
  194. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lexer.h +49 -0
  195. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lib.c +14 -0
  196. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/node.c +774 -0
  197. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/parser.c +2151 -0
  198. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/parser.h +230 -0
  199. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/point.h +62 -0
  200. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/query.c +4134 -0
  201. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/reduce_action.h +34 -0
  202. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/reusable_node.h +95 -0
  203. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/stack.c +899 -0
  204. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/stack.h +133 -0
  205. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/subtree.c +1060 -0
  206. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/subtree.h +382 -0
  207. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree.c +165 -0
  208. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree.h +31 -0
  209. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree_cursor.c +714 -0
  210. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree_cursor.h +48 -0
  211. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/ICU_SHA +1 -0
  212. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/LICENSE +414 -0
  213. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/README.md +29 -0
  214. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/ptypes.h +1 -0
  215. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/umachine.h +448 -0
  216. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/urename.h +1 -0
  217. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf.h +1 -0
  218. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf16.h +733 -0
  219. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf8.h +881 -0
  220. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode.h +50 -0
  221. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/stdlib-symbols.txt +23 -0
  222. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/stdlib.c +109 -0
  223. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/wasm-stdlib.h +1294 -0
  224. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm_store.c +1823 -0
  225. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm_store.h +31 -0
  226. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/LICENSE +21 -0
  227. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/README.md +18 -0
  228. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/binding.gyp +29 -0
  229. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/bindings/node/binding.cc +20 -0
  230. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/bindings/node/binding_test.js +9 -0
  231. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/bindings/node/index.d.ts +28 -0
  232. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/bindings/node/index.js +11 -0
  233. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/grammar.js +1470 -0
  234. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/package.json +60 -0
  235. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/prebuilds/darwin-arm64/tree-sitter-c.node +0 -0
  236. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/prebuilds/darwin-x64/tree-sitter-c.node +0 -0
  237. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/prebuilds/linux-arm64/tree-sitter-c.node +0 -0
  238. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/prebuilds/linux-x64/tree-sitter-c.node +0 -0
  239. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/prebuilds/win32-arm64/tree-sitter-c.node +0 -0
  240. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/prebuilds/win32-x64/tree-sitter-c.node +0 -0
  241. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/queries/highlights.scm +81 -0
  242. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/queries/tags.scm +9 -0
  243. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/src/grammar.json +9735 -0
  244. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/src/node-types.json +4614 -0
  245. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/src/parser.c +119615 -0
  246. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/src/tree_sitter/alloc.h +54 -0
  247. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/src/tree_sitter/array.h +290 -0
  248. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/src/tree_sitter/parser.h +266 -0
  249. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/tree-sitter-c.wasm +0 -0
  250. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/tree-sitter.json +43 -0
  251. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/LICENSE +21 -0
  252. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/README.md +22 -0
  253. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/binding.gyp +30 -0
  254. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/bindings/node/binding.cc +20 -0
  255. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/bindings/node/binding_test.js +9 -0
  256. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/bindings/node/index.d.ts +28 -0
  257. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/bindings/node/index.js +11 -0
  258. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/grammar.js +1436 -0
  259. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/package.json +61 -0
  260. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/prebuilds/darwin-arm64/tree-sitter-cpp.node +0 -0
  261. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/prebuilds/darwin-x64/tree-sitter-cpp.node +0 -0
  262. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/prebuilds/linux-arm64/tree-sitter-cpp.node +0 -0
  263. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/prebuilds/linux-x64/tree-sitter-cpp.node +0 -0
  264. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/prebuilds/win32-arm64/tree-sitter-cpp.node +0 -0
  265. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/prebuilds/win32-x64/tree-sitter-cpp.node +0 -0
  266. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/queries/highlights.scm +70 -0
  267. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/queries/injections.scm +3 -0
  268. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/queries/tags.scm +15 -0
  269. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/src/grammar.json +17084 -0
  270. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/src/node-types.json +7997 -0
  271. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/src/parser.c +530368 -0
  272. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/src/scanner.c +148 -0
  273. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/src/tree_sitter/alloc.h +54 -0
  274. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/src/tree_sitter/array.h +290 -0
  275. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/src/tree_sitter/parser.h +266 -0
  276. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/tree-sitter-cpp.wasm +0 -0
  277. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/tree-sitter.json +55 -0
  278. package/node_modules/semantifold-tree-sitter-legacy-internal/package.json +22 -0
  279. package/node_modules/semantifold-tree-sitter-legacy-internal/src/c.js +152 -0
  280. package/node_modules/tree-sitter/LICENSE +21 -0
  281. package/node_modules/tree-sitter/README.md +128 -0
  282. package/node_modules/tree-sitter/binding.gyp +88 -0
  283. package/node_modules/tree-sitter/index.js +950 -0
  284. package/node_modules/tree-sitter/package.json +76 -0
  285. package/node_modules/tree-sitter/prebuilds/darwin-arm64/tree-sitter.node +0 -0
  286. package/node_modules/tree-sitter/prebuilds/darwin-x64/tree-sitter.node +0 -0
  287. package/node_modules/tree-sitter/prebuilds/linux-arm64/tree-sitter.node +0 -0
  288. package/node_modules/tree-sitter/prebuilds/linux-x64/tree-sitter.node +0 -0
  289. package/node_modules/tree-sitter/prebuilds/win32-arm64/tree-sitter.node +0 -0
  290. package/node_modules/tree-sitter/prebuilds/win32-x64/tree-sitter.node +0 -0
  291. package/node_modules/tree-sitter/src/addon_data.h +47 -0
  292. package/node_modules/tree-sitter/src/binding.cc +35 -0
  293. package/node_modules/tree-sitter/src/conversions.cc +140 -0
  294. package/node_modules/tree-sitter/src/conversions.h +22 -0
  295. package/node_modules/tree-sitter/src/language.cc +105 -0
  296. package/node_modules/tree-sitter/src/language.h +17 -0
  297. package/node_modules/tree-sitter/src/logger.cc +70 -0
  298. package/node_modules/tree-sitter/src/logger.h +19 -0
  299. package/node_modules/tree-sitter/src/lookaheaditerator.cc +122 -0
  300. package/node_modules/tree-sitter/src/lookaheaditerator.h +33 -0
  301. package/node_modules/tree-sitter/src/node.cc +1088 -0
  302. package/node_modules/tree-sitter/src/node.h +30 -0
  303. package/node_modules/tree-sitter/src/parser.cc +332 -0
  304. package/node_modules/tree-sitter/src/parser.h +35 -0
  305. package/node_modules/tree-sitter/src/query.cc +425 -0
  306. package/node_modules/tree-sitter/src/query.h +40 -0
  307. package/node_modules/tree-sitter/src/tree.cc +316 -0
  308. package/node_modules/tree-sitter/src/tree.h +45 -0
  309. package/node_modules/tree-sitter/src/tree_cursor.cc +213 -0
  310. package/node_modules/tree-sitter/src/tree_cursor.h +52 -0
  311. package/node_modules/tree-sitter/tree-sitter.d.ts +1083 -0
  312. package/node_modules/tree-sitter/vendor/tree-sitter/lib/include/tree_sitter/api.h +1478 -0
  313. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/alloc.c +48 -0
  314. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/alloc.h +41 -0
  315. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/array.h +291 -0
  316. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/atomic.h +68 -0
  317. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/clock.h +146 -0
  318. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/error_costs.h +11 -0
  319. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/get_changed_ranges.c +523 -0
  320. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/get_changed_ranges.h +36 -0
  321. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/host.h +21 -0
  322. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/language.c +293 -0
  323. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/language.h +293 -0
  324. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/length.h +52 -0
  325. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lexer.c +483 -0
  326. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lexer.h +54 -0
  327. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lib.c +12 -0
  328. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/node.c +875 -0
  329. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/parser.c +2297 -0
  330. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/parser.h +286 -0
  331. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/point.h +48 -0
  332. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/portable/endian.h +241 -0
  333. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/query.c +4347 -0
  334. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/reduce_action.h +34 -0
  335. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/reusable_node.h +95 -0
  336. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/stack.c +912 -0
  337. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/stack.h +133 -0
  338. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/subtree.c +1034 -0
  339. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/subtree.h +399 -0
  340. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree.c +170 -0
  341. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree.h +31 -0
  342. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree_cursor.c +716 -0
  343. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree_cursor.h +48 -0
  344. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/ts_assert.h +11 -0
  345. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/ICU_SHA +1 -0
  346. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/LICENSE +414 -0
  347. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/README.md +29 -0
  348. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/ptypes.h +1 -0
  349. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/umachine.h +448 -0
  350. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/urename.h +1 -0
  351. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf.h +1 -0
  352. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf16.h +733 -0
  353. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf8.h +881 -0
  354. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode.h +75 -0
  355. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/stdlib-symbols.txt +24 -0
  356. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/stdlib.c +137 -0
  357. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/wasm-stdlib.h +1314 -0
  358. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm_store.c +1937 -0
  359. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm_store.h +31 -0
  360. package/package.json +24 -6
  361. package/src/acceptance.js +380 -0
  362. package/src/array.js +19 -0
  363. package/src/artifact-path.js +34 -0
  364. package/src/artifacts.js +420 -0
  365. package/src/backends/c-runtime.js +151 -0
  366. package/src/backends/c-validation.js +83 -0
  367. package/src/backends/c.js +308 -0
  368. package/src/backends/cpp-runtime.js +99 -0
  369. package/src/backends/cpp-validation.js +70 -0
  370. package/src/backends/cpp.js +285 -0
  371. package/src/backends/csharp.js +270 -0
  372. package/src/backends/go.js +383 -0
  373. package/src/backends/identifiers.js +80 -1
  374. package/src/backends/index.js +23 -32
  375. package/src/backends/native-validation.js +64 -0
  376. package/src/backends/ordered-expressions.js +161 -0
  377. package/src/backends/python.js +175 -0
  378. package/src/backends/scalars.js +8 -1
  379. package/src/backends/shared.js +64 -17
  380. package/src/binary-mapping.js +305 -0
  381. package/src/diagnostic.js +34 -2
  382. package/src/frontends/c-parser.js +17 -0
  383. package/src/frontends/c.js +780 -0
  384. package/src/frontends/cpp-parser.js +18 -0
  385. package/src/frontends/cpp.js +816 -0
  386. package/src/frontends/csharp.js +759 -0
  387. package/src/frontends/go.js +770 -0
  388. package/src/frontends/index.js +5 -20
  389. package/src/frontends/python.js +689 -0
  390. package/src/frontends/scalars.js +20 -0
  391. package/src/language-registry.js +454 -0
  392. package/src/mapping.js +2 -1
  393. package/src/semantic/location.js +10 -0
  394. package/src/semantic/provenance.js +2 -2
  395. package/src/semantic/types.js +124 -1
  396. package/src/subprocess.js +232 -0
  397. package/src/timeout.js +12 -0
  398. package/src/toolchains.js +448 -0
  399. package/tsconfig.json +1 -0
@@ -0,0 +1,419 @@
1
+ #include <stdio.h>
2
+ #include "./lexer.h"
3
+ #include "./subtree.h"
4
+ #include "./length.h"
5
+ #include "./unicode.h"
6
+
7
+ #define LOG(message, character) \
8
+ if (self->logger.log) { \
9
+ snprintf( \
10
+ self->debug_buffer, \
11
+ TREE_SITTER_SERIALIZATION_BUFFER_SIZE, \
12
+ 32 <= character && character < 127 ? \
13
+ message " character:'%c'" : \
14
+ message " character:%d", \
15
+ character \
16
+ ); \
17
+ self->logger.log( \
18
+ self->logger.payload, \
19
+ TSLogTypeLex, \
20
+ self->debug_buffer \
21
+ ); \
22
+ }
23
+
24
+ static const int32_t BYTE_ORDER_MARK = 0xFEFF;
25
+
26
+ static const TSRange DEFAULT_RANGE = {
27
+ .start_point = {
28
+ .row = 0,
29
+ .column = 0,
30
+ },
31
+ .end_point = {
32
+ .row = UINT32_MAX,
33
+ .column = UINT32_MAX,
34
+ },
35
+ .start_byte = 0,
36
+ .end_byte = UINT32_MAX
37
+ };
38
+
39
+ // Check if the lexer has reached EOF. This state is stored
40
+ // by setting the lexer's `current_included_range_index` such that
41
+ // it has consumed all of its available ranges.
42
+ static bool ts_lexer__eof(const TSLexer *_self) {
43
+ Lexer *self = (Lexer *)_self;
44
+ return self->current_included_range_index == self->included_range_count;
45
+ }
46
+
47
+ // Clear the currently stored chunk of source code, because the lexer's
48
+ // position has changed.
49
+ static void ts_lexer__clear_chunk(Lexer *self) {
50
+ self->chunk = NULL;
51
+ self->chunk_size = 0;
52
+ self->chunk_start = 0;
53
+ }
54
+
55
+ // Call the lexer's input callback to obtain a new chunk of source code
56
+ // for the current position.
57
+ static void ts_lexer__get_chunk(Lexer *self) {
58
+ self->chunk_start = self->current_position.bytes;
59
+ self->chunk = self->input.read(
60
+ self->input.payload,
61
+ self->current_position.bytes,
62
+ self->current_position.extent,
63
+ &self->chunk_size
64
+ );
65
+ if (!self->chunk_size) {
66
+ self->current_included_range_index = self->included_range_count;
67
+ self->chunk = NULL;
68
+ }
69
+ }
70
+
71
+ // Decode the next unicode character in the current chunk of source code.
72
+ // This assumes that the lexer has already retrieved a chunk of source
73
+ // code that spans the current position.
74
+ static void ts_lexer__get_lookahead(Lexer *self) {
75
+ uint32_t position_in_chunk = self->current_position.bytes - self->chunk_start;
76
+ uint32_t size = self->chunk_size - position_in_chunk;
77
+
78
+ if (size == 0) {
79
+ self->lookahead_size = 1;
80
+ self->data.lookahead = '\0';
81
+ return;
82
+ }
83
+
84
+ const uint8_t *chunk = (const uint8_t *)self->chunk + position_in_chunk;
85
+ UnicodeDecodeFunction decode = self->input.encoding == TSInputEncodingUTF8
86
+ ? ts_decode_utf8
87
+ : ts_decode_utf16;
88
+
89
+ self->lookahead_size = decode(chunk, size, &self->data.lookahead);
90
+
91
+ // If this chunk ended in the middle of a multi-byte character,
92
+ // try again with a fresh chunk.
93
+ if (self->data.lookahead == TS_DECODE_ERROR && size < 4) {
94
+ ts_lexer__get_chunk(self);
95
+ chunk = (const uint8_t *)self->chunk;
96
+ size = self->chunk_size;
97
+ self->lookahead_size = decode(chunk, size, &self->data.lookahead);
98
+ }
99
+
100
+ if (self->data.lookahead == TS_DECODE_ERROR) {
101
+ self->lookahead_size = 1;
102
+ }
103
+ }
104
+
105
+ static void ts_lexer_goto(Lexer *self, Length position) {
106
+ self->current_position = position;
107
+
108
+ // Move to the first valid position at or after the given position.
109
+ bool found_included_range = false;
110
+ for (unsigned i = 0; i < self->included_range_count; i++) {
111
+ TSRange *included_range = &self->included_ranges[i];
112
+ if (
113
+ included_range->end_byte > self->current_position.bytes &&
114
+ included_range->end_byte > included_range->start_byte
115
+ ) {
116
+ if (included_range->start_byte >= self->current_position.bytes) {
117
+ self->current_position = (Length) {
118
+ .bytes = included_range->start_byte,
119
+ .extent = included_range->start_point,
120
+ };
121
+ }
122
+
123
+ self->current_included_range_index = i;
124
+ found_included_range = true;
125
+ break;
126
+ }
127
+ }
128
+
129
+ if (found_included_range) {
130
+ // If the current position is outside of the current chunk of text,
131
+ // then clear out the current chunk of text.
132
+ if (self->chunk && (
133
+ self->current_position.bytes < self->chunk_start ||
134
+ self->current_position.bytes >= self->chunk_start + self->chunk_size
135
+ )) {
136
+ ts_lexer__clear_chunk(self);
137
+ }
138
+
139
+ self->lookahead_size = 0;
140
+ self->data.lookahead = '\0';
141
+ }
142
+
143
+ // If the given position is beyond any of included ranges, move to the EOF
144
+ // state - past the end of the included ranges.
145
+ else {
146
+ self->current_included_range_index = self->included_range_count;
147
+ TSRange *last_included_range = &self->included_ranges[self->included_range_count - 1];
148
+ self->current_position = (Length) {
149
+ .bytes = last_included_range->end_byte,
150
+ .extent = last_included_range->end_point,
151
+ };
152
+ ts_lexer__clear_chunk(self);
153
+ self->lookahead_size = 1;
154
+ self->data.lookahead = '\0';
155
+ }
156
+ }
157
+
158
+ // Intended to be called only from functions that control logging.
159
+ static void ts_lexer__do_advance(Lexer *self, bool skip) {
160
+ if (self->lookahead_size) {
161
+ self->current_position.bytes += self->lookahead_size;
162
+ if (self->data.lookahead == '\n') {
163
+ self->current_position.extent.row++;
164
+ self->current_position.extent.column = 0;
165
+ } else {
166
+ self->current_position.extent.column += self->lookahead_size;
167
+ }
168
+ }
169
+
170
+ const TSRange *current_range = &self->included_ranges[self->current_included_range_index];
171
+ while (
172
+ self->current_position.bytes >= current_range->end_byte ||
173
+ current_range->end_byte == current_range->start_byte
174
+ ) {
175
+ if (self->current_included_range_index < self->included_range_count) {
176
+ self->current_included_range_index++;
177
+ }
178
+ if (self->current_included_range_index < self->included_range_count) {
179
+ current_range++;
180
+ self->current_position = (Length) {
181
+ current_range->start_byte,
182
+ current_range->start_point,
183
+ };
184
+ } else {
185
+ current_range = NULL;
186
+ break;
187
+ }
188
+ }
189
+
190
+ if (skip) self->token_start_position = self->current_position;
191
+
192
+ if (current_range) {
193
+ if (
194
+ self->current_position.bytes < self->chunk_start ||
195
+ self->current_position.bytes >= self->chunk_start + self->chunk_size
196
+ ) {
197
+ ts_lexer__get_chunk(self);
198
+ }
199
+ ts_lexer__get_lookahead(self);
200
+ } else {
201
+ ts_lexer__clear_chunk(self);
202
+ self->data.lookahead = '\0';
203
+ self->lookahead_size = 1;
204
+ }
205
+ }
206
+
207
+ // Advance to the next character in the source code, retrieving a new
208
+ // chunk of source code if needed.
209
+ static void ts_lexer__advance(TSLexer *_self, bool skip) {
210
+ Lexer *self = (Lexer *)_self;
211
+ if (!self->chunk) return;
212
+
213
+ if (skip) {
214
+ LOG("skip", self->data.lookahead)
215
+ } else {
216
+ LOG("consume", self->data.lookahead)
217
+ }
218
+
219
+ ts_lexer__do_advance(self, skip);
220
+ }
221
+
222
+ // Mark that a token match has completed. This can be called multiple
223
+ // times if a longer match is found later.
224
+ static void ts_lexer__mark_end(TSLexer *_self) {
225
+ Lexer *self = (Lexer *)_self;
226
+ if (!ts_lexer__eof(&self->data)) {
227
+ // If the lexer is right at the beginning of included range,
228
+ // then the token should be considered to end at the *end* of the
229
+ // previous included range, rather than here.
230
+ TSRange *current_included_range = &self->included_ranges[
231
+ self->current_included_range_index
232
+ ];
233
+ if (
234
+ self->current_included_range_index > 0 &&
235
+ self->current_position.bytes == current_included_range->start_byte
236
+ ) {
237
+ TSRange *previous_included_range = current_included_range - 1;
238
+ self->token_end_position = (Length) {
239
+ previous_included_range->end_byte,
240
+ previous_included_range->end_point,
241
+ };
242
+ return;
243
+ }
244
+ }
245
+ self->token_end_position = self->current_position;
246
+ }
247
+
248
+ static uint32_t ts_lexer__get_column(TSLexer *_self) {
249
+ Lexer *self = (Lexer *)_self;
250
+
251
+ uint32_t goal_byte = self->current_position.bytes;
252
+
253
+ self->did_get_column = true;
254
+ self->current_position.bytes -= self->current_position.extent.column;
255
+ self->current_position.extent.column = 0;
256
+
257
+ if (self->current_position.bytes < self->chunk_start) {
258
+ ts_lexer__get_chunk(self);
259
+ }
260
+
261
+ uint32_t result = 0;
262
+ if (!ts_lexer__eof(_self)) {
263
+ ts_lexer__get_lookahead(self);
264
+ while (self->current_position.bytes < goal_byte && self->chunk) {
265
+ result++;
266
+ ts_lexer__do_advance(self, false);
267
+ if (ts_lexer__eof(_self)) break;
268
+ }
269
+ }
270
+
271
+ return result;
272
+ }
273
+
274
+ // Is the lexer at a boundary between two disjoint included ranges of
275
+ // source code? This is exposed as an API because some languages' external
276
+ // scanners need to perform custom actions at these boundaries.
277
+ static bool ts_lexer__is_at_included_range_start(const TSLexer *_self) {
278
+ const Lexer *self = (const Lexer *)_self;
279
+ if (self->current_included_range_index < self->included_range_count) {
280
+ TSRange *current_range = &self->included_ranges[self->current_included_range_index];
281
+ return self->current_position.bytes == current_range->start_byte;
282
+ } else {
283
+ return false;
284
+ }
285
+ }
286
+
287
+ void ts_lexer_init(Lexer *self) {
288
+ *self = (Lexer) {
289
+ .data = {
290
+ // The lexer's methods are stored as struct fields so that generated
291
+ // parsers can call them without needing to be linked against this
292
+ // library.
293
+ .advance = ts_lexer__advance,
294
+ .mark_end = ts_lexer__mark_end,
295
+ .get_column = ts_lexer__get_column,
296
+ .is_at_included_range_start = ts_lexer__is_at_included_range_start,
297
+ .eof = ts_lexer__eof,
298
+ .lookahead = 0,
299
+ .result_symbol = 0,
300
+ },
301
+ .chunk = NULL,
302
+ .chunk_size = 0,
303
+ .chunk_start = 0,
304
+ .current_position = {0, {0, 0}},
305
+ .logger = {
306
+ .payload = NULL,
307
+ .log = NULL
308
+ },
309
+ .included_ranges = NULL,
310
+ .included_range_count = 0,
311
+ .current_included_range_index = 0,
312
+ };
313
+ ts_lexer_set_included_ranges(self, NULL, 0);
314
+ }
315
+
316
+ void ts_lexer_delete(Lexer *self) {
317
+ ts_free(self->included_ranges);
318
+ }
319
+
320
+ void ts_lexer_set_input(Lexer *self, TSInput input) {
321
+ self->input = input;
322
+ ts_lexer__clear_chunk(self);
323
+ ts_lexer_goto(self, self->current_position);
324
+ }
325
+
326
+ // Move the lexer to the given position. This doesn't do any work
327
+ // if the parser is already at the given position.
328
+ void ts_lexer_reset(Lexer *self, Length position) {
329
+ if (position.bytes != self->current_position.bytes) {
330
+ ts_lexer_goto(self, position);
331
+ }
332
+ }
333
+
334
+ void ts_lexer_start(Lexer *self) {
335
+ self->token_start_position = self->current_position;
336
+ self->token_end_position = LENGTH_UNDEFINED;
337
+ self->data.result_symbol = 0;
338
+ self->did_get_column = false;
339
+ if (!ts_lexer__eof(&self->data)) {
340
+ if (!self->chunk_size) ts_lexer__get_chunk(self);
341
+ if (!self->lookahead_size) ts_lexer__get_lookahead(self);
342
+ if (
343
+ self->current_position.bytes == 0 &&
344
+ self->data.lookahead == BYTE_ORDER_MARK
345
+ ) ts_lexer__advance(&self->data, true);
346
+ }
347
+ }
348
+
349
+ void ts_lexer_finish(Lexer *self, uint32_t *lookahead_end_byte) {
350
+ if (length_is_undefined(self->token_end_position)) {
351
+ ts_lexer__mark_end(&self->data);
352
+ }
353
+
354
+ // If the token ended at an included range boundary, then its end position
355
+ // will have been reset to the end of the preceding range. Reset the start
356
+ // position to match.
357
+ if (self->token_end_position.bytes < self->token_start_position.bytes) {
358
+ self->token_start_position = self->token_end_position;
359
+ }
360
+
361
+ uint32_t current_lookahead_end_byte = self->current_position.bytes + 1;
362
+
363
+ // In order to determine that a byte sequence is invalid UTF8 or UTF16,
364
+ // the character decoding algorithm may have looked at the following byte.
365
+ // Therefore, the next byte *after* the current (invalid) character
366
+ // affects the interpretation of the current character.
367
+ if (self->data.lookahead == TS_DECODE_ERROR) {
368
+ current_lookahead_end_byte++;
369
+ }
370
+
371
+ if (current_lookahead_end_byte > *lookahead_end_byte) {
372
+ *lookahead_end_byte = current_lookahead_end_byte;
373
+ }
374
+ }
375
+
376
+ void ts_lexer_advance_to_end(Lexer *self) {
377
+ while (self->chunk) {
378
+ ts_lexer__advance(&self->data, false);
379
+ }
380
+ }
381
+
382
+ void ts_lexer_mark_end(Lexer *self) {
383
+ ts_lexer__mark_end(&self->data);
384
+ }
385
+
386
+ bool ts_lexer_set_included_ranges(
387
+ Lexer *self,
388
+ const TSRange *ranges,
389
+ uint32_t count
390
+ ) {
391
+ if (count == 0 || !ranges) {
392
+ ranges = &DEFAULT_RANGE;
393
+ count = 1;
394
+ } else {
395
+ uint32_t previous_byte = 0;
396
+ for (unsigned i = 0; i < count; i++) {
397
+ const TSRange *range = &ranges[i];
398
+ if (
399
+ range->start_byte < previous_byte ||
400
+ range->end_byte < range->start_byte
401
+ ) return false;
402
+ previous_byte = range->end_byte;
403
+ }
404
+ }
405
+
406
+ size_t size = count * sizeof(TSRange);
407
+ self->included_ranges = ts_realloc(self->included_ranges, size);
408
+ memcpy(self->included_ranges, ranges, size);
409
+ self->included_range_count = count;
410
+ ts_lexer_goto(self, self->current_position);
411
+ return true;
412
+ }
413
+
414
+ TSRange *ts_lexer_included_ranges(const Lexer *self, uint32_t *count) {
415
+ *count = self->included_range_count;
416
+ return self->included_ranges;
417
+ }
418
+
419
+ #undef LOG
@@ -0,0 +1,49 @@
1
+ #ifndef TREE_SITTER_LEXER_H_
2
+ #define TREE_SITTER_LEXER_H_
3
+
4
+ #ifdef __cplusplus
5
+ extern "C" {
6
+ #endif
7
+
8
+ #include "./length.h"
9
+ #include "./subtree.h"
10
+ #include "tree_sitter/api.h"
11
+ #include "./parser.h"
12
+
13
+ typedef struct {
14
+ TSLexer data;
15
+ Length current_position;
16
+ Length token_start_position;
17
+ Length token_end_position;
18
+
19
+ TSRange *included_ranges;
20
+ const char *chunk;
21
+ TSInput input;
22
+ TSLogger logger;
23
+
24
+ uint32_t included_range_count;
25
+ uint32_t current_included_range_index;
26
+ uint32_t chunk_start;
27
+ uint32_t chunk_size;
28
+ uint32_t lookahead_size;
29
+ bool did_get_column;
30
+
31
+ char debug_buffer[TREE_SITTER_SERIALIZATION_BUFFER_SIZE];
32
+ } Lexer;
33
+
34
+ void ts_lexer_init(Lexer *);
35
+ void ts_lexer_delete(Lexer *);
36
+ void ts_lexer_set_input(Lexer *, TSInput);
37
+ void ts_lexer_reset(Lexer *, Length);
38
+ void ts_lexer_start(Lexer *);
39
+ void ts_lexer_finish(Lexer *, uint32_t *);
40
+ void ts_lexer_advance_to_end(Lexer *);
41
+ void ts_lexer_mark_end(Lexer *);
42
+ bool ts_lexer_set_included_ranges(Lexer *self, const TSRange *ranges, uint32_t count);
43
+ TSRange *ts_lexer_included_ranges(const Lexer *self, uint32_t *count);
44
+
45
+ #ifdef __cplusplus
46
+ }
47
+ #endif
48
+
49
+ #endif // TREE_SITTER_LEXER_H_
@@ -0,0 +1,14 @@
1
+ #define _POSIX_C_SOURCE 200112L
2
+
3
+ #include "./alloc.c"
4
+ #include "./get_changed_ranges.c"
5
+ #include "./language.c"
6
+ #include "./lexer.c"
7
+ #include "./node.c"
8
+ #include "./parser.c"
9
+ #include "./query.c"
10
+ #include "./stack.c"
11
+ #include "./subtree.c"
12
+ #include "./tree_cursor.c"
13
+ #include "./tree.c"
14
+ #include "./wasm_store.c"