@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,183 @@
1
+ # First expression is expression
2
+
3
+ class A {for (i=1;i<9;i++) {j++;}}
4
+
5
+ ==>
6
+
7
+ Specification(
8
+ ClassDeclaration(
9
+ class
10
+ Whitespace
11
+ Identifier
12
+ Whitespace
13
+ OpenBrace
14
+ ForStatement(
15
+ for
16
+ Whitespace
17
+ OpenParenthesis
18
+ AssignmentExpression(
19
+ UnaryExpression(
20
+ Identifier
21
+ )
22
+ Assignment
23
+ UnaryExpression(
24
+ IntegerLiteral
25
+ )
26
+ )
27
+ Semicolon
28
+ BinaryExpression(
29
+ UnaryExpression(
30
+ Identifier
31
+ )
32
+ RelationalLessThan
33
+ UnaryExpression(
34
+ IntegerLiteral
35
+ )
36
+ )
37
+ Semicolon
38
+ UnaryExpression(
39
+ UnaryExpression(
40
+ Identifier
41
+ )
42
+ PostfixIncrement
43
+ )
44
+ CloseParenthesis
45
+ Whitespace
46
+ CompoundStatement(
47
+ OpenBrace
48
+ ExpressionStatement(
49
+ UnaryExpression(
50
+ UnaryExpression(
51
+ Identifier
52
+ )
53
+ PostfixIncrement
54
+ )
55
+ Semicolon
56
+ )
57
+ CloseBrace
58
+ )
59
+ )
60
+ CloseBrace
61
+ )
62
+ )
63
+
64
+ # First expression is computed elementary type definition
65
+
66
+ class A {for (computed int i=1;i<9;i++) {j++;}}
67
+
68
+ ==>
69
+
70
+ Specification(
71
+ ClassDeclaration(
72
+ class
73
+ Whitespace
74
+ Identifier
75
+ Whitespace
76
+ OpenBrace
77
+ ForStatement(
78
+ for
79
+ Whitespace
80
+ OpenParenthesis
81
+ ComputedElementaryTypeDefinition(
82
+ computed
83
+ Whitespace
84
+ ElementaryType(
85
+ int
86
+ )
87
+ Whitespace
88
+ Identifier
89
+ Assignment
90
+ UnaryExpression(
91
+ IntegerLiteral
92
+ )
93
+ Semicolon
94
+ )
95
+ BinaryExpression(
96
+ UnaryExpression(
97
+ Identifier
98
+ )
99
+ RelationalLessThan
100
+ UnaryExpression(
101
+ IntegerLiteral
102
+ )
103
+ )
104
+ Semicolon
105
+ UnaryExpression(
106
+ UnaryExpression(
107
+ Identifier
108
+ )
109
+ PostfixIncrement
110
+ )
111
+ CloseParenthesis
112
+ Whitespace
113
+ CompoundStatement(
114
+ OpenBrace
115
+ ExpressionStatement(
116
+ UnaryExpression(
117
+ UnaryExpression(
118
+ Identifier
119
+ )
120
+ PostfixIncrement
121
+ )
122
+ Semicolon
123
+ )
124
+ CloseBrace
125
+ )
126
+ )
127
+ CloseBrace
128
+ )
129
+ )
130
+
131
+ # First expression is empty
132
+
133
+ class A {for (;i<9;i++) {j++;}}
134
+
135
+ ==>
136
+
137
+ Specification(
138
+ ClassDeclaration(
139
+ class
140
+ Whitespace
141
+ Identifier
142
+ Whitespace
143
+ OpenBrace
144
+ ForStatement(
145
+ for
146
+ Whitespace
147
+ OpenParenthesis
148
+ Semicolon
149
+ BinaryExpression(
150
+ UnaryExpression(
151
+ Identifier
152
+ )
153
+ RelationalLessThan
154
+ UnaryExpression(
155
+ IntegerLiteral
156
+ )
157
+ )
158
+ Semicolon
159
+ UnaryExpression(
160
+ UnaryExpression(
161
+ Identifier
162
+ )
163
+ PostfixIncrement
164
+ )
165
+ CloseParenthesis
166
+ Whitespace
167
+ CompoundStatement(
168
+ OpenBrace
169
+ ExpressionStatement(
170
+ UnaryExpression(
171
+ UnaryExpression(
172
+ Identifier
173
+ )
174
+ PostfixIncrement
175
+ )
176
+ Semicolon
177
+ )
178
+ CloseBrace
179
+ )
180
+ )
181
+ CloseBrace
182
+ )
183
+ )
@@ -0,0 +1,183 @@
1
+ # With braces in clauses
2
+
3
+ class A {if(i==1){i++;}else if(i==2){i--;}else{j++;}}
4
+
5
+ ==>
6
+
7
+ Specification(
8
+ ClassDeclaration(
9
+ class
10
+ Whitespace
11
+ Identifier
12
+ Whitespace
13
+ OpenBrace
14
+ IfStatement(
15
+ if
16
+ OpenParenthesis
17
+ BinaryExpression(
18
+ UnaryExpression(
19
+ Identifier
20
+ )
21
+ RelationalEqual
22
+ UnaryExpression(
23
+ IntegerLiteral
24
+ )
25
+ )
26
+ CloseParenthesis
27
+ CompoundStatement(
28
+ OpenBrace
29
+ ExpressionStatement(
30
+ UnaryExpression(
31
+ UnaryExpression(
32
+ Identifier
33
+ )
34
+ PostfixIncrement
35
+ )
36
+ Semicolon
37
+ )
38
+ CloseBrace
39
+ )
40
+ else
41
+ Whitespace
42
+ IfStatement(
43
+ if
44
+ OpenParenthesis
45
+ BinaryExpression(
46
+ UnaryExpression(
47
+ Identifier
48
+ )
49
+ RelationalEqual
50
+ UnaryExpression(
51
+ IntegerLiteral
52
+ )
53
+ )
54
+ CloseParenthesis
55
+ CompoundStatement(
56
+ OpenBrace
57
+ ExpressionStatement(
58
+ UnaryExpression(
59
+ UnaryExpression(
60
+ Identifier
61
+ )
62
+ PostfixDecrement
63
+ )
64
+ Semicolon
65
+ )
66
+ CloseBrace
67
+ )
68
+ else
69
+ CompoundStatement(
70
+ OpenBrace
71
+ ExpressionStatement(
72
+ UnaryExpression(
73
+ UnaryExpression(
74
+ Identifier
75
+ )
76
+ PostfixIncrement
77
+ )
78
+ Semicolon
79
+ )
80
+ CloseBrace
81
+ )
82
+ )
83
+ )
84
+ CloseBrace
85
+ )
86
+ )
87
+
88
+ # No braces and no else if clause
89
+
90
+ class A {if(i==1)i++;else j++;}
91
+
92
+ ==>
93
+
94
+
95
+ Specification(
96
+ ClassDeclaration(
97
+ class
98
+ Whitespace
99
+ Identifier
100
+ Whitespace
101
+ OpenBrace
102
+ IfStatement(
103
+ if
104
+ OpenParenthesis
105
+ BinaryExpression(
106
+ UnaryExpression(
107
+ Identifier
108
+ )
109
+ RelationalEqual
110
+ UnaryExpression(
111
+ IntegerLiteral
112
+ )
113
+ )
114
+ CloseParenthesis
115
+ ExpressionStatement(
116
+ UnaryExpression(
117
+ UnaryExpression(
118
+ Identifier
119
+ )
120
+ PostfixIncrement
121
+ )
122
+ Semicolon
123
+ )
124
+ else
125
+ Whitespace
126
+ ExpressionStatement(
127
+ UnaryExpression(
128
+ UnaryExpression(
129
+ Identifier
130
+ )
131
+ PostfixIncrement
132
+ )
133
+ Semicolon
134
+ )
135
+ )
136
+ CloseBrace
137
+ )
138
+ )
139
+
140
+ # Two if statements
141
+
142
+ class A{if(x)1;if(y)2;}
143
+
144
+ ==>
145
+
146
+
147
+ Specification(
148
+ ClassDeclaration(
149
+ class
150
+ Whitespace
151
+ Identifier
152
+ OpenBrace
153
+ IfStatement(
154
+ if
155
+ OpenParenthesis
156
+ UnaryExpression(
157
+ Identifier
158
+ )
159
+ CloseParenthesis
160
+ ExpressionStatement(
161
+ UnaryExpression(
162
+ IntegerLiteral
163
+ )
164
+ Semicolon
165
+ )
166
+ )
167
+ IfStatement(
168
+ if
169
+ OpenParenthesis
170
+ UnaryExpression(
171
+ Identifier
172
+ )
173
+ CloseParenthesis
174
+ ExpressionStatement(
175
+ UnaryExpression(
176
+ IntegerLiteral
177
+ )
178
+ Semicolon
179
+ )
180
+ )
181
+ CloseBrace
182
+ )
183
+ )
@@ -0,0 +1,97 @@
1
+ # Missing and unexpected tokens 1
2
+
3
+ class A{if(a fie==1) {}}
4
+
5
+ ==>
6
+
7
+ Specification(
8
+ ClassDeclaration(
9
+ class
10
+ Whitespace
11
+ Identifier
12
+ OpenBrace
13
+ IfStatement(
14
+ if
15
+ OpenParenthesis
16
+ UnaryExpression(
17
+ Identifier
18
+ )
19
+ Whitespace
20
+
21
+ )
22
+ ExpressionStatement(
23
+ BinaryExpression(
24
+ UnaryExpression(
25
+ Identifier
26
+ )
27
+ RelationalEqual
28
+ UnaryExpression(
29
+ IntegerLiteral
30
+ )
31
+ )
32
+ ⚠(
33
+ CloseParenthesis
34
+ )
35
+ Whitespace
36
+
37
+ )
38
+ CompoundStatement(
39
+ OpenBrace
40
+ CloseBrace
41
+ )
42
+ CloseBrace
43
+ )
44
+ )
45
+
46
+ # Missing and unexpected tokens 2
47
+
48
+ class A{if(a fie==1){}}
49
+
50
+ ==>
51
+
52
+ Specification(
53
+ ClassDeclaration(
54
+ class
55
+ Whitespace
56
+ Identifier
57
+ OpenBrace
58
+ IfStatement(
59
+ if
60
+ OpenParenthesis
61
+ UnaryExpression(
62
+ Identifier
63
+ )
64
+ Whitespace
65
+
66
+ )
67
+ ExpressionStatement(
68
+ BinaryExpression(
69
+ UnaryExpression(
70
+ Identifier
71
+ )
72
+ RelationalEqual
73
+ UnaryExpression(
74
+ IntegerLiteral
75
+ )
76
+ )
77
+ ⚠(
78
+ CloseParenthesis
79
+ )
80
+ )
81
+ CompoundStatement(
82
+ OpenBrace
83
+ CloseBrace
84
+ )
85
+ CloseBrace
86
+ )
87
+ )
88
+
89
+ # Single invalid token
90
+
91
+ §
92
+
93
+ ==>
94
+
95
+ Specification(
96
+
97
+ )
@@ -0,0 +1,152 @@
1
+ # Elementary type output
2
+
3
+ map offsets (int) {0b00,{1024},0b00,{1024}}
4
+
5
+ ==>
6
+
7
+ Specification(
8
+ MapDeclaration(
9
+ map
10
+ Whitespace
11
+ Identifier
12
+ Whitespace
13
+ OpenParenthesis
14
+ ElementaryType(
15
+ int
16
+ )
17
+ CloseParenthesis
18
+ Whitespace
19
+ OpenBrace
20
+ MapEntry(
21
+ BinaryLiteral
22
+ Comma
23
+ AggregateOutputValue(
24
+ OpenBrace
25
+ IntegerLiteral
26
+ CloseBrace
27
+ )
28
+ )
29
+ Comma
30
+ MapEntry(
31
+ BinaryLiteral
32
+ Comma
33
+ AggregateOutputValue(
34
+ OpenBrace
35
+ IntegerLiteral
36
+ CloseBrace
37
+ )
38
+ )
39
+ CloseBrace
40
+ )
41
+ )
42
+
43
+ # Class output
44
+
45
+ map barMap (Bar) {0b00,{1024}}
46
+
47
+ ==>
48
+
49
+ Specification(
50
+ MapDeclaration(
51
+ map
52
+ Whitespace
53
+ Identifier
54
+ Whitespace
55
+ OpenParenthesis
56
+ Identifier
57
+ CloseParenthesis
58
+ Whitespace
59
+ OpenBrace
60
+ MapEntry(
61
+ BinaryLiteral
62
+ Comma
63
+ AggregateOutputValue(
64
+ OpenBrace
65
+ IntegerLiteral
66
+ CloseBrace
67
+ )
68
+ )
69
+ CloseBrace
70
+ )
71
+ )
72
+
73
+ # Nested outputs
74
+
75
+ map barMap (Bar) {0b00,{1024,{1,2}}}
76
+
77
+ ==>
78
+
79
+ Specification(
80
+ MapDeclaration(
81
+ map
82
+ Whitespace
83
+ Identifier
84
+ Whitespace
85
+ OpenParenthesis
86
+ Identifier
87
+ CloseParenthesis
88
+ Whitespace
89
+ OpenBrace
90
+ MapEntry(
91
+ BinaryLiteral
92
+ Comma
93
+ AggregateOutputValue(
94
+ OpenBrace
95
+ IntegerLiteral
96
+ Comma
97
+ AggregateOutputValue(
98
+ OpenBrace
99
+ IntegerLiteral
100
+ Comma
101
+ IntegerLiteral
102
+ CloseBrace
103
+ )
104
+ CloseBrace
105
+ )
106
+ )
107
+ CloseBrace
108
+ )
109
+ )
110
+
111
+ # Escape codes
112
+
113
+ map offsets (int) {0b00,{int(6)}}
114
+
115
+ ==>
116
+
117
+ Specification(
118
+ MapDeclaration(
119
+ map
120
+ Whitespace
121
+ Identifier
122
+ Whitespace
123
+ OpenParenthesis
124
+ ElementaryType(
125
+ int
126
+ )
127
+ CloseParenthesis
128
+ Whitespace
129
+ OpenBrace
130
+ MapEntry(
131
+ BinaryLiteral
132
+ Comma
133
+ AggregateOutputValue(
134
+ OpenBrace
135
+ ElementaryTypeOutputValue(
136
+ ElementaryType(
137
+ int
138
+ )
139
+ LengthAttribute(
140
+ OpenParenthesis
141
+ UnaryExpression(
142
+ IntegerLiteral
143
+ )
144
+ CloseParenthesis
145
+ )
146
+ )
147
+ CloseBrace
148
+ )
149
+ )
150
+ CloseBrace
151
+ )
152
+ )
@@ -0,0 +1,59 @@
1
+ # Reserved with elementary type output
2
+
3
+ class A {reserved unsigned int<Offsets> offset;}
4
+
5
+ ==>
6
+
7
+ Specification(
8
+ ClassDeclaration(
9
+ class
10
+ Whitespace
11
+ Identifier
12
+ Whitespace
13
+ OpenBrace
14
+ MapDefinition(
15
+ reserved
16
+ Whitespace
17
+ ElementaryType(
18
+ unsigned
19
+ Whitespace
20
+ int
21
+ )
22
+ RelationalLessThan
23
+ Identifier
24
+ RelationalGreaterThan
25
+ Whitespace
26
+ Identifier
27
+ Semicolon
28
+ )
29
+ CloseBrace
30
+ )
31
+ )
32
+
33
+ # Legacy with class output
34
+
35
+ class A {legacy B<MapB> b;}
36
+
37
+ ==>
38
+
39
+ Specification(
40
+ ClassDeclaration(
41
+ class
42
+ Whitespace
43
+ Identifier
44
+ Whitespace
45
+ OpenBrace
46
+ MapDefinition(
47
+ legacy
48
+ Whitespace
49
+ Identifier
50
+ RelationalLessThan
51
+ Identifier
52
+ RelationalGreaterThan
53
+ Whitespace
54
+ Identifier
55
+ Semicolon
56
+ )
57
+ CloseBrace
58
+ )
59
+ )