@mpeggroup/mpeg-sdl-parser 4.0.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 (375) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +337 -0
  3. package/bun.lock +65 -0
  4. package/dist/index.js +11829 -0
  5. package/grammar/sdl.ebnf.grammar +399 -0
  6. package/grammar/sdl.lezer.grammar +629 -0
  7. package/index.ts +83 -0
  8. package/package.json +61 -0
  9. package/src/analyser/checks/check-array-definition.ts +90 -0
  10. package/src/analyser/checks/check-array-element-access.ts +31 -0
  11. package/src/analyser/checks/check-class-declaration.ts +417 -0
  12. package/src/analyser/checks/check-computed-array-definition.ts +44 -0
  13. package/src/analyser/checks/check-computed-elementary-type-definition.ts +45 -0
  14. package/src/analyser/checks/check-elementary-type-definition.ts +167 -0
  15. package/src/analyser/checks/check-expression-binary.ts +242 -0
  16. package/src/analyser/checks/check-expression-lengthof.ts +34 -0
  17. package/src/analyser/checks/check-expression-unary.ts +166 -0
  18. package/src/analyser/checks/check-identifier.ts +71 -0
  19. package/src/analyser/checks/check-if-statement.ts +164 -0
  20. package/src/analyser/checks/check-map-declaration.ts +180 -0
  21. package/src/analyser/checks/check-map-definition.ts +118 -0
  22. package/src/analyser/checks/check-number-literal-float.ts +28 -0
  23. package/src/analyser/checks/check-parameter-list.ts +42 -0
  24. package/src/analyser/checks/check-specification.ts +53 -0
  25. package/src/analyser/checks/check-switch-statement.ts +206 -0
  26. package/src/analyser/checks/check.ts +20 -0
  27. package/src/analyser/create-sdl-analyser.ts +85 -0
  28. package/src/analyser/node-handler/abstract-analysis-node-handler.ts +626 -0
  29. package/src/analyser/node-handler/build-symbol-table-node-handler.ts +649 -0
  30. package/src/analyser/node-handler/specific-check-node-handler.ts +46 -0
  31. package/src/analyser/node-handler/validate-scope-node-handler.ts +290 -0
  32. package/src/analyser/node-handler/validate-type-node-handler.ts +497 -0
  33. package/src/analyser/sdl-analyser.ts +119 -0
  34. package/src/analyser/symbol-table.ts +388 -0
  35. package/src/analyser/util/symbol-table-utils.ts +458 -0
  36. package/src/analyser/util/type-utils.ts +238 -0
  37. package/src/ast/build/consume/consume-abstract-node.ts +199 -0
  38. package/src/ast/build/consume/consume-ast-node.ts +400 -0
  39. package/src/ast/build/consume/consume-primitive.ts +59 -0
  40. package/src/ast/build/consume/consume-trivia.ts +96 -0
  41. package/src/ast/build/consume/consume-white-space-and-missing-errors.ts +27 -0
  42. package/src/ast/build/node/build-aggregate-output-value.ts +57 -0
  43. package/src/ast/build/node/build-aligned-modifier.ts +99 -0
  44. package/src/ast/build/node/build-array-definition.ts +131 -0
  45. package/src/ast/build/node/build-array-element-access.ts +45 -0
  46. package/src/ast/build/node/build-base64-string-literal.ts +41 -0
  47. package/src/ast/build/node/build-binary-expression.ts +113 -0
  48. package/src/ast/build/node/build-binary-literal.ts +37 -0
  49. package/src/ast/build/node/build-bit-modifier.ts +86 -0
  50. package/src/ast/build/node/build-case-clause.ts +101 -0
  51. package/src/ast/build/node/build-class-declaration.ts +124 -0
  52. package/src/ast/build/node/build-class-definition.ts +56 -0
  53. package/src/ast/build/node/build-class-id-range.ts +32 -0
  54. package/src/ast/build/node/build-class-id.ts +19 -0
  55. package/src/ast/build/node/build-class-member-access.ts +27 -0
  56. package/src/ast/build/node/build-compound-statement.ts +33 -0
  57. package/src/ast/build/node/build-computed-array-definition.ts +53 -0
  58. package/src/ast/build/node/build-computed-elementary-type-definition.ts +100 -0
  59. package/src/ast/build/node/build-decimal-literal.ts +15 -0
  60. package/src/ast/build/node/build-default-clause.ts +76 -0
  61. package/src/ast/build/node/build-do-statement.ts +71 -0
  62. package/src/ast/build/node/build-elementary-type-definition.ts +164 -0
  63. package/src/ast/build/node/build-elementary-type-output-value.ts +25 -0
  64. package/src/ast/build/node/build-elementary-type.ts +36 -0
  65. package/src/ast/build/node/build-expandable-modifier.ts +68 -0
  66. package/src/ast/build/node/build-explicit-array-dimension.ts +37 -0
  67. package/src/ast/build/node/build-expression-statement.ts +31 -0
  68. package/src/ast/build/node/build-extended-class-id-range.ts +27 -0
  69. package/src/ast/build/node/build-extends-modifier.ts +41 -0
  70. package/src/ast/build/node/build-floating-point-literal.ts +15 -0
  71. package/src/ast/build/node/build-for-statement.ts +117 -0
  72. package/src/ast/build/node/build-hexadecimal-literal.ts +38 -0
  73. package/src/ast/build/node/build-identifier.ts +8 -0
  74. package/src/ast/build/node/build-if-statement.ts +82 -0
  75. package/src/ast/build/node/build-implicit-array-dimension.ts +78 -0
  76. package/src/ast/build/node/build-integer-literal.ts +15 -0
  77. package/src/ast/build/node/build-length-attribute.ts +48 -0
  78. package/src/ast/build/node/build-lengthof-expression.ts +45 -0
  79. package/src/ast/build/node/build-map-declaration.ts +110 -0
  80. package/src/ast/build/node/build-map-definition.ts +103 -0
  81. package/src/ast/build/node/build-map-entry.ts +33 -0
  82. package/src/ast/build/node/build-missing-error.ts +10 -0
  83. package/src/ast/build/node/build-multiple-character-literal.ts +65 -0
  84. package/src/ast/build/node/build-parameter-list.ts +50 -0
  85. package/src/ast/build/node/build-parameter-value-list.ts +54 -0
  86. package/src/ast/build/node/build-parameter.ts +47 -0
  87. package/src/ast/build/node/build-partial-array-dimension.ts +55 -0
  88. package/src/ast/build/node/build-specification.ts +24 -0
  89. package/src/ast/build/node/build-string-definition.ts +106 -0
  90. package/src/ast/build/node/build-switch-statement.ts +84 -0
  91. package/src/ast/build/node/build-token.ts +26 -0
  92. package/src/ast/build/node/build-unary-expression.ts +109 -0
  93. package/src/ast/build/node/build-unexpected-error.ts +14 -0
  94. package/src/ast/build/node/build-utf-string-literal.ts +110 -0
  95. package/src/ast/build/node/build-while-statement.ts +55 -0
  96. package/src/ast/build/util/array-dimension-kind-by-token-type-id-map.ts +167 -0
  97. package/src/ast/build/util/binary-operator-kind-by-token-type-id-map.ts +152 -0
  98. package/src/ast/build/util/build-context.ts +36 -0
  99. package/src/ast/build/util/class-id-kind-by-token-type-id-map.ts +160 -0
  100. package/src/ast/build/util/expression-kind-by-token-type-id-map.ts +168 -0
  101. package/src/ast/build/util/fetch-node.ts +433 -0
  102. package/src/ast/build/util/node-kind-by-token-type-id-map.ts +202 -0
  103. package/src/ast/build/util/statement-kind-by-token-type-id-map.ts +210 -0
  104. package/src/ast/build/util/string-literal-kind-by-token-type-id-map.ts +162 -0
  105. package/src/ast/build/util/token-kind-by-token-type-id-map.ts +337 -0
  106. package/src/ast/build-ast.ts +114 -0
  107. package/src/ast/node/abstract-array-definition.ts +17 -0
  108. package/src/ast/node/abstract-array-dimension.ts +20 -0
  109. package/src/ast/node/abstract-class-id.ts +13 -0
  110. package/src/ast/node/abstract-composite-node.ts +58 -0
  111. package/src/ast/node/abstract-elementary-type-definition.ts +29 -0
  112. package/src/ast/node/abstract-expression.ts +13 -0
  113. package/src/ast/node/abstract-leaf-node.ts +10 -0
  114. package/src/ast/node/abstract-node.ts +16 -0
  115. package/src/ast/node/abstract-statement.ts +13 -0
  116. package/src/ast/node/aggregate-output-value.ts +28 -0
  117. package/src/ast/node/aligned-modifier.ts +21 -0
  118. package/src/ast/node/array-definition.ts +44 -0
  119. package/src/ast/node/array-element-access.ts +24 -0
  120. package/src/ast/node/binary-expression.ts +28 -0
  121. package/src/ast/node/bit-modifier.ts +24 -0
  122. package/src/ast/node/case-clause.ts +30 -0
  123. package/src/ast/node/class-declaration.ts +39 -0
  124. package/src/ast/node/class-definition.ts +23 -0
  125. package/src/ast/node/class-id-range.ts +17 -0
  126. package/src/ast/node/class-id.ts +14 -0
  127. package/src/ast/node/class-member-access.ts +19 -0
  128. package/src/ast/node/compound-statement.ts +19 -0
  129. package/src/ast/node/computed-array-definition.ts +26 -0
  130. package/src/ast/node/computed-elementary-type-definition.ts +34 -0
  131. package/src/ast/node/default-clause.ts +26 -0
  132. package/src/ast/node/do-statement.ts +28 -0
  133. package/src/ast/node/elementary-type-definition.ts +49 -0
  134. package/src/ast/node/elementary-type-output-value.ts +19 -0
  135. package/src/ast/node/elementary-type.ts +18 -0
  136. package/src/ast/node/enum/array-dimension-kind.ts +11 -0
  137. package/src/ast/node/enum/binary-operator-kind.ts +41 -0
  138. package/src/ast/node/enum/class-id-kind.ts +12 -0
  139. package/src/ast/node/enum/elementary-type-kind.ts +13 -0
  140. package/src/ast/node/enum/expression-kind.ts +11 -0
  141. package/src/ast/node/enum/node-kind.ts +57 -0
  142. package/src/ast/node/enum/number-literal-kind.ts +17 -0
  143. package/src/ast/node/enum/statement-kind.ts +37 -0
  144. package/src/ast/node/enum/string-literal-kind.ts +13 -0
  145. package/src/ast/node/enum/string-variable-kind.ts +25 -0
  146. package/src/ast/node/enum/token-kind.ts +87 -0
  147. package/src/ast/node/expandable-modifier.ts +21 -0
  148. package/src/ast/node/explicit-array-dimension.ts +26 -0
  149. package/src/ast/node/expression-statement.ts +23 -0
  150. package/src/ast/node/extended-class-id-range.ts +20 -0
  151. package/src/ast/node/extends-modifier.ts +21 -0
  152. package/src/ast/node/for-statement.ts +29 -0
  153. package/src/ast/node/identifier.ts +12 -0
  154. package/src/ast/node/if-statement.ts +28 -0
  155. package/src/ast/node/implicit-array-dimension.ts +34 -0
  156. package/src/ast/node/length-attribute.ts +24 -0
  157. package/src/ast/node/length-of-expression.ts +21 -0
  158. package/src/ast/node/map-declaration.ts +34 -0
  159. package/src/ast/node/map-definition.ts +27 -0
  160. package/src/ast/node/map-entry.ts +18 -0
  161. package/src/ast/node/missing-error.ts +9 -0
  162. package/src/ast/node/number-literal.ts +18 -0
  163. package/src/ast/node/parameter-list.ts +25 -0
  164. package/src/ast/node/parameter-value-list.ts +29 -0
  165. package/src/ast/node/parameter.ts +20 -0
  166. package/src/ast/node/partial-array-dimension.ts +28 -0
  167. package/src/ast/node/specification.ts +21 -0
  168. package/src/ast/node/string-definition.ts +28 -0
  169. package/src/ast/node/string-literal.ts +21 -0
  170. package/src/ast/node/switch-statement.ts +32 -0
  171. package/src/ast/node/token.ts +20 -0
  172. package/src/ast/node/trivia.ts +13 -0
  173. package/src/ast/node/unary-expression.ts +31 -0
  174. package/src/ast/node/unexpected-error.ts +12 -0
  175. package/src/ast/node/while-statement.ts +26 -0
  176. package/src/ast/util/types.ts +138 -0
  177. package/src/ast/visitor/node-handler.ts +15 -0
  178. package/src/ast/visitor/node-visitor.ts +13 -0
  179. package/src/ast/visitor/traversing-visitor.ts +69 -0
  180. package/src/completion/completion-rules.ts +447 -0
  181. package/src/completion/get-potential-syntactic-tokens.ts +54 -0
  182. package/src/completion/get-potential-token-type-ids.ts +116 -0
  183. package/src/completion/hierarchical-map.ts +43 -0
  184. package/src/completion/rules/abstract-types.ts +174 -0
  185. package/src/completion/rules/aggregate-output-value-rules.ts +48 -0
  186. package/src/completion/rules/aligned-modifier-rules.ts +45 -0
  187. package/src/completion/rules/array-definition-rules.ts +87 -0
  188. package/src/completion/rules/array-element-access-rules.ts +22 -0
  189. package/src/completion/rules/assignment-expression-rules.ts +19 -0
  190. package/src/completion/rules/binary-expression-rules.ts +23 -0
  191. package/src/completion/rules/bit-modifier-rules.ts +25 -0
  192. package/src/completion/rules/case-clause-rules.ts +39 -0
  193. package/src/completion/rules/class-declaration-rules.ts +81 -0
  194. package/src/completion/rules/class-definition-rules.ts +28 -0
  195. package/src/completion/rules/class-id-range-rules.ts +17 -0
  196. package/src/completion/rules/class-id-rules.ts +9 -0
  197. package/src/completion/rules/class-member-access-rules.ts +7 -0
  198. package/src/completion/rules/compound-statement-rules.ts +25 -0
  199. package/src/completion/rules/computed-array-definition-rules.ts +25 -0
  200. package/src/completion/rules/computed-elementary-type-rules.ts +44 -0
  201. package/src/completion/rules/default-clause-rules.ts +23 -0
  202. package/src/completion/rules/do-statement-rules.ts +38 -0
  203. package/src/completion/rules/elementary-type-definition-rules.ts +62 -0
  204. package/src/completion/rules/elementary-type-output-value-rules.ts +13 -0
  205. package/src/completion/rules/elementary-type-rules.ts +18 -0
  206. package/src/completion/rules/expandable-modifier-rules.ts +21 -0
  207. package/src/completion/rules/explicit-array-dimension-rules.ts +22 -0
  208. package/src/completion/rules/expression-statement-rules.ts +22 -0
  209. package/src/completion/rules/extended-class-id-range-rules.ts +17 -0
  210. package/src/completion/rules/extends-modifier-rules.ts +17 -0
  211. package/src/completion/rules/for-statement-rules.ts +51 -0
  212. package/src/completion/rules/if-statement-rules.ts +42 -0
  213. package/src/completion/rules/implicit-array-dimension-rules.ts +21 -0
  214. package/src/completion/rules/length-attribute-rules.ts +19 -0
  215. package/src/completion/rules/lengthof-expression-rules.ts +23 -0
  216. package/src/completion/rules/map-declaration-rules.ts +45 -0
  217. package/src/completion/rules/map-definition-rules.ts +46 -0
  218. package/src/completion/rules/map-entry-rules.ts +17 -0
  219. package/src/completion/rules/parameter-list-rules.ts +21 -0
  220. package/src/completion/rules/parameter-rules.ts +17 -0
  221. package/src/completion/rules/parameter-value-list-rules.ts +27 -0
  222. package/src/completion/rules/partial-array-dimension-rules.ts +33 -0
  223. package/src/completion/rules/specification-rules.ts +37 -0
  224. package/src/completion/rules/string-definition-rules.ts +103 -0
  225. package/src/completion/rules/switch-statement-rules.ts +50 -0
  226. package/src/completion/rules/unary-expression-rules.ts +41 -0
  227. package/src/completion/rules/utf-string-literal-rules.ts +17 -0
  228. package/src/completion/rules/while-statement-rules.ts +38 -0
  229. package/src/lezer/context-tracker.ts +45 -0
  230. package/src/lezer/create-sdl-parser.ts +88 -0
  231. package/src/lezer/create-syntax-error-from-text-and-cursor.ts +110 -0
  232. package/src/lezer/create-syntax-error-from-text-and-position.ts +36 -0
  233. package/src/lezer/parser.terms.ts +129 -0
  234. package/src/lezer/parser.ts +63 -0
  235. package/src/lezer/props/fold-node-prop-source.ts +27 -0
  236. package/src/lezer/props/primitive-node-prop-source.ts +19 -0
  237. package/src/lezer/props/style-tags-node-prop-source.ts +188 -0
  238. package/src/lezer/props/syntactic-token-node-prop-source.ts +298 -0
  239. package/src/lezer/sdl-string-input.ts +46 -0
  240. package/src/location.ts +13 -0
  241. package/src/parse-helper.ts +93 -0
  242. package/src/prettier/prettier-plugin-sdl.ts +89 -0
  243. package/src/prettier/print-abstract-array-dimension.ts +84 -0
  244. package/src/prettier/print-abstract-class-id.ts +53 -0
  245. package/src/prettier/print-abstract-expression.ts +168 -0
  246. package/src/prettier/print-abstract-node.ts +224 -0
  247. package/src/prettier/print-abstract-statement.ts +124 -0
  248. package/src/prettier/print-aggregate-output-value.ts +35 -0
  249. package/src/prettier/print-aligned-modifier.ts +50 -0
  250. package/src/prettier/print-array-definition.ts +95 -0
  251. package/src/prettier/print-array-element-access.ts +14 -0
  252. package/src/prettier/print-bit-modifier.ts +48 -0
  253. package/src/prettier/print-case-clause.ts +58 -0
  254. package/src/prettier/print-class-declaration.ts +99 -0
  255. package/src/prettier/print-class-definition.ts +44 -0
  256. package/src/prettier/print-class-member-access.ts +13 -0
  257. package/src/prettier/print-computed-array-definition.ts +33 -0
  258. package/src/prettier/print-computed-elementary-type-definition.ts +60 -0
  259. package/src/prettier/print-default-clause.ts +39 -0
  260. package/src/prettier/print-do-statement.ts +31 -0
  261. package/src/prettier/print-elementary-type-definition.ts +108 -0
  262. package/src/prettier/print-elementary-type-output-value.ts +13 -0
  263. package/src/prettier/print-elementary-type.ts +28 -0
  264. package/src/prettier/print-expandable-modifier.ts +41 -0
  265. package/src/prettier/print-extends-modifier.ts +29 -0
  266. package/src/prettier/print-for-statement.ts +64 -0
  267. package/src/prettier/print-identifier.ts +10 -0
  268. package/src/prettier/print-if-statement.ts +76 -0
  269. package/src/prettier/print-length-attribute.ts +14 -0
  270. package/src/prettier/print-map-declaration.ts +75 -0
  271. package/src/prettier/print-map-definition.ts +67 -0
  272. package/src/prettier/print-map-entry.ts +22 -0
  273. package/src/prettier/print-number-literal.ts +84 -0
  274. package/src/prettier/print-parameter-list.ts +20 -0
  275. package/src/prettier/print-parameter-value-list.ts +20 -0
  276. package/src/prettier/print-parameter.ts +34 -0
  277. package/src/prettier/print-specification.ts +51 -0
  278. package/src/prettier/print-string-definition.ts +114 -0
  279. package/src/prettier/print-string-literal.ts +57 -0
  280. package/src/prettier/print-switch-statement.ts +46 -0
  281. package/src/prettier/print-token.ts +7 -0
  282. package/src/prettier/print-unexpected-error.ts +10 -0
  283. package/src/prettier/print-while-statement.ts +26 -0
  284. package/src/prettier/util/print-utils.ts +607 -0
  285. package/src/prettier/util/types.ts +40 -0
  286. package/src/scanner-error.ts +65 -0
  287. package/src/util/location-utils.ts +16 -0
  288. package/src/util/logger.ts +165 -0
  289. package/tests/analyser/create-sdl-analyser.test.ts +54 -0
  290. package/tests/analyser/get-sdl-analyser-test-scenarios.ts +80 -0
  291. package/tests/analyser/sdl-analyser-scenarios.test.ts +67 -0
  292. package/tests/analyser/semantic-error-scenarios.test.ts +40 -0
  293. package/tests/analyser/symbol-table.test.ts +188 -0
  294. package/tests/analyser/test-cases/array_definition.txt +50 -0
  295. package/tests/analyser/test-cases/class_declaration.txt +112 -0
  296. package/tests/analyser/test-cases/class_definition.txt +60 -0
  297. package/tests/analyser/test-cases/compound_statement.txt +63 -0
  298. package/tests/analyser/test-cases/computed_array_definition.txt +12 -0
  299. package/tests/analyser/test-cases/computed_elementary_type_definition.txt +39 -0
  300. package/tests/analyser/test-cases/do_statement.txt +16 -0
  301. package/tests/analyser/test-cases/elementary_type_definition.txt +58 -0
  302. package/tests/analyser/test-cases/expression.txt +159 -0
  303. package/tests/analyser/test-cases/for_statement.txt +55 -0
  304. package/tests/analyser/test-cases/if_statement.txt +57 -0
  305. package/tests/analyser/test-cases/map_declaration.txt +89 -0
  306. package/tests/analyser/test-cases/map_definition.txt +35 -0
  307. package/tests/analyser/test-cases/number_literal.txt +31 -0
  308. package/tests/analyser/test-cases/parameter_list.txt +16 -0
  309. package/tests/analyser/test-cases/scopes.txt +239 -0
  310. package/tests/analyser/test-cases/specification.txt +28 -0
  311. package/tests/analyser/test-cases/string_definition.txt +40 -0
  312. package/tests/analyser/test-cases/switch_statement.txt +96 -0
  313. package/tests/analyser/test-cases/while_statement.txt +16 -0
  314. package/tests/analyser/util/symbol-table-utils.test.ts +65 -0
  315. package/tests/ast/__snapshots__/build-ast.test.ts.snap +38897 -0
  316. package/tests/ast/build-ast.test.ts +463 -0
  317. package/tests/ast/visitor/traversing-visitor.test.ts +36 -0
  318. package/tests/completion/get-potential-syntactic-tokens.test.ts +89 -0
  319. package/tests/completion/get-potential-token-type-ids.test.ts +76 -0
  320. package/tests/completion/test-potential-syntactic-tokens-scenario.ts +24 -0
  321. package/tests/completion/test-potential-token-type-ids-scenario.ts +33 -0
  322. package/tests/fixtures/history-recording-node-handler.ts +232 -0
  323. package/tests/lezer/create-parse-error-from-text-and-position.test.ts +129 -0
  324. package/tests/lezer/create-sdl-parser.test.ts +15 -0
  325. package/tests/lezer/sdl-parser-scenarios.test.ts +24 -0
  326. package/tests/lezer/sdl-string-input.test.ts +12 -0
  327. package/tests/lezer/syntax-error-scenarios.test.ts +114 -0
  328. package/tests/lezer/test-cases/array_definition.txt +109 -0
  329. package/tests/lezer/test-cases/class_declaration.txt +141 -0
  330. package/tests/lezer/test-cases/class_definition.txt +89 -0
  331. package/tests/lezer/test-cases/comment.txt +335 -0
  332. package/tests/lezer/test-cases/compound_statement.txt +109 -0
  333. package/tests/lezer/test-cases/computed_array_definition.txt +33 -0
  334. package/tests/lezer/test-cases/computed_elementary_type_definition.txt +59 -0
  335. package/tests/lezer/test-cases/do_statement.txt +48 -0
  336. package/tests/lezer/test-cases/elementary_type_definition.txt +158 -0
  337. package/tests/lezer/test-cases/expression.txt +1203 -0
  338. package/tests/lezer/test-cases/for_statement.txt +183 -0
  339. package/tests/lezer/test-cases/if_statement.txt +183 -0
  340. package/tests/lezer/test-cases/invalid.txt +97 -0
  341. package/tests/lezer/test-cases/map_declaration.txt +152 -0
  342. package/tests/lezer/test-cases/map_definition.txt +59 -0
  343. package/tests/lezer/test-cases/number_literal.txt +273 -0
  344. package/tests/lezer/test-cases/specification.txt +38 -0
  345. package/tests/lezer/test-cases/string_definition.txt +263 -0
  346. package/tests/lezer/test-cases/string_literal.txt +303 -0
  347. package/tests/lezer/test-cases/switch_statement.txt +407 -0
  348. package/tests/lezer/test-cases/while_statement.txt +45 -0
  349. package/tests/parse-helper.test.ts +361 -0
  350. package/tests/prettier/__snapshots__/prettier-plugin-sdl.test.ts.snap +127 -0
  351. package/tests/prettier/prettier-plugin-sdl.test.ts +58 -0
  352. package/tests/prettier/print-array.test.ts +29 -0
  353. package/tests/prettier/print-class.test.ts +15 -0
  354. package/tests/prettier/print-do.test.ts +25 -0
  355. package/tests/prettier/print-elementary-type.test.ts +62 -0
  356. package/tests/prettier/print-error.test.ts +40 -0
  357. package/tests/prettier/print-expression.test.ts +17 -0
  358. package/tests/prettier/print-for.test.ts +23 -0
  359. package/tests/prettier/print-if.test.ts +71 -0
  360. package/tests/prettier/print-number-literal.test.ts +28 -0
  361. package/tests/prettier/print-specification.test.ts +54 -0
  362. package/tests/prettier/print-string.test.ts +36 -0
  363. package/tests/prettier/print-switch.test.ts +69 -0
  364. package/tests/prettier/print-while.test.ts +23 -0
  365. package/tests/prettier/test-prettier-scenario.ts +41 -0
  366. package/tests/prettier/util/print-utils.test.ts +665 -0
  367. package/tests/prettier/util/types.test.ts +38 -0
  368. package/tests/sample-specifications/invalid.sdl +24 -0
  369. package/tests/sample-specifications/prettified-invalid.sdl +28 -0
  370. package/tests/sample-specifications/prettified-various-elements-narrow.sdl +97 -0
  371. package/tests/sample-specifications/prettified-various-elements.sdl +90 -0
  372. package/tests/sample-specifications/sample.sdl +24 -0
  373. package/tests/sample-specifications/various-elements.sdl +88 -0
  374. package/tests/util/logger.test.ts +36 -0
  375. package/tsconfig.json +29 -0
@@ -0,0 +1,303 @@
1
+ # Simple
2
+
3
+ class A {utfstring foo = u"hello";}
4
+
5
+ ==>
6
+
7
+ Specification(
8
+ ClassDeclaration(
9
+ class
10
+ Whitespace
11
+ Identifier
12
+ Whitespace
13
+ OpenBrace
14
+ StringDefinition(
15
+ utfstring
16
+ Whitespace
17
+ Identifier
18
+ Whitespace
19
+ Assignment
20
+ Whitespace
21
+ UtfStringLiteral(
22
+ UtfPrefix
23
+ DoubleQuote
24
+ UtfStringLiteralCharacters
25
+ DoubleQuote
26
+ )
27
+ Semicolon
28
+ )
29
+ CloseBrace
30
+ )
31
+ )
32
+
33
+ # Escaped double quote
34
+
35
+ class A {utfstring foo = u"hello \"world\"";}
36
+
37
+ ==>
38
+
39
+ Specification(
40
+ ClassDeclaration(
41
+ class
42
+ Whitespace
43
+ Identifier
44
+ Whitespace
45
+ OpenBrace
46
+ StringDefinition(
47
+ utfstring
48
+ Whitespace
49
+ Identifier
50
+ Whitespace
51
+ Assignment
52
+ Whitespace
53
+ UtfStringLiteral(
54
+ UtfPrefix
55
+ DoubleQuote
56
+ UtfStringLiteralCharacters
57
+ DoubleQuote
58
+ )
59
+ Semicolon
60
+ )
61
+ CloseBrace
62
+ )
63
+ )
64
+
65
+ # Escaped backslash
66
+
67
+ class A {utfstring foo = u"hello \\\\world\\\\";}
68
+
69
+ ==>
70
+
71
+ Specification(
72
+ ClassDeclaration(
73
+ class
74
+ Whitespace
75
+ Identifier
76
+ Whitespace
77
+ OpenBrace
78
+ StringDefinition(
79
+ utfstring
80
+ Whitespace
81
+ Identifier
82
+ Whitespace
83
+ Assignment
84
+ Whitespace
85
+ UtfStringLiteral(
86
+ UtfPrefix
87
+ DoubleQuote
88
+ UtfStringLiteralCharacters
89
+ DoubleQuote
90
+ )
91
+ Semicolon
92
+ )
93
+ CloseBrace
94
+ )
95
+ )
96
+
97
+ # SDL compatible UCS characters
98
+
99
+ class A {utfstring foo = u"hello πό";}
100
+
101
+ ==>
102
+
103
+ Specification(
104
+ ClassDeclaration(
105
+ class
106
+ Whitespace
107
+ Identifier
108
+ Whitespace
109
+ OpenBrace
110
+ StringDefinition(
111
+ utfstring
112
+ Whitespace
113
+ Identifier
114
+ Whitespace
115
+ Assignment
116
+ Whitespace
117
+ UtfStringLiteral(
118
+ UtfPrefix
119
+ DoubleQuote
120
+ UtfStringLiteralCharacters
121
+ DoubleQuote
122
+ )
123
+ Semicolon
124
+ )
125
+ CloseBrace
126
+ )
127
+ )
128
+
129
+ # Short UCS code point escape sequence
130
+
131
+ class A {utfstring foo = u"hello \\u1234";}
132
+
133
+ ==>
134
+
135
+ Specification(
136
+ ClassDeclaration(
137
+ class
138
+ Whitespace
139
+ Identifier
140
+ Whitespace
141
+ OpenBrace
142
+ StringDefinition(
143
+ utfstring
144
+ Whitespace
145
+ Identifier
146
+ Whitespace
147
+ Assignment
148
+ Whitespace
149
+ UtfStringLiteral(
150
+ UtfPrefix
151
+ DoubleQuote
152
+ UtfStringLiteralCharacters
153
+ DoubleQuote
154
+ )
155
+ Semicolon
156
+ )
157
+ CloseBrace
158
+ )
159
+ )
160
+
161
+ # Long UCS code point escape sequence
162
+
163
+ class A {utfstring foo = u"hello \\U00001234";}
164
+
165
+ ==>
166
+
167
+ Specification(
168
+ ClassDeclaration(
169
+ class
170
+ Whitespace
171
+ Identifier
172
+ Whitespace
173
+ OpenBrace
174
+ StringDefinition(
175
+ utfstring
176
+ Whitespace
177
+ Identifier
178
+ Whitespace
179
+ Assignment
180
+ Whitespace
181
+ UtfStringLiteral(
182
+ UtfPrefix
183
+ DoubleQuote
184
+ UtfStringLiteralCharacters
185
+ DoubleQuote
186
+ )
187
+ Semicolon
188
+ )
189
+ CloseBrace
190
+ )
191
+ )
192
+
193
+ # Ignore line break escape code in literal
194
+
195
+ class A {utfstring foo = u"hello\\n";}
196
+
197
+ ==>
198
+
199
+ Specification(
200
+ ClassDeclaration(
201
+ class
202
+ Whitespace
203
+ Identifier
204
+ Whitespace
205
+ OpenBrace
206
+ StringDefinition(
207
+ utfstring
208
+ Whitespace
209
+ Identifier
210
+ Whitespace
211
+ Assignment
212
+ Whitespace
213
+ UtfStringLiteral(
214
+ UtfPrefix
215
+ DoubleQuote
216
+ UtfStringLiteralCharacters
217
+ DoubleQuote
218
+ )
219
+ Semicolon
220
+ )
221
+ CloseBrace
222
+ )
223
+ )
224
+
225
+ # Concatenated on same line
226
+
227
+ class A {utfstring foo = u"hello" u" world"u"";}
228
+
229
+ ==>
230
+
231
+ Specification(
232
+ ClassDeclaration(
233
+ class
234
+ Whitespace
235
+ Identifier
236
+ Whitespace
237
+ OpenBrace
238
+ StringDefinition(
239
+ utfstring
240
+ Whitespace
241
+ Identifier
242
+ Whitespace
243
+ Assignment
244
+ Whitespace
245
+ UtfStringLiteral(
246
+ UtfPrefix
247
+ DoubleQuote
248
+ UtfStringLiteralCharacters
249
+ DoubleQuote
250
+ Whitespace
251
+ UtfPrefix
252
+ DoubleQuote
253
+ UtfStringLiteralCharacters
254
+ DoubleQuote
255
+ UtfPrefix
256
+ DoubleQuote
257
+ UtfStringLiteralCharacters
258
+ DoubleQuote
259
+ )
260
+ Semicolon
261
+ )
262
+ CloseBrace
263
+ )
264
+ )
265
+
266
+ # Concatenated across multiple lines
267
+
268
+ class A {utfstring foo = u"hello"
269
+
270
+ u" world";}
271
+
272
+ ==>
273
+
274
+ Specification(
275
+ ClassDeclaration(
276
+ class
277
+ Whitespace
278
+ Identifier
279
+ Whitespace
280
+ OpenBrace
281
+ StringDefinition(
282
+ utfstring
283
+ Whitespace
284
+ Identifier
285
+ Whitespace
286
+ Assignment
287
+ Whitespace
288
+ UtfStringLiteral(
289
+ UtfPrefix
290
+ DoubleQuote
291
+ UtfStringLiteralCharacters
292
+ DoubleQuote
293
+ Whitespace
294
+ UtfPrefix
295
+ DoubleQuote
296
+ UtfStringLiteralCharacters
297
+ DoubleQuote
298
+ )
299
+ Semicolon
300
+ )
301
+ CloseBrace
302
+ )
303
+ )
@@ -0,0 +1,407 @@
1
+ # Single case
2
+
3
+ class A {switch(i){case 1:break;}}
4
+
5
+ ==>
6
+
7
+ Specification(
8
+ ClassDeclaration(
9
+ class
10
+ Whitespace
11
+ Identifier
12
+ Whitespace
13
+ OpenBrace
14
+ SwitchStatement(
15
+ switch
16
+ OpenParenthesis
17
+ UnaryExpression(
18
+ Identifier
19
+ )
20
+ CloseParenthesis
21
+ OpenBrace
22
+ CaseClause(
23
+ case
24
+ Whitespace
25
+ IntegerLiteral
26
+ Colon
27
+ break
28
+ Semicolon
29
+ )
30
+ CloseBrace
31
+ )
32
+ CloseBrace
33
+ )
34
+ )
35
+
36
+ # Single case with braces
37
+
38
+ class A {switch(i){case 1:{break;}}}
39
+
40
+ ==>
41
+
42
+ Specification(
43
+ ClassDeclaration(
44
+ class
45
+ Whitespace
46
+ Identifier
47
+ Whitespace
48
+ OpenBrace
49
+ SwitchStatement(
50
+ switch
51
+ OpenParenthesis
52
+ UnaryExpression(
53
+ Identifier
54
+ )
55
+ CloseParenthesis
56
+ OpenBrace
57
+ CaseClause(
58
+ case
59
+ Whitespace
60
+ IntegerLiteral
61
+ Colon
62
+ OpenBrace
63
+ break
64
+ Semicolon
65
+ CloseBrace
66
+ )
67
+ CloseBrace
68
+ )
69
+ CloseBrace
70
+ )
71
+ )
72
+
73
+ # No cases and default
74
+
75
+ class A {switch(i){default:i--;}}
76
+
77
+ ==>
78
+
79
+ Specification(
80
+ ClassDeclaration(
81
+ class
82
+ Whitespace
83
+ Identifier
84
+ Whitespace
85
+ OpenBrace
86
+ SwitchStatement(
87
+ switch
88
+ OpenParenthesis
89
+ UnaryExpression(
90
+ Identifier
91
+ )
92
+ CloseParenthesis
93
+ OpenBrace
94
+ DefaultClause(
95
+ default
96
+ Colon
97
+ ExpressionStatement(
98
+ UnaryExpression(
99
+ UnaryExpression(
100
+ Identifier
101
+ )
102
+ PostfixDecrement
103
+ )
104
+ Semicolon
105
+ )
106
+ )
107
+ CloseBrace
108
+ )
109
+ CloseBrace
110
+ )
111
+ )
112
+
113
+ # No cases and default with braces
114
+
115
+ class A {switch(i){default:{i--;}}}
116
+
117
+ ==>
118
+
119
+ Specification(
120
+ ClassDeclaration(
121
+ class
122
+ Whitespace
123
+ Identifier
124
+ Whitespace
125
+ OpenBrace
126
+ SwitchStatement(
127
+ switch
128
+ OpenParenthesis
129
+ UnaryExpression(
130
+ Identifier
131
+ )
132
+ CloseParenthesis
133
+ OpenBrace
134
+ DefaultClause(
135
+ default
136
+ Colon
137
+ CompoundStatement(
138
+ OpenBrace
139
+ ExpressionStatement(
140
+ UnaryExpression(
141
+ UnaryExpression(
142
+ Identifier
143
+ )
144
+ PostfixDecrement
145
+ )
146
+ Semicolon
147
+ )
148
+ CloseBrace
149
+ )
150
+ )
151
+ CloseBrace
152
+ )
153
+ CloseBrace
154
+ )
155
+ )
156
+
157
+ # Multiple cases
158
+
159
+ class A {switch(i){case 1:break;case 2:{i++;break;}}}
160
+
161
+ ==>
162
+
163
+ Specification(
164
+ ClassDeclaration(
165
+ class
166
+ Whitespace
167
+ Identifier
168
+ Whitespace
169
+ OpenBrace
170
+ SwitchStatement(
171
+ switch
172
+ OpenParenthesis
173
+ UnaryExpression(
174
+ Identifier
175
+ )
176
+ CloseParenthesis
177
+ OpenBrace
178
+ CaseClause(
179
+ case
180
+ Whitespace
181
+ IntegerLiteral
182
+ Colon
183
+ break
184
+ Semicolon
185
+ )
186
+ CaseClause(
187
+ case
188
+ Whitespace
189
+ IntegerLiteral
190
+ Colon
191
+ OpenBrace
192
+ ExpressionStatement(
193
+ UnaryExpression(
194
+ UnaryExpression(
195
+ Identifier
196
+ )
197
+ PostfixIncrement
198
+ )
199
+ Semicolon
200
+ )
201
+ break
202
+ Semicolon
203
+ CloseBrace
204
+ )
205
+ CloseBrace
206
+ )
207
+ CloseBrace
208
+ )
209
+ )
210
+
211
+ # Multiple cases and default
212
+
213
+ class A {switch(i){case 1:break;case 2:{i++;break;}default:i--;}}
214
+
215
+ ==>
216
+
217
+ Specification(
218
+ ClassDeclaration(
219
+ class
220
+ Whitespace
221
+ Identifier
222
+ Whitespace
223
+ OpenBrace
224
+ SwitchStatement(
225
+ switch
226
+ OpenParenthesis
227
+ UnaryExpression(
228
+ Identifier
229
+ )
230
+ CloseParenthesis
231
+ OpenBrace
232
+ CaseClause(
233
+ case
234
+ Whitespace
235
+ IntegerLiteral
236
+ Colon
237
+ break
238
+ Semicolon
239
+ )
240
+ CaseClause(
241
+ case
242
+ Whitespace
243
+ IntegerLiteral
244
+ Colon
245
+ OpenBrace
246
+ ExpressionStatement(
247
+ UnaryExpression(
248
+ UnaryExpression(
249
+ Identifier
250
+ )
251
+ PostfixIncrement
252
+ )
253
+ Semicolon
254
+ )
255
+ break
256
+ Semicolon
257
+ CloseBrace
258
+ )
259
+ DefaultClause(
260
+ default
261
+ Colon
262
+ ExpressionStatement(
263
+ UnaryExpression(
264
+ UnaryExpression(
265
+ Identifier
266
+ )
267
+ PostfixDecrement
268
+ )
269
+ Semicolon
270
+ )
271
+ )
272
+ CloseBrace
273
+ )
274
+ CloseBrace
275
+ )
276
+ )
277
+
278
+ # Multiple cases with no break and default
279
+
280
+ class A {switch(i){case 1:i++;case 2:i++;default:i--;}}
281
+
282
+ ==>
283
+
284
+ Specification(
285
+ ClassDeclaration(
286
+ class
287
+ Whitespace
288
+ Identifier
289
+ Whitespace
290
+ OpenBrace
291
+ SwitchStatement(
292
+ switch
293
+ OpenParenthesis
294
+ UnaryExpression(
295
+ Identifier
296
+ )
297
+ CloseParenthesis
298
+ OpenBrace
299
+ CaseClause(
300
+ case
301
+ Whitespace
302
+ IntegerLiteral
303
+ Colon
304
+ ExpressionStatement(
305
+ UnaryExpression(
306
+ UnaryExpression(
307
+ Identifier
308
+ )
309
+ PostfixIncrement
310
+ )
311
+ Semicolon
312
+ )
313
+ )
314
+ CaseClause(
315
+ case
316
+ Whitespace
317
+ IntegerLiteral
318
+ Colon
319
+ ExpressionStatement(
320
+ UnaryExpression(
321
+ UnaryExpression(
322
+ Identifier
323
+ )
324
+ PostfixIncrement
325
+ )
326
+ Semicolon
327
+ )
328
+ )
329
+ DefaultClause(
330
+ default
331
+ Colon
332
+ ExpressionStatement(
333
+ UnaryExpression(
334
+ UnaryExpression(
335
+ Identifier
336
+ )
337
+ PostfixDecrement
338
+ )
339
+ Semicolon
340
+ )
341
+ )
342
+ CloseBrace
343
+ )
344
+ CloseBrace
345
+ )
346
+ )
347
+
348
+ # Multiple cases with no break and no expression and default
349
+
350
+ class A {switch(i){case 1:case 2:i++;default:i--;}}
351
+
352
+ ==>
353
+
354
+ Specification(
355
+ ClassDeclaration(
356
+ class
357
+ Whitespace
358
+ Identifier
359
+ Whitespace
360
+ OpenBrace
361
+ SwitchStatement(
362
+ switch
363
+ OpenParenthesis
364
+ UnaryExpression(
365
+ Identifier
366
+ )
367
+ CloseParenthesis
368
+ OpenBrace
369
+ CaseClause(
370
+ case
371
+ Whitespace
372
+ IntegerLiteral
373
+ Colon
374
+ )
375
+ CaseClause(
376
+ case
377
+ Whitespace
378
+ IntegerLiteral
379
+ Colon
380
+ ExpressionStatement(
381
+ UnaryExpression(
382
+ UnaryExpression(
383
+ Identifier
384
+ )
385
+ PostfixIncrement
386
+ )
387
+ Semicolon
388
+ )
389
+ )
390
+ DefaultClause(
391
+ default
392
+ Colon
393
+ ExpressionStatement(
394
+ UnaryExpression(
395
+ UnaryExpression(
396
+ Identifier
397
+ )
398
+ PostfixDecrement
399
+ )
400
+ Semicolon
401
+ )
402
+ )
403
+ CloseBrace
404
+ )
405
+ CloseBrace
406
+ )
407
+ )