@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,141 @@
1
+ # Simple class declaration
2
+
3
+ class A {}
4
+
5
+ ==>
6
+
7
+ Specification(
8
+ ClassDeclaration(
9
+ class
10
+ Whitespace
11
+ Identifier
12
+ Whitespace
13
+ OpenBrace
14
+ CloseBrace
15
+ )
16
+ )
17
+
18
+ # Single parameter with single id
19
+
20
+ class A(int a) {}
21
+
22
+ ==>
23
+
24
+ Specification(
25
+ ClassDeclaration(
26
+ class
27
+ Whitespace
28
+ Identifier
29
+ ParameterList(
30
+ OpenParenthesis
31
+ Parameter(
32
+ ElementaryType(
33
+ int
34
+ )
35
+ Whitespace
36
+ Identifier
37
+ )
38
+ CloseParenthesis
39
+ )
40
+ Whitespace
41
+ OpenBrace
42
+ CloseBrace
43
+ )
44
+ )
45
+
46
+ # All features
47
+
48
+ aligned(8) expandable(20) abstract class A (int a, B b) extends C(1, d) : bit(3) id=1..2,5 {}
49
+
50
+ ==>
51
+
52
+ Specification(
53
+ ClassDeclaration(
54
+ AlignedModifier(
55
+ aligned
56
+ OpenParenthesis
57
+ AlignmentBitCount8
58
+ CloseParenthesis
59
+ )
60
+ Whitespace
61
+ ExpandableModifier(
62
+ expandable
63
+ OpenParenthesis
64
+ IntegerLiteral
65
+ CloseParenthesis
66
+ )
67
+ Whitespace
68
+ abstract
69
+ Whitespace
70
+ class
71
+ Whitespace
72
+ Identifier
73
+ Whitespace
74
+ ParameterList(
75
+ OpenParenthesis
76
+ Parameter(
77
+ ElementaryType(
78
+ int
79
+ )
80
+ Whitespace
81
+ Identifier
82
+ )
83
+ Comma
84
+ Whitespace
85
+ Parameter(
86
+ Identifier
87
+ Whitespace
88
+ Identifier
89
+ )
90
+ CloseParenthesis
91
+ )
92
+ Whitespace
93
+ ExtendsModifier(
94
+ extends
95
+ Whitespace
96
+ Identifier
97
+ ParameterValueList(
98
+ OpenParenthesis
99
+ UnaryExpression(
100
+ IntegerLiteral
101
+ )
102
+ Comma
103
+ Whitespace
104
+ UnaryExpression(
105
+ Identifier
106
+ )
107
+ CloseParenthesis
108
+ )
109
+ )
110
+ Whitespace
111
+ BitModifier(
112
+ Colon
113
+ Whitespace
114
+ bit
115
+ OpenParenthesis
116
+ IntegerLiteral
117
+ CloseParenthesis
118
+ Whitespace
119
+ Identifier
120
+ Assignment
121
+ ExtendedClassIdRange(
122
+ ClassIdRange(
123
+ ClassId(
124
+ IntegerLiteral
125
+ )
126
+ RangeOperator
127
+ ClassId(
128
+ IntegerLiteral
129
+ )
130
+ )
131
+ Comma
132
+ ClassId(
133
+ IntegerLiteral
134
+ )
135
+ )
136
+ )
137
+ Whitespace
138
+ OpenBrace
139
+ CloseBrace
140
+ )
141
+ )
@@ -0,0 +1,89 @@
1
+ # Simple
2
+
3
+ class A {ClassA a;}
4
+
5
+ ==>
6
+
7
+ Specification(
8
+ ClassDeclaration(
9
+ class
10
+ Whitespace
11
+ Identifier
12
+ Whitespace
13
+ OpenBrace
14
+ ClassDefinition(
15
+ Identifier
16
+ Whitespace
17
+ Identifier
18
+ Semicolon
19
+ )
20
+ CloseBrace
21
+ )
22
+ )
23
+
24
+ # Legacy and one parameter value
25
+
26
+ class A {legacy ClassB b(3);}
27
+
28
+ ==>
29
+
30
+ Specification(
31
+ ClassDeclaration(
32
+ class
33
+ Whitespace
34
+ Identifier
35
+ Whitespace
36
+ OpenBrace
37
+ ClassDefinition(
38
+ legacy
39
+ Whitespace
40
+ Identifier
41
+ Whitespace
42
+ Identifier
43
+ ParameterValueList(
44
+ OpenParenthesis
45
+ UnaryExpression(
46
+ IntegerLiteral
47
+ )
48
+ CloseParenthesis
49
+ )
50
+ Semicolon
51
+ )
52
+ CloseBrace
53
+ )
54
+ )
55
+
56
+ # Multiple parameter values
57
+
58
+ class A {ClassC c(i, 3);}
59
+
60
+ ==>
61
+
62
+ Specification(
63
+ ClassDeclaration(
64
+ class
65
+ Whitespace
66
+ Identifier
67
+ Whitespace
68
+ OpenBrace
69
+ ClassDefinition(
70
+ Identifier
71
+ Whitespace
72
+ Identifier
73
+ ParameterValueList(
74
+ OpenParenthesis
75
+ UnaryExpression(
76
+ Identifier
77
+ )
78
+ Comma
79
+ Whitespace
80
+ UnaryExpression(
81
+ IntegerLiteral
82
+ )
83
+ CloseParenthesis
84
+ )
85
+ Semicolon
86
+ )
87
+ CloseBrace
88
+ )
89
+ )
@@ -0,0 +1,335 @@
1
+ # Simple commant
2
+
3
+ // hello world
4
+ class A {}
5
+
6
+ ==>
7
+
8
+ Specification(
9
+ Comment
10
+ Whitespace
11
+ ClassDeclaration(
12
+ class
13
+ Whitespace
14
+ Identifier
15
+ Whitespace
16
+ OpenBrace
17
+ CloseBrace
18
+ )
19
+ )
20
+
21
+ # Leading and trailing comments
22
+
23
+ // hello
24
+ class A {// world
25
+ }// again
26
+
27
+ ==>
28
+
29
+ Specification(
30
+ Comment
31
+ Whitespace
32
+ ClassDeclaration(
33
+ class
34
+ Whitespace
35
+ Identifier
36
+ Whitespace
37
+ OpenBrace
38
+ Comment
39
+ Whitespace
40
+ CloseBrace
41
+ )
42
+ Comment
43
+ )
44
+
45
+
46
+ # More leading and trailing comments
47
+
48
+ class A{// trailing 1
49
+ i++;// trailing 2
50
+ //leading 1
51
+ N=N+// trailing 3
52
+ 1;}
53
+ // trailing 4
54
+
55
+ ==>
56
+
57
+ Specification(
58
+ ClassDeclaration(
59
+ class
60
+ Whitespace
61
+ Identifier
62
+ OpenBrace
63
+ Comment
64
+ Whitespace
65
+ ExpressionStatement(
66
+ UnaryExpression(
67
+ UnaryExpression(
68
+ Identifier
69
+ )
70
+ PostfixIncrement
71
+ )
72
+ Semicolon
73
+ )
74
+ Comment
75
+ Whitespace
76
+ Comment
77
+ Whitespace
78
+ ExpressionStatement(
79
+ AssignmentExpression(
80
+ UnaryExpression(
81
+ Identifier
82
+ )
83
+ Assignment
84
+ BinaryExpression(
85
+ UnaryExpression(
86
+ Identifier
87
+ )
88
+ Addition
89
+ Comment
90
+ Whitespace
91
+ UnaryExpression(
92
+ IntegerLiteral
93
+ )
94
+ )
95
+ )
96
+ Semicolon
97
+ )
98
+ CloseBrace
99
+ )
100
+ Whitespace
101
+ Comment
102
+ )
103
+
104
+
105
+ # Multiple comments
106
+
107
+ class A {}
108
+ // hello
109
+ // world
110
+
111
+ ==>
112
+
113
+ Specification(
114
+ ClassDeclaration(
115
+ class
116
+ Whitespace
117
+ Identifier
118
+ Whitespace
119
+ OpenBrace
120
+ CloseBrace
121
+ )
122
+ Whitespace
123
+ Comment
124
+ Whitespace
125
+ Comment
126
+ )
127
+
128
+
129
+ # Multiple comments and whitespace
130
+
131
+ // hello
132
+
133
+ // world
134
+
135
+ class A {}
136
+
137
+ ==>
138
+
139
+ Specification(
140
+ Comment
141
+ Whitespace
142
+ Comment
143
+ Whitespace
144
+ ClassDeclaration(
145
+ class
146
+ Whitespace
147
+ Identifier
148
+ Whitespace
149
+ OpenBrace
150
+ CloseBrace
151
+ )
152
+ )
153
+
154
+
155
+ # Comment within comment
156
+
157
+ // hello // world
158
+ class A {}
159
+
160
+ ==>
161
+
162
+ Specification(
163
+ Comment
164
+ Whitespace
165
+ ClassDeclaration(
166
+ class
167
+ Whitespace
168
+ Identifier
169
+ Whitespace
170
+ OpenBrace
171
+ CloseBrace
172
+ )
173
+ )
174
+
175
+ # Comment at end of line
176
+
177
+ class A {} // hello
178
+
179
+ ==>
180
+
181
+ Specification(
182
+ ClassDeclaration(
183
+ class
184
+ Whitespace
185
+ Identifier
186
+ Whitespace
187
+ OpenBrace
188
+ CloseBrace
189
+ )
190
+ Whitespace
191
+ Comment
192
+ )
193
+
194
+ # Comment within syntax element
195
+
196
+ class A {i // hello
197
+ ;}
198
+
199
+ ==>
200
+
201
+ Specification(
202
+ ClassDeclaration(
203
+ class
204
+ Whitespace
205
+ Identifier
206
+ Whitespace
207
+ OpenBrace
208
+ ExpressionStatement(
209
+ UnaryExpression(
210
+ Identifier
211
+ )
212
+ Whitespace
213
+ Comment
214
+ Whitespace
215
+ Semicolon
216
+ )
217
+ CloseBrace
218
+ )
219
+ )
220
+
221
+ # Comment within unary expression syntax element
222
+
223
+ class A {i++// comment
224
+ ;}
225
+
226
+ ==>
227
+
228
+ Specification(
229
+ ClassDeclaration(
230
+ class
231
+ Whitespace
232
+ Identifier
233
+ Whitespace
234
+ OpenBrace
235
+ ExpressionStatement(
236
+ UnaryExpression(
237
+ UnaryExpression(
238
+ Identifier
239
+ )
240
+ PostfixIncrement
241
+ )
242
+ Comment
243
+ Whitespace
244
+ Semicolon
245
+ )
246
+ CloseBrace
247
+ )
248
+ )
249
+
250
+ # Comment within binary expression does not appear as child of BinaryExpression
251
+
252
+ class A{N-
253
+ 1//comment comment comment
254
+ ;}
255
+
256
+ ==>
257
+
258
+ Specification(
259
+ ClassDeclaration(
260
+ class
261
+ Whitespace
262
+ Identifier
263
+ OpenBrace
264
+ ExpressionStatement(
265
+ BinaryExpression(
266
+ UnaryExpression(
267
+ Identifier
268
+ )
269
+ Subtraction
270
+ Whitespace
271
+ UnaryExpression(
272
+ IntegerLiteral
273
+ )
274
+ )
275
+ Comment
276
+ Whitespace
277
+ Semicolon
278
+ )
279
+ CloseBrace
280
+ )
281
+ )
282
+
283
+ # Comment within binary expression slightly shorter
284
+
285
+ class A{N-
286
+ 1//comment comment commen
287
+ ;}
288
+
289
+ ==>
290
+
291
+ Specification(
292
+ ClassDeclaration(
293
+ class
294
+ Whitespace
295
+ Identifier
296
+ OpenBrace
297
+ ExpressionStatement(
298
+ BinaryExpression(
299
+ UnaryExpression(
300
+ Identifier
301
+ )
302
+ Subtraction
303
+ Whitespace
304
+ UnaryExpression(
305
+ IntegerLiteral
306
+ )
307
+ )
308
+ Comment
309
+ Whitespace
310
+ Semicolon
311
+ )
312
+ CloseBrace
313
+ )
314
+ )
315
+
316
+ # Leading comment
317
+
318
+ class A{
319
+ // Le lorem ipsum est, en imprimerie, une suite de mots sans signification utilisée
320
+ }
321
+
322
+ ==>
323
+
324
+ Specification(
325
+ ClassDeclaration(
326
+ class
327
+ Whitespace
328
+ Identifier
329
+ OpenBrace
330
+ Whitespace
331
+ Comment
332
+ Whitespace
333
+ CloseBrace
334
+ )
335
+ )
@@ -0,0 +1,109 @@
1
+ # Simple
2
+
3
+ class A {{utf8string foo;utf8string bar;}}
4
+
5
+ ==>
6
+
7
+ Specification(
8
+ ClassDeclaration(
9
+ class
10
+ Whitespace
11
+ Identifier
12
+ Whitespace
13
+ OpenBrace
14
+ CompoundStatement(
15
+ OpenBrace
16
+ StringDefinition(
17
+ utf8string
18
+ Whitespace
19
+ Identifier
20
+ Semicolon
21
+ )
22
+ StringDefinition(
23
+ utf8string
24
+ Whitespace
25
+ Identifier
26
+ Semicolon
27
+ )
28
+ CloseBrace
29
+ )
30
+ CloseBrace
31
+ )
32
+ )
33
+
34
+ # Nested compound statements
35
+
36
+ class A {{utf8string foo;{ utf8string bar1;utf8string bar2;}}}
37
+
38
+ ==>
39
+
40
+ Specification(
41
+ ClassDeclaration(
42
+ class
43
+ Whitespace
44
+ Identifier
45
+ Whitespace
46
+ OpenBrace
47
+ CompoundStatement(
48
+ OpenBrace
49
+ StringDefinition(
50
+ utf8string
51
+ Whitespace
52
+ Identifier
53
+ Semicolon
54
+ )
55
+ CompoundStatement(
56
+ OpenBrace
57
+ Whitespace
58
+ StringDefinition(
59
+ utf8string
60
+ Whitespace
61
+ Identifier
62
+ Semicolon
63
+ )
64
+ StringDefinition(
65
+ utf8string
66
+ Whitespace
67
+ Identifier
68
+ Semicolon
69
+ )
70
+ CloseBrace
71
+ )
72
+ CloseBrace
73
+ )
74
+ CloseBrace
75
+ )
76
+ )
77
+
78
+ # Compound statement with commented statement
79
+
80
+ class A {{
81
+ utf8string bar; // bar
82
+ }}
83
+
84
+ ==>
85
+
86
+ Specification(
87
+ ClassDeclaration(
88
+ class
89
+ Whitespace
90
+ Identifier
91
+ Whitespace
92
+ OpenBrace
93
+ CompoundStatement(
94
+ OpenBrace
95
+ Whitespace
96
+ StringDefinition(
97
+ utf8string
98
+ Whitespace
99
+ Identifier
100
+ Semicolon
101
+ )
102
+ Whitespace
103
+ Comment
104
+ Whitespace
105
+ CloseBrace
106
+ )
107
+ CloseBrace
108
+ )
109
+ )
@@ -0,0 +1,33 @@
1
+ # Simple
2
+
3
+ class A {computed int a[3];}
4
+
5
+ ==>
6
+
7
+ Specification(
8
+ ClassDeclaration(
9
+ class
10
+ Whitespace
11
+ Identifier
12
+ Whitespace
13
+ OpenBrace
14
+ ComputedArrayDefinition(
15
+ computed
16
+ Whitespace
17
+ ElementaryType(
18
+ int
19
+ )
20
+ Whitespace
21
+ Identifier
22
+ ExplicitArrayDimension(
23
+ OpenBracket
24
+ UnaryExpression(
25
+ IntegerLiteral
26
+ )
27
+ CloseBracket
28
+ )
29
+ Semicolon
30
+ )
31
+ CloseBrace
32
+ )
33
+ )