@jhlagado/azm 0.2.0 → 0.2.2

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 (334) hide show
  1. package/README.md +110 -78
  2. package/dist/src/api-compile.d.ts +0 -2
  3. package/dist/src/api-compile.js +2 -9
  4. package/dist/src/assembly/address-planning.js +21 -1
  5. package/dist/src/assembly/program-emission.js +1 -0
  6. package/dist/src/cli/parse-args.d.ts +0 -1
  7. package/dist/src/cli/parse-args.js +0 -7
  8. package/dist/src/cli/write-artifacts.js +0 -11
  9. package/dist/src/core/compile.js +192 -9
  10. package/dist/src/expansion/op-expansion.js +2 -0
  11. package/dist/src/model/expression.d.ts +4 -0
  12. package/dist/src/model/source-item.d.ts +11 -0
  13. package/dist/src/outputs/index.js +0 -2
  14. package/dist/src/outputs/types.d.ts +3 -16
  15. package/dist/src/outputs/write-asm80.js +206 -5
  16. package/dist/src/register-care/analyze.js +36 -8
  17. package/dist/src/register-care/annotations.js +33 -146
  18. package/dist/src/register-care/fix.d.ts +2 -0
  19. package/dist/src/register-care/fix.js +52 -0
  20. package/dist/src/register-care/instruction-shape.d.ts +11 -0
  21. package/dist/src/register-care/instruction-shape.js +129 -0
  22. package/dist/src/register-care/liveness.js +15 -7
  23. package/dist/src/register-care/profiles.js +4 -0
  24. package/dist/src/register-care/programModel.js +79 -13
  25. package/dist/src/register-care/report.d.ts +2 -1
  26. package/dist/src/register-care/report.js +91 -34
  27. package/dist/src/register-care/routine-summaries.d.ts +6 -0
  28. package/dist/src/register-care/routine-summaries.js +89 -0
  29. package/dist/src/register-care/summaries.d.ts +3 -3
  30. package/dist/src/register-care/summaries.js +42 -75
  31. package/dist/{legacy-root-azm/src/registerCare → src/register-care}/summary.js +33 -51
  32. package/dist/src/register-care/types.d.ts +6 -1
  33. package/dist/src/semantics/expression-evaluation.d.ts +7 -3
  34. package/dist/src/semantics/expression-evaluation.js +57 -0
  35. package/dist/src/source/strip-line-comment.d.ts +2 -0
  36. package/dist/src/source/strip-line-comment.js +26 -0
  37. package/dist/src/syntax/directive-aliases.js +9 -10
  38. package/dist/src/syntax/parse-diagnostics.d.ts +12 -0
  39. package/dist/src/syntax/parse-diagnostics.js +18 -0
  40. package/dist/src/syntax/parse-expression.js +34 -9
  41. package/dist/src/syntax/parse-line.js +150 -54
  42. package/dist/src/tooling/case-style.js +3 -0
  43. package/docs/reference/cli.md +6 -4
  44. package/docs/reference/tooling-api.md +13 -9
  45. package/package.json +4 -6
  46. package/dist/legacy-root-azm/src/analysis.d.ts +0 -11
  47. package/dist/legacy-root-azm/src/analysis.js +0 -41
  48. package/dist/legacy-root-azm/src/compile.d.ts +0 -10
  49. package/dist/legacy-root-azm/src/compile.js +0 -186
  50. package/dist/legacy-root-azm/src/compileShared.d.ts +0 -3
  51. package/dist/legacy-root-azm/src/compileShared.js +0 -7
  52. package/dist/legacy-root-azm/src/diagnosticTypes.d.ts +0 -77
  53. package/dist/legacy-root-azm/src/diagnosticTypes.js +0 -53
  54. package/dist/legacy-root-azm/src/formats/index.d.ts +0 -7
  55. package/dist/legacy-root-azm/src/formats/index.js +0 -17
  56. package/dist/legacy-root-azm/src/formats/range.d.ts +0 -17
  57. package/dist/legacy-root-azm/src/formats/range.js +0 -45
  58. package/dist/legacy-root-azm/src/formats/types.d.ts +0 -283
  59. package/dist/legacy-root-azm/src/formats/types.js +0 -1
  60. package/dist/legacy-root-azm/src/formats/writeAsm80.d.ts +0 -6
  61. package/dist/legacy-root-azm/src/formats/writeAsm80.js +0 -86
  62. package/dist/legacy-root-azm/src/formats/writeBin.d.ts +0 -7
  63. package/dist/legacy-root-azm/src/formats/writeBin.js +0 -23
  64. package/dist/legacy-root-azm/src/formats/writeD8m.d.ts +0 -9
  65. package/dist/legacy-root-azm/src/formats/writeD8m.js +0 -245
  66. package/dist/legacy-root-azm/src/formats/writeHex.d.ts +0 -8
  67. package/dist/legacy-root-azm/src/formats/writeHex.js +0 -38
  68. package/dist/legacy-root-azm/src/formats/writeListing.d.ts +0 -8
  69. package/dist/legacy-root-azm/src/formats/writeListing.js +0 -83
  70. package/dist/legacy-root-azm/src/frontend/asm80/asmLine.d.ts +0 -39
  71. package/dist/legacy-root-azm/src/frontend/asm80/asmLine.js +0 -89
  72. package/dist/legacy-root-azm/src/frontend/asm80/parseAsmRawValues.d.ts +0 -4
  73. package/dist/legacy-root-azm/src/frontend/asm80/parseAsmRawValues.js +0 -94
  74. package/dist/legacy-root-azm/src/frontend/asm80/quoteScan.d.ts +0 -10
  75. package/dist/legacy-root-azm/src/frontend/asm80/quoteScan.js +0 -25
  76. package/dist/legacy-root-azm/src/frontend/ast.d.ts +0 -376
  77. package/dist/legacy-root-azm/src/frontend/ast.js +0 -1
  78. package/dist/legacy-root-azm/src/frontend/directiveAliases.d.ts +0 -14
  79. package/dist/legacy-root-azm/src/frontend/directiveAliases.js +0 -189
  80. package/dist/legacy-root-azm/src/frontend/grammarData.d.ts +0 -14
  81. package/dist/legacy-root-azm/src/frontend/grammarData.js +0 -65
  82. package/dist/legacy-root-azm/src/frontend/immExprUtils.d.ts +0 -2
  83. package/dist/legacy-root-azm/src/frontend/immExprUtils.js +0 -12
  84. package/dist/legacy-root-azm/src/frontend/parseAsmFlatDirectiveLine.d.ts +0 -17
  85. package/dist/legacy-root-azm/src/frontend/parseAsmFlatDirectiveLine.js +0 -187
  86. package/dist/legacy-root-azm/src/frontend/parseAsmInstruction.d.ts +0 -3
  87. package/dist/legacy-root-azm/src/frontend/parseAsmInstruction.js +0 -73
  88. package/dist/legacy-root-azm/src/frontend/parseAsmStatements.d.ts +0 -6
  89. package/dist/legacy-root-azm/src/frontend/parseAsmStatements.js +0 -16
  90. package/dist/legacy-root-azm/src/frontend/parseAsmStream.d.ts +0 -10
  91. package/dist/legacy-root-azm/src/frontend/parseAsmStream.js +0 -33
  92. package/dist/legacy-root-azm/src/frontend/parseAsmTopLevel.d.ts +0 -18
  93. package/dist/legacy-root-azm/src/frontend/parseAsmTopLevel.js +0 -34
  94. package/dist/legacy-root-azm/src/frontend/parseDiagnostics.d.ts +0 -9
  95. package/dist/legacy-root-azm/src/frontend/parseDiagnostics.js +0 -16
  96. package/dist/legacy-root-azm/src/frontend/parseEnum.d.ts +0 -12
  97. package/dist/legacy-root-azm/src/frontend/parseEnum.js +0 -70
  98. package/dist/legacy-root-azm/src/frontend/parseImm.d.ts +0 -10
  99. package/dist/legacy-root-azm/src/frontend/parseImm.js +0 -397
  100. package/dist/legacy-root-azm/src/frontend/parseLogicalLines.d.ts +0 -11
  101. package/dist/legacy-root-azm/src/frontend/parseLogicalLines.js +0 -94
  102. package/dist/legacy-root-azm/src/frontend/parseOp.d.ts +0 -25
  103. package/dist/legacy-root-azm/src/frontend/parseOp.js +0 -120
  104. package/dist/legacy-root-azm/src/frontend/parseOpHeader.d.ts +0 -20
  105. package/dist/legacy-root-azm/src/frontend/parseOpHeader.js +0 -32
  106. package/dist/legacy-root-azm/src/frontend/parseOperands.d.ts +0 -4
  107. package/dist/legacy-root-azm/src/frontend/parseOperands.js +0 -290
  108. package/dist/legacy-root-azm/src/frontend/parseParams.d.ts +0 -6
  109. package/dist/legacy-root-azm/src/frontend/parseParams.js +0 -62
  110. package/dist/legacy-root-azm/src/frontend/parseParserRecovery.d.ts +0 -12
  111. package/dist/legacy-root-azm/src/frontend/parseParserRecovery.js +0 -17
  112. package/dist/legacy-root-azm/src/frontend/parseParserShared.d.ts +0 -2
  113. package/dist/legacy-root-azm/src/frontend/parseParserShared.js +0 -8
  114. package/dist/legacy-root-azm/src/frontend/parseRawDataDirectiveStart.d.ts +0 -1
  115. package/dist/legacy-root-azm/src/frontend/parseRawDataDirectiveStart.js +0 -3
  116. package/dist/legacy-root-azm/src/frontend/parseRawDataDirectives.d.ts +0 -7
  117. package/dist/legacy-root-azm/src/frontend/parseRawDataDirectives.js +0 -142
  118. package/dist/legacy-root-azm/src/frontend/parseRecordFieldDecl.d.ts +0 -34
  119. package/dist/legacy-root-azm/src/frontend/parseRecordFieldDecl.js +0 -177
  120. package/dist/legacy-root-azm/src/frontend/parseSourceItemDispatch.d.ts +0 -46
  121. package/dist/legacy-root-azm/src/frontend/parseSourceItemDispatch.js +0 -53
  122. package/dist/legacy-root-azm/src/frontend/parseSourceItemTable.d.ts +0 -16
  123. package/dist/legacy-root-azm/src/frontend/parseSourceItemTable.js +0 -68
  124. package/dist/legacy-root-azm/src/frontend/parseTopLevelCommon.d.ts +0 -11
  125. package/dist/legacy-root-azm/src/frontend/parseTopLevelCommon.js +0 -50
  126. package/dist/legacy-root-azm/src/frontend/parseTypes.d.ts +0 -24
  127. package/dist/legacy-root-azm/src/frontend/parseTypes.js +0 -77
  128. package/dist/legacy-root-azm/src/frontend/parser.d.ts +0 -11
  129. package/dist/legacy-root-azm/src/frontend/parser.js +0 -88
  130. package/dist/legacy-root-azm/src/frontend/source.d.ts +0 -28
  131. package/dist/legacy-root-azm/src/frontend/source.js +0 -58
  132. package/dist/legacy-root-azm/src/frontend/sourceExtensions.d.ts +0 -2
  133. package/dist/legacy-root-azm/src/frontend/sourceExtensions.js +0 -6
  134. package/dist/legacy-root-azm/src/lintCaseStyle.d.ts +0 -4
  135. package/dist/legacy-root-azm/src/lintCaseStyle.js +0 -129
  136. package/dist/legacy-root-azm/src/lowering/asmDirectiveLowering.d.ts +0 -4
  137. package/dist/legacy-root-azm/src/lowering/asmDirectiveLowering.js +0 -229
  138. package/dist/legacy-root-azm/src/lowering/asmDirectiveTraversal.d.ts +0 -47
  139. package/dist/legacy-root-azm/src/lowering/asmDirectiveTraversal.js +0 -52
  140. package/dist/legacy-root-azm/src/lowering/asmEquResolution.d.ts +0 -8
  141. package/dist/legacy-root-azm/src/lowering/asmEquResolution.js +0 -69
  142. package/dist/legacy-root-azm/src/lowering/asmInstructionLdHelpers.d.ts +0 -15
  143. package/dist/legacy-root-azm/src/lowering/asmInstructionLdHelpers.js +0 -102
  144. package/dist/legacy-root-azm/src/lowering/asmInstructionLowering.d.ts +0 -5
  145. package/dist/legacy-root-azm/src/lowering/asmInstructionLowering.js +0 -54
  146. package/dist/legacy-root-azm/src/lowering/asmInstructionStream.d.ts +0 -46
  147. package/dist/legacy-root-azm/src/lowering/asmInstructionStream.js +0 -51
  148. package/dist/legacy-root-azm/src/lowering/asmLoweringBranchCall.d.ts +0 -43
  149. package/dist/legacy-root-azm/src/lowering/asmLoweringBranchCall.js +0 -254
  150. package/dist/legacy-root-azm/src/lowering/asmLoweringHost.d.ts +0 -23
  151. package/dist/legacy-root-azm/src/lowering/asmLoweringHost.js +0 -1
  152. package/dist/legacy-root-azm/src/lowering/asmLoweringLd.d.ts +0 -28
  153. package/dist/legacy-root-azm/src/lowering/asmLoweringLd.js +0 -144
  154. package/dist/legacy-root-azm/src/lowering/asmRangeLowering.d.ts +0 -17
  155. package/dist/legacy-root-azm/src/lowering/asmRangeLowering.js +0 -39
  156. package/dist/legacy-root-azm/src/lowering/asmRawDataLowering.d.ts +0 -16
  157. package/dist/legacy-root-azm/src/lowering/asmRawDataLowering.js +0 -209
  158. package/dist/legacy-root-azm/src/lowering/asmSourceEmitter.d.ts +0 -4
  159. package/dist/legacy-root-azm/src/lowering/asmSourceEmitter.js +0 -9
  160. package/dist/legacy-root-azm/src/lowering/asmSourceInstructionLowering.d.ts +0 -4
  161. package/dist/legacy-root-azm/src/lowering/asmSourceInstructionLowering.js +0 -14
  162. package/dist/legacy-root-azm/src/lowering/asmUtils.d.ts +0 -13
  163. package/dist/legacy-root-azm/src/lowering/asmUtils.js +0 -105
  164. package/dist/legacy-root-azm/src/lowering/assemblerFlowSetup.d.ts +0 -54
  165. package/dist/legacy-root-azm/src/lowering/assemblerFlowSetup.js +0 -128
  166. package/dist/legacy-root-azm/src/lowering/assemblerLoweringContext.d.ts +0 -151
  167. package/dist/legacy-root-azm/src/lowering/assemblerLoweringContext.js +0 -16
  168. package/dist/legacy-root-azm/src/lowering/assemblerLoweringContextSplit.d.ts +0 -7
  169. package/dist/legacy-root-azm/src/lowering/assemblerLoweringContextSplit.js +0 -75
  170. package/dist/legacy-root-azm/src/lowering/assemblerLoweringPhases.d.ts +0 -66
  171. package/dist/legacy-root-azm/src/lowering/assemblerLoweringPhases.js +0 -166
  172. package/dist/legacy-root-azm/src/lowering/bytePlacement.d.ts +0 -7
  173. package/dist/legacy-root-azm/src/lowering/bytePlacement.js +0 -37
  174. package/dist/legacy-root-azm/src/lowering/capabilities.d.ts +0 -67
  175. package/dist/legacy-root-azm/src/lowering/capabilities.js +0 -1
  176. package/dist/legacy-root-azm/src/lowering/eaResolution.d.ts +0 -58
  177. package/dist/legacy-root-azm/src/lowering/eaResolution.js +0 -159
  178. package/dist/legacy-root-azm/src/lowering/emissionCore.d.ts +0 -17
  179. package/dist/legacy-root-azm/src/lowering/emissionCore.js +0 -21
  180. package/dist/legacy-root-azm/src/lowering/emit.d.ts +0 -17
  181. package/dist/legacy-root-azm/src/lowering/emit.js +0 -46
  182. package/dist/legacy-root-azm/src/lowering/emitContextBuilder.d.ts +0 -63
  183. package/dist/legacy-root-azm/src/lowering/emitContextBuilder.js +0 -41
  184. package/dist/legacy-root-azm/src/lowering/emitFinalization.d.ts +0 -61
  185. package/dist/legacy-root-azm/src/lowering/emitFinalization.js +0 -66
  186. package/dist/legacy-root-azm/src/lowering/emitFinalizationSetup.d.ts +0 -19
  187. package/dist/legacy-root-azm/src/lowering/emitFinalizationSetup.js +0 -26
  188. package/dist/legacy-root-azm/src/lowering/emitPhase1BuildProgramLoweringContext.d.ts +0 -7
  189. package/dist/legacy-root-azm/src/lowering/emitPhase1BuildProgramLoweringContext.js +0 -119
  190. package/dist/legacy-root-azm/src/lowering/emitPhase1Helpers.d.ts +0 -4
  191. package/dist/legacy-root-azm/src/lowering/emitPhase1Helpers.js +0 -12
  192. package/dist/legacy-root-azm/src/lowering/emitPhase1Types.d.ts +0 -21
  193. package/dist/legacy-root-azm/src/lowering/emitPhase1Types.js +0 -1
  194. package/dist/legacy-root-azm/src/lowering/emitPhase1WirePipeline.d.ts +0 -70
  195. package/dist/legacy-root-azm/src/lowering/emitPhase1WirePipeline.js +0 -203
  196. package/dist/legacy-root-azm/src/lowering/emitPhase1Workspace.d.ts +0 -82
  197. package/dist/legacy-root-azm/src/lowering/emitPhase1Workspace.js +0 -55
  198. package/dist/legacy-root-azm/src/lowering/emitPipeline.d.ts +0 -121
  199. package/dist/legacy-root-azm/src/lowering/emitPipeline.js +0 -57
  200. package/dist/legacy-root-azm/src/lowering/emitProgramContext.d.ts +0 -39
  201. package/dist/legacy-root-azm/src/lowering/emitProgramContext.js +0 -29
  202. package/dist/legacy-root-azm/src/lowering/emitState.d.ts +0 -90
  203. package/dist/legacy-root-azm/src/lowering/emitState.js +0 -124
  204. package/dist/legacy-root-azm/src/lowering/fixupBaseResolution.d.ts +0 -7
  205. package/dist/legacy-root-azm/src/lowering/fixupBaseResolution.js +0 -23
  206. package/dist/legacy-root-azm/src/lowering/fixupEmission.d.ts +0 -64
  207. package/dist/legacy-root-azm/src/lowering/fixupEmission.js +0 -199
  208. package/dist/legacy-root-azm/src/lowering/immMath.d.ts +0 -2
  209. package/dist/legacy-root-azm/src/lowering/immMath.js +0 -34
  210. package/dist/legacy-root-azm/src/lowering/inputAssets.d.ts +0 -7
  211. package/dist/legacy-root-azm/src/lowering/inputAssets.js +0 -106
  212. package/dist/legacy-root-azm/src/lowering/ldEncoding.d.ts +0 -15
  213. package/dist/legacy-root-azm/src/lowering/ldEncoding.js +0 -12
  214. package/dist/legacy-root-azm/src/lowering/ldEncodingRegMemHelpers.d.ts +0 -5
  215. package/dist/legacy-root-azm/src/lowering/ldEncodingRegMemHelpers.js +0 -124
  216. package/dist/legacy-root-azm/src/lowering/ldFormSelection.d.ts +0 -26
  217. package/dist/legacy-root-azm/src/lowering/ldFormSelection.js +0 -92
  218. package/dist/legacy-root-azm/src/lowering/ldLowering.d.ts +0 -7
  219. package/dist/legacy-root-azm/src/lowering/ldLowering.js +0 -13
  220. package/dist/legacy-root-azm/src/lowering/loweredAsmByteEmission.d.ts +0 -23
  221. package/dist/legacy-root-azm/src/lowering/loweredAsmByteEmission.js +0 -185
  222. package/dist/legacy-root-azm/src/lowering/loweredAsmPlacement.d.ts +0 -13
  223. package/dist/legacy-root-azm/src/lowering/loweredAsmPlacement.js +0 -86
  224. package/dist/legacy-root-azm/src/lowering/loweredAsmStreamRecording.d.ts +0 -27
  225. package/dist/legacy-root-azm/src/lowering/loweredAsmStreamRecording.js +0 -215
  226. package/dist/legacy-root-azm/src/lowering/loweredAsmTypes.d.ts +0 -202
  227. package/dist/legacy-root-azm/src/lowering/loweredAsmTypes.js +0 -1
  228. package/dist/legacy-root-azm/src/lowering/loweredFormat.d.ts +0 -3
  229. package/dist/legacy-root-azm/src/lowering/loweredFormat.js +0 -26
  230. package/dist/legacy-root-azm/src/lowering/loweredItemSize.d.ts +0 -4
  231. package/dist/legacy-root-azm/src/lowering/loweredItemSize.js +0 -17
  232. package/dist/legacy-root-azm/src/lowering/loweringDiagnostics.d.ts +0 -9
  233. package/dist/legacy-root-azm/src/lowering/loweringDiagnostics.js +0 -55
  234. package/dist/legacy-root-azm/src/lowering/loweringTypes.d.ts +0 -27
  235. package/dist/legacy-root-azm/src/lowering/loweringTypes.js +0 -1
  236. package/dist/legacy-root-azm/src/lowering/opCandidateRegistry.d.ts +0 -9
  237. package/dist/legacy-root-azm/src/lowering/opCandidateRegistry.js +0 -9
  238. package/dist/legacy-root-azm/src/lowering/opExpansionExecution.d.ts +0 -15
  239. package/dist/legacy-root-azm/src/lowering/opExpansionExecution.js +0 -45
  240. package/dist/legacy-root-azm/src/lowering/opExpansionOrchestration.d.ts +0 -15
  241. package/dist/legacy-root-azm/src/lowering/opExpansionOrchestration.js +0 -88
  242. package/dist/legacy-root-azm/src/lowering/opExpansionStream.d.ts +0 -12
  243. package/dist/legacy-root-azm/src/lowering/opExpansionStream.js +0 -176
  244. package/dist/legacy-root-azm/src/lowering/opMatching.d.ts +0 -52
  245. package/dist/legacy-root-azm/src/lowering/opMatching.js +0 -355
  246. package/dist/legacy-root-azm/src/lowering/opSubstitution.d.ts +0 -13
  247. package/dist/legacy-root-azm/src/lowering/opSubstitution.js +0 -175
  248. package/dist/legacy-root-azm/src/lowering/prescanTypes.d.ts +0 -7
  249. package/dist/legacy-root-azm/src/lowering/prescanTypes.js +0 -1
  250. package/dist/legacy-root-azm/src/lowering/programLowering.d.ts +0 -144
  251. package/dist/legacy-root-azm/src/lowering/programLowering.js +0 -2
  252. package/dist/legacy-root-azm/src/lowering/programLoweringDeclarations.d.ts +0 -5
  253. package/dist/legacy-root-azm/src/lowering/programLoweringDeclarations.js +0 -5
  254. package/dist/legacy-root-azm/src/lowering/programLoweringFinalize.d.ts +0 -18
  255. package/dist/legacy-root-azm/src/lowering/programLoweringFinalize.js +0 -115
  256. package/dist/legacy-root-azm/src/lowering/programLoweringTraversal.d.ts +0 -2
  257. package/dist/legacy-root-azm/src/lowering/programLoweringTraversal.js +0 -93
  258. package/dist/legacy-root-azm/src/lowering/programPrescan.d.ts +0 -3
  259. package/dist/legacy-root-azm/src/lowering/programPrescan.js +0 -37
  260. package/dist/legacy-root-azm/src/lowering/traceFormat.d.ts +0 -13
  261. package/dist/legacy-root-azm/src/lowering/traceFormat.js +0 -211
  262. package/dist/legacy-root-azm/src/packageInfo.d.ts +0 -1
  263. package/dist/legacy-root-azm/src/packageInfo.js +0 -15
  264. package/dist/legacy-root-azm/src/pathCompare.d.ts +0 -3
  265. package/dist/legacy-root-azm/src/pathCompare.js +0 -26
  266. package/dist/legacy-root-azm/src/pipeline.d.ts +0 -91
  267. package/dist/legacy-root-azm/src/pipeline.js +0 -1
  268. package/dist/legacy-root-azm/src/registerCare/analyze.d.ts +0 -24
  269. package/dist/legacy-root-azm/src/registerCare/analyze.js +0 -327
  270. package/dist/legacy-root-azm/src/registerCare/boundaryHints.d.ts +0 -2
  271. package/dist/legacy-root-azm/src/registerCare/boundaryHints.js +0 -10
  272. package/dist/legacy-root-azm/src/registerCare/carriers.d.ts +0 -4
  273. package/dist/legacy-root-azm/src/registerCare/carriers.js +0 -78
  274. package/dist/legacy-root-azm/src/registerCare/controlFlow.d.ts +0 -5
  275. package/dist/legacy-root-azm/src/registerCare/controlFlow.js +0 -35
  276. package/dist/legacy-root-azm/src/registerCare/fix.d.ts +0 -11
  277. package/dist/legacy-root-azm/src/registerCare/fix.js +0 -119
  278. package/dist/legacy-root-azm/src/registerCare/liveness.d.ts +0 -7
  279. package/dist/legacy-root-azm/src/registerCare/liveness.js +0 -227
  280. package/dist/legacy-root-azm/src/registerCare/profiles.d.ts +0 -11
  281. package/dist/legacy-root-azm/src/registerCare/profiles.js +0 -45
  282. package/dist/legacy-root-azm/src/registerCare/programModel.d.ts +0 -3
  283. package/dist/legacy-root-azm/src/registerCare/programModel.js +0 -181
  284. package/dist/legacy-root-azm/src/registerCare/report.d.ts +0 -5
  285. package/dist/legacy-root-azm/src/registerCare/report.js +0 -139
  286. package/dist/legacy-root-azm/src/registerCare/smartComments.d.ts +0 -5
  287. package/dist/legacy-root-azm/src/registerCare/smartComments.js +0 -247
  288. package/dist/legacy-root-azm/src/registerCare/types.d.ts +0 -154
  289. package/dist/legacy-root-azm/src/registerCare/types.js +0 -1
  290. package/dist/legacy-root-azm/src/semantics/declVisitor.d.ts +0 -5
  291. package/dist/legacy-root-azm/src/semantics/declVisitor.js +0 -11
  292. package/dist/legacy-root-azm/src/semantics/env.d.ts +0 -28
  293. package/dist/legacy-root-azm/src/semantics/env.js +0 -432
  294. package/dist/legacy-root-azm/src/semantics/layout.d.ts +0 -21
  295. package/dist/legacy-root-azm/src/semantics/layout.js +0 -226
  296. package/dist/legacy-root-azm/src/semantics/layoutCastFold.d.ts +0 -22
  297. package/dist/legacy-root-azm/src/semantics/layoutCastFold.js +0 -118
  298. package/dist/legacy-root-azm/src/semantics/semanticsDiagnostics.d.ts +0 -2
  299. package/dist/legacy-root-azm/src/semantics/semanticsDiagnostics.js +0 -4
  300. package/dist/legacy-root-azm/src/semantics/typeQueries.d.ts +0 -31
  301. package/dist/legacy-root-azm/src/semantics/typeQueries.js +0 -124
  302. package/dist/legacy-root-azm/src/sourceIncludeExpansion.d.ts +0 -17
  303. package/dist/legacy-root-azm/src/sourceIncludeExpansion.js +0 -124
  304. package/dist/legacy-root-azm/src/sourceIncludePaths.d.ts +0 -1
  305. package/dist/legacy-root-azm/src/sourceIncludePaths.js +0 -12
  306. package/dist/legacy-root-azm/src/sourceLoader.d.ts +0 -15
  307. package/dist/legacy-root-azm/src/sourceLoader.js +0 -118
  308. package/dist/legacy-root-azm/src/z80/effects.d.ts +0 -3
  309. package/dist/legacy-root-azm/src/z80/effects.js +0 -516
  310. package/dist/legacy-root-azm/src/z80/encode.d.ts +0 -10
  311. package/dist/legacy-root-azm/src/z80/encode.js +0 -412
  312. package/dist/legacy-root-azm/src/z80/encodeAlu.d.ts +0 -7
  313. package/dist/legacy-root-azm/src/z80/encodeAlu.js +0 -219
  314. package/dist/legacy-root-azm/src/z80/encodeBitOps.d.ts +0 -7
  315. package/dist/legacy-root-azm/src/z80/encodeBitOps.js +0 -123
  316. package/dist/legacy-root-azm/src/z80/encodeContext.d.ts +0 -29
  317. package/dist/legacy-root-azm/src/z80/encodeContext.js +0 -1
  318. package/dist/legacy-root-azm/src/z80/encodeControl.d.ts +0 -26
  319. package/dist/legacy-root-azm/src/z80/encodeControl.js +0 -180
  320. package/dist/legacy-root-azm/src/z80/encodeCoreOps.d.ts +0 -7
  321. package/dist/legacy-root-azm/src/z80/encodeCoreOps.js +0 -131
  322. package/dist/legacy-root-azm/src/z80/encodeIo.d.ts +0 -9
  323. package/dist/legacy-root-azm/src/z80/encodeIo.js +0 -128
  324. package/dist/legacy-root-azm/src/z80/encodeLd.d.ts +0 -13
  325. package/dist/legacy-root-azm/src/z80/encodeLd.js +0 -273
  326. package/dist/legacy-root-azm/src/z80/encoderRegistry.d.ts +0 -13
  327. package/dist/legacy-root-azm/src/z80/encoderRegistry.js +0 -169
  328. package/dist/src/outputs/write-listing.d.ts +0 -2
  329. package/dist/src/outputs/write-listing.js +0 -79
  330. /package/dist/{legacy-root-azm/src/registerCare → src/register-care}/annotate.d.ts +0 -0
  331. /package/dist/{legacy-root-azm/src/registerCare → src/register-care}/annotate.js +0 -0
  332. /package/dist/{legacy-root-azm/src/registerCare → src/register-care}/sourceText.d.ts +0 -0
  333. /package/dist/{legacy-root-azm/src/registerCare → src/register-care}/sourceText.js +0 -0
  334. /package/dist/{legacy-root-azm/src/registerCare → src/register-care}/summary.d.ts +0 -0
@@ -1,397 +0,0 @@
1
- import { parseDiag as diag } from './parseDiagnostics.js';
2
- import { CHAR_ESCAPE_VALUES, IMM_BINARY_OPERATORS, IMM_BINARY_OPERATOR_PRECEDENCE, IMM_MULTI_CHAR_OPERATORS, IMM_UNARY_OPERATOR_SET, } from './grammarData.js';
3
- export function immLiteral(filePath, s, value) {
4
- return { kind: 'ImmLiteral', span: { ...s, file: filePath }, value };
5
- }
6
- function immName(filePath, s, name) {
7
- return { kind: 'ImmName', span: { ...s, file: filePath }, name };
8
- }
9
- export function parseTypeExprFromText(typeText, typeSpan) {
10
- let rest = typeText.trim();
11
- const nameMatch = /^([A-Za-z_][A-Za-z0-9_]*)/.exec(rest);
12
- if (!nameMatch)
13
- return undefined;
14
- const name = nameMatch[1];
15
- rest = rest.slice(name.length).trimStart();
16
- let typeExpr = { kind: 'TypeName', span: typeSpan, name };
17
- while (rest.startsWith('[')) {
18
- const m = /^\[\s*([0-9]+)?\s*\]/.exec(rest);
19
- if (!m)
20
- return undefined;
21
- const lenText = m[1];
22
- if (lenText === undefined)
23
- return undefined;
24
- typeExpr = {
25
- kind: 'ArrayType',
26
- span: typeSpan,
27
- element: typeExpr,
28
- length: Number.parseInt(lenText, 10),
29
- };
30
- rest = rest.slice(m[0].length).trimStart();
31
- }
32
- if (rest.length > 0)
33
- return undefined;
34
- return typeExpr;
35
- }
36
- export function diagIfArrayLengthMissing(diagnostics, filePath, typeText, where) {
37
- if (!/\[\s*\]/.test(typeText))
38
- return false;
39
- diag(diagnostics, filePath, `Array length is required here; write T[N].`, where);
40
- return true;
41
- }
42
- export function parseNumberLiteral(text) {
43
- const t = text.trim();
44
- if (/^[0-9][0-9A-Fa-f]*[Hh]$/.test(t)) {
45
- return Number.parseInt(t.slice(0, -1), 16);
46
- }
47
- if (/^[01]+[Bb]$/.test(t)) {
48
- return Number.parseInt(t.slice(0, -1), 2);
49
- }
50
- if (/^\$[0-9A-Fa-f]+$/.test(t)) {
51
- return Number.parseInt(t.slice(1), 16);
52
- }
53
- if (/^%[01]+$/.test(t)) {
54
- return Number.parseInt(t.slice(1), 2);
55
- }
56
- if (/^0b[01]+$/.test(t)) {
57
- return Number.parseInt(t.slice(2), 2);
58
- }
59
- if (/^0x[0-9A-Fa-f]+$/i.test(t)) {
60
- return Number.parseInt(t.slice(2), 16);
61
- }
62
- if (/^[0-9]+$/.test(t)) {
63
- return Number.parseInt(t, 10);
64
- }
65
- return undefined;
66
- }
67
- function isImmUnaryOp(op) {
68
- return IMM_UNARY_OPERATOR_SET.has(op);
69
- }
70
- function isImmBinaryOp(op) {
71
- return IMM_BINARY_OPERATORS.has(op);
72
- }
73
- function isImmOpToken(text) {
74
- return IMM_UNARY_OPERATOR_SET.has(text) || IMM_BINARY_OPERATORS.has(text);
75
- }
76
- function scanQuotedByteValue(s, start, quote) {
77
- let i = start + 1;
78
- if (i >= s.length)
79
- return undefined;
80
- let value;
81
- if (s[i] === '\\') {
82
- i++;
83
- if (i >= s.length)
84
- return undefined;
85
- const esc = s[i];
86
- i++;
87
- if (esc === 'x') {
88
- const hex = s.slice(i, i + 2);
89
- if (!/^[0-9A-Fa-f]{2}$/.test(hex))
90
- return undefined;
91
- value = Number.parseInt(hex, 16);
92
- i += 2;
93
- }
94
- else {
95
- const escaped = CHAR_ESCAPE_VALUES.get(esc);
96
- if (escaped === undefined)
97
- return undefined;
98
- value = escaped;
99
- }
100
- }
101
- else {
102
- if (s[i] === quote || s[i] === '\n' || s[i] === '\r')
103
- return undefined;
104
- const cp = s.codePointAt(i);
105
- if (cp === undefined)
106
- return undefined;
107
- value = cp;
108
- i += cp > 0xffff ? 2 : 1;
109
- }
110
- if (i >= s.length || s[i] !== quote)
111
- return undefined;
112
- return { value, end: i + 1 };
113
- }
114
- function tokenizeImm(text) {
115
- const out = [];
116
- let i = 0;
117
- const s = text.trim();
118
- while (i < s.length) {
119
- const ch = s[i];
120
- if (/\s/.test(ch)) {
121
- i++;
122
- continue;
123
- }
124
- if (ch === '(') {
125
- out.push({ kind: 'lparen' });
126
- i++;
127
- continue;
128
- }
129
- if (ch === ',') {
130
- out.push({ kind: 'comma' });
131
- i++;
132
- continue;
133
- }
134
- if (ch === '.') {
135
- out.push({ kind: 'dot' });
136
- i++;
137
- continue;
138
- }
139
- if (ch === ')') {
140
- out.push({ kind: 'rparen' });
141
- i++;
142
- continue;
143
- }
144
- if (ch === '[') {
145
- out.push({ kind: 'lbrack' });
146
- i++;
147
- continue;
148
- }
149
- if (ch === ']') {
150
- out.push({ kind: 'rbrack' });
151
- i++;
152
- continue;
153
- }
154
- const two = s.slice(i, i + 2);
155
- if (IMM_MULTI_CHAR_OPERATORS.has(two)) {
156
- out.push({ kind: 'op', text: two });
157
- i += 2;
158
- continue;
159
- }
160
- if (ch === '$') {
161
- if (/^[0-9A-Fa-f]/.test(s[i + 1] ?? '')) {
162
- const num = /^\$[0-9A-Fa-f]+/.exec(s.slice(i));
163
- if (!num)
164
- return undefined;
165
- out.push({ kind: 'num', text: num[0] });
166
- i += num[0].length;
167
- continue;
168
- }
169
- if (/^[A-Za-z_]/.test(s[i + 1] ?? ''))
170
- return undefined;
171
- out.push({ kind: 'current' });
172
- i++;
173
- continue;
174
- }
175
- if (ch === "'" || ch === '"') {
176
- const quoted = scanQuotedByteValue(s, i, ch);
177
- if (!quoted)
178
- return undefined;
179
- i = quoted.end;
180
- out.push({ kind: 'num', text: String(quoted.value) });
181
- continue;
182
- }
183
- const num = /^([0-9][0-9A-Fa-f]*[Hh]|%[01]+|0b[01]+|0x[0-9A-Fa-f]+|[01]+[Bb]|[0-9]+)/i.exec(s.slice(i));
184
- if (num) {
185
- out.push({ kind: 'num', text: num[0] });
186
- i += num[0].length;
187
- continue;
188
- }
189
- if (isImmOpToken(ch)) {
190
- out.push({ kind: 'op', text: ch });
191
- i++;
192
- continue;
193
- }
194
- const ident = /^[A-Za-z_][A-Za-z0-9_]*/.exec(s.slice(i));
195
- if (ident) {
196
- out.push({ kind: 'ident', text: ident[0] });
197
- i += ident[0].length;
198
- continue;
199
- }
200
- return undefined;
201
- }
202
- return out;
203
- }
204
- export function parseImmExprFromText(filePath, exprText, exprSpan, diagnostics, emitDiagnostics = true) {
205
- const tokenized = tokenizeImm(exprText);
206
- if (!tokenized) {
207
- if (emitDiagnostics) {
208
- diag(diagnostics, filePath, `Invalid imm expression: ${exprText}`, {
209
- line: exprSpan.start.line,
210
- column: exprSpan.start.column,
211
- });
212
- }
213
- return undefined;
214
- }
215
- const tokens = tokenized;
216
- let idx = 0;
217
- function parseDottedIdentName() {
218
- const first = tokens[idx];
219
- if (!first || first.kind !== 'ident')
220
- return undefined;
221
- const parts = [first.text];
222
- idx++;
223
- while (tokens[idx]?.kind === 'dot') {
224
- const next = tokens[idx + 1];
225
- if (!next || next.kind !== 'ident')
226
- return undefined;
227
- parts.push(next.text);
228
- idx += 2;
229
- }
230
- return parts.join('.');
231
- }
232
- function parseBuiltinTypeExprArg() {
233
- const nameTok = tokens[idx];
234
- if (!nameTok || nameTok.kind !== 'ident')
235
- return undefined;
236
- const name = nameTok.text;
237
- idx++;
238
- let typeExpr = { kind: 'TypeName', span: exprSpan, name };
239
- while (tokens[idx]?.kind === 'lbrack') {
240
- idx++;
241
- const lenTok = tokens[idx];
242
- if (!lenTok || lenTok.kind !== 'num')
243
- return undefined;
244
- if (!/^[0-9]+$/.test(lenTok.text))
245
- return undefined;
246
- const len = Number.parseInt(lenTok.text, 10);
247
- idx++;
248
- if (tokens[idx]?.kind !== 'rbrack')
249
- return undefined;
250
- idx++;
251
- typeExpr = { kind: 'ArrayType', span: exprSpan, element: typeExpr, length: len };
252
- }
253
- return typeExpr;
254
- }
255
- function parseOffsetPathArg() {
256
- const root = tokens[idx];
257
- if (!root || (root.kind !== 'ident' && root.kind !== 'lbrack'))
258
- return undefined;
259
- const base = root.kind === 'ident' ? root.text : undefined;
260
- if (base !== undefined)
261
- idx++;
262
- const path = {
263
- kind: 'OffsetPath',
264
- span: exprSpan,
265
- ...(base !== undefined ? { base } : {}),
266
- steps: [],
267
- };
268
- while (true) {
269
- if (tokens[idx]?.kind === 'dot') {
270
- idx++;
271
- const fieldTok = tokens[idx];
272
- if (!fieldTok || fieldTok.kind !== 'ident')
273
- return undefined;
274
- idx++;
275
- path.steps.push({ kind: 'OffsetField', span: exprSpan, name: fieldTok.text });
276
- continue;
277
- }
278
- if (tokens[idx]?.kind === 'lbrack') {
279
- idx++;
280
- const inner = parseExpr(1);
281
- if (!inner)
282
- return undefined;
283
- if (tokens[idx]?.kind !== 'rbrack')
284
- return undefined;
285
- idx++;
286
- path.steps.push({ kind: 'OffsetIndex', span: exprSpan, expr: inner });
287
- continue;
288
- }
289
- break;
290
- }
291
- return path;
292
- }
293
- function parseExpr(minPrec) {
294
- let left = parsePrimary();
295
- if (!left)
296
- return undefined;
297
- while (true) {
298
- const t = tokens[idx];
299
- if (!t || t.kind !== 'op')
300
- break;
301
- const prec = IMM_BINARY_OPERATOR_PRECEDENCE.get(t.text) ?? 0;
302
- if (prec < minPrec)
303
- break;
304
- if (!isImmBinaryOp(t.text))
305
- break;
306
- idx++;
307
- const right = parseExpr(prec + 1);
308
- if (!right)
309
- return undefined;
310
- left = { kind: 'ImmBinary', span: exprSpan, op: t.text, left, right };
311
- }
312
- return left;
313
- }
314
- function parsePrimary() {
315
- const t = tokens[idx];
316
- if (!t)
317
- return undefined;
318
- if (t.kind === 'num') {
319
- idx++;
320
- const n = parseNumberLiteral(t.text);
321
- if (n === undefined)
322
- return undefined;
323
- return immLiteral(filePath, exprSpan, n);
324
- }
325
- if (t.kind === 'current') {
326
- idx++;
327
- return { kind: 'ImmCurrentLocation', span: { ...exprSpan, file: filePath } };
328
- }
329
- if (t.kind === 'ident') {
330
- if (t.text === 'sizeof' && tokens[idx + 1]?.kind === 'lparen') {
331
- idx += 2;
332
- const typeExpr = parseBuiltinTypeExprArg();
333
- if (!typeExpr)
334
- return undefined;
335
- if (tokens[idx]?.kind !== 'rparen')
336
- return undefined;
337
- idx++;
338
- return { kind: 'ImmSizeof', span: exprSpan, typeExpr };
339
- }
340
- if (t.text === 'offset' && tokens[idx + 1]?.kind === 'lparen') {
341
- idx += 2;
342
- const typeExpr = parseBuiltinTypeExprArg();
343
- if (!typeExpr)
344
- return undefined;
345
- if (tokens[idx]?.kind !== 'comma')
346
- return undefined;
347
- idx++;
348
- const path = parseOffsetPathArg();
349
- if (!path)
350
- return undefined;
351
- if (tokens[idx]?.kind !== 'rparen')
352
- return undefined;
353
- idx++;
354
- return { kind: 'ImmOffset', span: exprSpan, typeExpr, path };
355
- }
356
- const name = parseDottedIdentName();
357
- return name ? immName(filePath, exprSpan, name) : undefined;
358
- }
359
- if (t.kind === 'dot') {
360
- const next = tokens[idx + 1];
361
- if (!next || next.kind !== 'ident')
362
- return undefined;
363
- const name = next.text;
364
- idx += 2;
365
- return immName(filePath, exprSpan, `.${name}`);
366
- }
367
- if (t.kind === 'op' && isImmUnaryOp(t.text)) {
368
- idx++;
369
- const inner = parsePrimary();
370
- if (!inner)
371
- return undefined;
372
- return { kind: 'ImmUnary', span: exprSpan, op: t.text, expr: inner };
373
- }
374
- if (t.kind === 'lparen') {
375
- idx++;
376
- const inner = parseExpr(1);
377
- if (!inner)
378
- return undefined;
379
- if (tokens[idx]?.kind !== 'rparen')
380
- return undefined;
381
- idx++;
382
- return inner;
383
- }
384
- return undefined;
385
- }
386
- const root = parseExpr(1);
387
- if (!root || idx !== tokens.length) {
388
- if (emitDiagnostics) {
389
- diag(diagnostics, filePath, `Invalid imm expression: ${exprText}`, {
390
- line: exprSpan.start.line,
391
- column: exprSpan.start.column,
392
- });
393
- }
394
- return undefined;
395
- }
396
- return root;
397
- }
@@ -1,11 +0,0 @@
1
- import type { Diagnostic } from '../diagnosticTypes.js';
2
- import type { SourceFile } from './source.js';
3
- export type LogicalLine = {
4
- raw: string;
5
- startOffset: number;
6
- endOffset: number;
7
- lineNo: number;
8
- filePath: string;
9
- };
10
- export declare function buildLogicalLines(file: SourceFile, sourcePath: string, diagnostics: Diagnostic[]): LogicalLine[];
11
- export declare function getLogicalLine(logicalLines: LogicalLine[], lineIndex: number, sourcePath: string): LogicalLine;
@@ -1,94 +0,0 @@
1
- import { parseDiag as diag } from './parseDiagnostics.js';
2
- export function buildLogicalLines(file, sourcePath, diagnostics) {
3
- const logicalLines = [];
4
- for (let i = 0; i < file.lineStarts.length; i++) {
5
- const startOffset = file.lineStarts[i] ?? 0;
6
- const nextStart = file.lineStarts[i + 1] ?? file.text.length;
7
- let rawWithEol = file.text.slice(startOffset, nextStart);
8
- if (rawWithEol.endsWith('\n'))
9
- rawWithEol = rawWithEol.slice(0, -1);
10
- if (rawWithEol.endsWith('\r'))
11
- rawWithEol = rawWithEol.slice(0, -1);
12
- const raw = rawWithEol;
13
- const lineNo = file.lineBaseLines?.[i] ?? i + 1;
14
- const filePath = file.lineFiles?.[i] ?? sourcePath;
15
- let segmentStart = 0;
16
- let inChar = false;
17
- let inString = false;
18
- let escaped = false;
19
- for (let j = 0; j < raw.length; j++) {
20
- const ch = raw[j];
21
- if (inChar || inString) {
22
- if (escaped) {
23
- escaped = false;
24
- continue;
25
- }
26
- if (ch === '\\') {
27
- escaped = true;
28
- continue;
29
- }
30
- if (inChar && ch === "'") {
31
- inChar = false;
32
- continue;
33
- }
34
- if (inString && ch === '"') {
35
- inString = false;
36
- continue;
37
- }
38
- continue;
39
- }
40
- if (ch === ';') {
41
- break;
42
- }
43
- if (ch === "'") {
44
- inChar = true;
45
- continue;
46
- }
47
- if (ch === '"') {
48
- inString = true;
49
- continue;
50
- }
51
- if (ch === '\\') {
52
- const rest = raw.slice(j + 1);
53
- const hasWhitespace = rest.length > 0 && /[ \t]/.test(rest[0]);
54
- if (!hasWhitespace && rest.length > 0)
55
- continue;
56
- const nonSpaceIndex = rest.search(/[^\s]/);
57
- const nextToken = nonSpaceIndex >= 0 ? rest[nonSpaceIndex] : '';
58
- if (nonSpaceIndex === -1 || nextToken === ';') {
59
- diag(diagnostics, filePath, 'Trailing backslash must be followed by another statement.', {
60
- line: lineNo,
61
- column: j + 1,
62
- });
63
- continue;
64
- }
65
- const segment = raw.slice(segmentStart, j);
66
- logicalLines.push({
67
- raw: segment,
68
- startOffset: startOffset + segmentStart,
69
- endOffset: startOffset + j,
70
- lineNo,
71
- filePath,
72
- });
73
- segmentStart = j + 1;
74
- }
75
- }
76
- logicalLines.push({
77
- raw: raw.slice(segmentStart),
78
- startOffset: startOffset + segmentStart,
79
- endOffset: startOffset + raw.length,
80
- lineNo,
81
- filePath,
82
- });
83
- }
84
- return logicalLines;
85
- }
86
- export function getLogicalLine(logicalLines, lineIndex, sourcePath) {
87
- return (logicalLines[lineIndex] ?? {
88
- raw: '',
89
- startOffset: 0,
90
- endOffset: 0,
91
- lineNo: 1,
92
- filePath: sourcePath,
93
- });
94
- }
@@ -1,25 +0,0 @@
1
- import type { OpDeclNode, OpParamNode, SourceSpan } from './ast.js';
2
- import type { SourceFile } from './source.js';
3
- import type { Diagnostic } from '../diagnosticTypes.js';
4
- import type { ParseParamsContext } from './parseParams.js';
5
- type RawLine = {
6
- raw: string;
7
- startOffset: number;
8
- endOffset: number;
9
- lineNo: number;
10
- filePath: string;
11
- };
12
- type ParseOpContext = {
13
- file: SourceFile;
14
- lineCount: number;
15
- diagnostics: Diagnostic[];
16
- sourcePath: string;
17
- getRawLine: (lineIndex: number) => RawLine;
18
- parseOpParamsFromText: (filePath: string, paramsText: string, paramsSpan: SourceSpan, diagnostics: Diagnostic[], ctx: ParseParamsContext) => OpParamNode[] | undefined;
19
- } & ParseParamsContext;
20
- type ParsedOpDecl = {
21
- node: OpDeclNode;
22
- nextIndex: number;
23
- };
24
- export declare function parseTopLevelOpDecl(opTail: string, stmtText: string, stmtSpan: SourceSpan, lineNo: number, startIndex: number, ctx: ParseOpContext): ParsedOpDecl | undefined;
25
- export {};
@@ -1,120 +0,0 @@
1
- import { span } from './source.js';
2
- import { parseDiag as diag } from './parseDiagnostics.js';
3
- import { appendParsedAsmStatement, parseAsmStatement } from './parseAsmStatements.js';
4
- import { topLevelStartKeyword } from './parseTopLevelCommon.js';
5
- import { stripLineComment as stripComment } from './parseParserShared.js';
6
- import { parseOpHeader } from './parseOpHeader.js';
7
- export function parseTopLevelOpDecl(opTail, stmtText, stmtSpan, lineNo, startIndex, ctx) {
8
- const { file, lineCount, diagnostics, sourcePath, getRawLine, isReservedTopLevelName, parseOpParamsFromText, } = ctx;
9
- const parsedHeader = parseOpHeader({
10
- header: opTail,
11
- stmtText,
12
- stmtSpan,
13
- lineNo,
14
- diagnostics,
15
- sourcePath,
16
- expectedHeader: '<name>(...)',
17
- isReservedTopLevelName,
18
- parseParams: (paramsText) => parseOpParamsFromText(sourcePath, paramsText, stmtSpan, diagnostics, {
19
- isReservedTopLevelName,
20
- }),
21
- });
22
- if (!parsedHeader) {
23
- return undefined;
24
- }
25
- const name = parsedHeader.name;
26
- const params = parsedHeader.params;
27
- const trailing = parsedHeader.trailing.trim();
28
- if (trailing.length > 0) {
29
- diag(diagnostics, sourcePath, `Invalid op header: unexpected trailing tokens`, {
30
- line: lineNo,
31
- column: 1,
32
- });
33
- return undefined;
34
- }
35
- const opStartOffset = stmtSpan.start.offset;
36
- let index = startIndex + 1;
37
- const bodyItems = [];
38
- let terminated = false;
39
- let interruptedByKeyword;
40
- let interruptedByLine;
41
- let interruptedByFilePath;
42
- let opEndOffset = file.text.length;
43
- while (index < lineCount) {
44
- const { raw: rawLine, startOffset: so, endOffset: eo, lineNo: bodyLineNo, filePath: bodyFilePath, } = getRawLine(index);
45
- const rawNoComment = stripComment(rawLine);
46
- const content = rawNoComment.trim();
47
- const contentLower = content.toLowerCase();
48
- if (content.length === 0) {
49
- index++;
50
- continue;
51
- }
52
- if (bodyItems.length === 0 && contentLower === 'asm') {
53
- diag(diagnostics, bodyFilePath, `Unexpected "asm" in op body (op bodies are implicit)`, {
54
- line: bodyLineNo,
55
- column: 1,
56
- });
57
- index++;
58
- continue;
59
- }
60
- if (contentLower === 'end') {
61
- terminated = true;
62
- opEndOffset = eo;
63
- index++;
64
- break;
65
- }
66
- const topKeyword = topLevelStartKeyword(content);
67
- if (topKeyword !== undefined) {
68
- interruptedByKeyword = topKeyword;
69
- interruptedByLine = bodyLineNo;
70
- interruptedByFilePath = bodyFilePath;
71
- break;
72
- }
73
- const fullSpan = span(file, so, eo);
74
- const contentStart = rawNoComment.indexOf(content);
75
- const contentSpan = contentStart >= 0 ? span(file, so + contentStart, so + rawNoComment.length) : fullSpan;
76
- const labelMatch = /^([A-Za-z_][A-Za-z0-9_]*)\s*:(?!\=)\s*(.*)$/.exec(content);
77
- if (labelMatch) {
78
- const label = labelMatch[1];
79
- const remainder = labelMatch[2] ?? '';
80
- bodyItems.push({ kind: 'AsmLabel', span: fullSpan, name: label });
81
- if (remainder.trim().length > 0) {
82
- const stmt = parseAsmStatement(bodyFilePath, remainder, contentSpan, diagnostics);
83
- appendParsedAsmStatement(bodyItems, stmt);
84
- }
85
- index++;
86
- continue;
87
- }
88
- const stmt = parseAsmStatement(bodyFilePath, content, contentSpan, diagnostics);
89
- appendParsedAsmStatement(bodyItems, stmt);
90
- index++;
91
- }
92
- if (!terminated) {
93
- if (interruptedByKeyword !== undefined && interruptedByLine !== undefined) {
94
- diag(diagnostics, interruptedByFilePath ?? sourcePath, `Unterminated op "${name}": expected "end" before "${interruptedByKeyword}"`, {
95
- line: interruptedByLine,
96
- column: 1,
97
- });
98
- }
99
- else {
100
- diag(diagnostics, sourcePath, `Unterminated op "${name}": missing "end"`, {
101
- line: lineNo,
102
- column: 1,
103
- });
104
- }
105
- }
106
- return {
107
- node: {
108
- kind: 'OpDecl',
109
- span: span(file, opStartOffset, opEndOffset),
110
- name,
111
- params,
112
- body: {
113
- kind: 'AsmBlock',
114
- span: span(file, opStartOffset, opEndOffset),
115
- items: bodyItems,
116
- },
117
- },
118
- nextIndex: index,
119
- };
120
- }
@@ -1,20 +0,0 @@
1
- import type { SourceSpan } from './ast.js';
2
- import type { Diagnostic } from '../diagnosticTypes.js';
3
- type ParsedOpHeader<TParam> = {
4
- name: string;
5
- params: TParam[];
6
- trailing: string;
7
- };
8
- type ParseOpHeaderOptions<TParam> = {
9
- header: string;
10
- stmtText: string;
11
- stmtSpan: SourceSpan;
12
- lineNo: number;
13
- diagnostics: Diagnostic[];
14
- sourcePath: string;
15
- expectedHeader: string;
16
- isReservedTopLevelName: (name: string) => boolean;
17
- parseParams: (paramsText: string) => TParam[] | undefined;
18
- };
19
- export declare function parseOpHeader<TParam>(options: ParseOpHeaderOptions<TParam>): ParsedOpHeader<TParam> | undefined;
20
- export {};