@jhlagado/azm 0.2.1 → 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 (313) hide show
  1. package/README.md +16 -9
  2. package/dist/src/api-compile.d.ts +0 -2
  3. package/dist/src/api-compile.js +1 -8
  4. package/dist/src/assembly/address-planning.js +19 -1
  5. package/dist/src/cli/parse-args.d.ts +0 -1
  6. package/dist/src/cli/parse-args.js +0 -7
  7. package/dist/src/cli/write-artifacts.js +0 -11
  8. package/dist/src/core/compile.js +192 -9
  9. package/dist/src/expansion/op-expansion.js +1 -0
  10. package/dist/src/model/expression.d.ts +4 -0
  11. package/dist/src/model/source-item.d.ts +5 -0
  12. package/dist/src/outputs/index.js +0 -2
  13. package/dist/src/outputs/types.d.ts +3 -16
  14. package/dist/src/outputs/write-asm80.js +84 -0
  15. package/dist/src/semantics/expression-evaluation.d.ts +7 -3
  16. package/dist/src/semantics/expression-evaluation.js +57 -0
  17. package/dist/src/syntax/directive-aliases.js +9 -10
  18. package/dist/src/syntax/parse-expression.js +34 -9
  19. package/dist/src/syntax/parse-line.js +87 -44
  20. package/dist/src/tooling/case-style.js +3 -0
  21. package/docs/reference/cli.md +6 -4
  22. package/docs/reference/tooling-api.md +1 -4
  23. package/package.json +2 -6
  24. package/dist/legacy-root-azm/src/analysis.d.ts +0 -11
  25. package/dist/legacy-root-azm/src/analysis.js +0 -41
  26. package/dist/legacy-root-azm/src/compile.d.ts +0 -10
  27. package/dist/legacy-root-azm/src/compile.js +0 -186
  28. package/dist/legacy-root-azm/src/compileShared.d.ts +0 -3
  29. package/dist/legacy-root-azm/src/compileShared.js +0 -7
  30. package/dist/legacy-root-azm/src/diagnosticTypes.d.ts +0 -77
  31. package/dist/legacy-root-azm/src/diagnosticTypes.js +0 -53
  32. package/dist/legacy-root-azm/src/formats/index.d.ts +0 -7
  33. package/dist/legacy-root-azm/src/formats/index.js +0 -17
  34. package/dist/legacy-root-azm/src/formats/range.d.ts +0 -17
  35. package/dist/legacy-root-azm/src/formats/range.js +0 -45
  36. package/dist/legacy-root-azm/src/formats/types.d.ts +0 -283
  37. package/dist/legacy-root-azm/src/formats/types.js +0 -1
  38. package/dist/legacy-root-azm/src/formats/writeAsm80.d.ts +0 -6
  39. package/dist/legacy-root-azm/src/formats/writeAsm80.js +0 -86
  40. package/dist/legacy-root-azm/src/formats/writeBin.d.ts +0 -7
  41. package/dist/legacy-root-azm/src/formats/writeBin.js +0 -23
  42. package/dist/legacy-root-azm/src/formats/writeD8m.d.ts +0 -9
  43. package/dist/legacy-root-azm/src/formats/writeD8m.js +0 -245
  44. package/dist/legacy-root-azm/src/formats/writeHex.d.ts +0 -8
  45. package/dist/legacy-root-azm/src/formats/writeHex.js +0 -38
  46. package/dist/legacy-root-azm/src/formats/writeListing.d.ts +0 -8
  47. package/dist/legacy-root-azm/src/formats/writeListing.js +0 -83
  48. package/dist/legacy-root-azm/src/frontend/asm80/asmLine.d.ts +0 -39
  49. package/dist/legacy-root-azm/src/frontend/asm80/asmLine.js +0 -89
  50. package/dist/legacy-root-azm/src/frontend/asm80/parseAsmRawValues.d.ts +0 -4
  51. package/dist/legacy-root-azm/src/frontend/asm80/parseAsmRawValues.js +0 -94
  52. package/dist/legacy-root-azm/src/frontend/asm80/quoteScan.d.ts +0 -10
  53. package/dist/legacy-root-azm/src/frontend/asm80/quoteScan.js +0 -25
  54. package/dist/legacy-root-azm/src/frontend/ast.d.ts +0 -376
  55. package/dist/legacy-root-azm/src/frontend/ast.js +0 -1
  56. package/dist/legacy-root-azm/src/frontend/directiveAliases.d.ts +0 -14
  57. package/dist/legacy-root-azm/src/frontend/directiveAliases.js +0 -189
  58. package/dist/legacy-root-azm/src/frontend/grammarData.d.ts +0 -14
  59. package/dist/legacy-root-azm/src/frontend/grammarData.js +0 -65
  60. package/dist/legacy-root-azm/src/frontend/immExprUtils.d.ts +0 -2
  61. package/dist/legacy-root-azm/src/frontend/immExprUtils.js +0 -12
  62. package/dist/legacy-root-azm/src/frontend/parseAsmFlatDirectiveLine.d.ts +0 -17
  63. package/dist/legacy-root-azm/src/frontend/parseAsmFlatDirectiveLine.js +0 -187
  64. package/dist/legacy-root-azm/src/frontend/parseAsmInstruction.d.ts +0 -3
  65. package/dist/legacy-root-azm/src/frontend/parseAsmInstruction.js +0 -73
  66. package/dist/legacy-root-azm/src/frontend/parseAsmStatements.d.ts +0 -6
  67. package/dist/legacy-root-azm/src/frontend/parseAsmStatements.js +0 -16
  68. package/dist/legacy-root-azm/src/frontend/parseAsmStream.d.ts +0 -10
  69. package/dist/legacy-root-azm/src/frontend/parseAsmStream.js +0 -33
  70. package/dist/legacy-root-azm/src/frontend/parseAsmTopLevel.d.ts +0 -18
  71. package/dist/legacy-root-azm/src/frontend/parseAsmTopLevel.js +0 -34
  72. package/dist/legacy-root-azm/src/frontend/parseDiagnostics.d.ts +0 -9
  73. package/dist/legacy-root-azm/src/frontend/parseDiagnostics.js +0 -16
  74. package/dist/legacy-root-azm/src/frontend/parseEnum.d.ts +0 -12
  75. package/dist/legacy-root-azm/src/frontend/parseEnum.js +0 -70
  76. package/dist/legacy-root-azm/src/frontend/parseImm.d.ts +0 -10
  77. package/dist/legacy-root-azm/src/frontend/parseImm.js +0 -397
  78. package/dist/legacy-root-azm/src/frontend/parseLogicalLines.d.ts +0 -11
  79. package/dist/legacy-root-azm/src/frontend/parseLogicalLines.js +0 -94
  80. package/dist/legacy-root-azm/src/frontend/parseOp.d.ts +0 -25
  81. package/dist/legacy-root-azm/src/frontend/parseOp.js +0 -120
  82. package/dist/legacy-root-azm/src/frontend/parseOpHeader.d.ts +0 -20
  83. package/dist/legacy-root-azm/src/frontend/parseOpHeader.js +0 -32
  84. package/dist/legacy-root-azm/src/frontend/parseOperands.d.ts +0 -4
  85. package/dist/legacy-root-azm/src/frontend/parseOperands.js +0 -290
  86. package/dist/legacy-root-azm/src/frontend/parseParams.d.ts +0 -6
  87. package/dist/legacy-root-azm/src/frontend/parseParams.js +0 -62
  88. package/dist/legacy-root-azm/src/frontend/parseParserRecovery.d.ts +0 -12
  89. package/dist/legacy-root-azm/src/frontend/parseParserRecovery.js +0 -17
  90. package/dist/legacy-root-azm/src/frontend/parseParserShared.d.ts +0 -2
  91. package/dist/legacy-root-azm/src/frontend/parseParserShared.js +0 -8
  92. package/dist/legacy-root-azm/src/frontend/parseRawDataDirectiveStart.d.ts +0 -1
  93. package/dist/legacy-root-azm/src/frontend/parseRawDataDirectiveStart.js +0 -3
  94. package/dist/legacy-root-azm/src/frontend/parseRawDataDirectives.d.ts +0 -7
  95. package/dist/legacy-root-azm/src/frontend/parseRawDataDirectives.js +0 -142
  96. package/dist/legacy-root-azm/src/frontend/parseRecordFieldDecl.d.ts +0 -34
  97. package/dist/legacy-root-azm/src/frontend/parseRecordFieldDecl.js +0 -177
  98. package/dist/legacy-root-azm/src/frontend/parseSourceItemDispatch.d.ts +0 -46
  99. package/dist/legacy-root-azm/src/frontend/parseSourceItemDispatch.js +0 -53
  100. package/dist/legacy-root-azm/src/frontend/parseSourceItemTable.d.ts +0 -16
  101. package/dist/legacy-root-azm/src/frontend/parseSourceItemTable.js +0 -68
  102. package/dist/legacy-root-azm/src/frontend/parseTopLevelCommon.d.ts +0 -11
  103. package/dist/legacy-root-azm/src/frontend/parseTopLevelCommon.js +0 -50
  104. package/dist/legacy-root-azm/src/frontend/parseTypes.d.ts +0 -24
  105. package/dist/legacy-root-azm/src/frontend/parseTypes.js +0 -77
  106. package/dist/legacy-root-azm/src/frontend/parser.d.ts +0 -11
  107. package/dist/legacy-root-azm/src/frontend/parser.js +0 -88
  108. package/dist/legacy-root-azm/src/frontend/source.d.ts +0 -28
  109. package/dist/legacy-root-azm/src/frontend/source.js +0 -58
  110. package/dist/legacy-root-azm/src/frontend/sourceExtensions.d.ts +0 -2
  111. package/dist/legacy-root-azm/src/frontend/sourceExtensions.js +0 -6
  112. package/dist/legacy-root-azm/src/lintCaseStyle.d.ts +0 -4
  113. package/dist/legacy-root-azm/src/lintCaseStyle.js +0 -129
  114. package/dist/legacy-root-azm/src/lowering/asmDirectiveLowering.d.ts +0 -4
  115. package/dist/legacy-root-azm/src/lowering/asmDirectiveLowering.js +0 -229
  116. package/dist/legacy-root-azm/src/lowering/asmDirectiveTraversal.d.ts +0 -47
  117. package/dist/legacy-root-azm/src/lowering/asmDirectiveTraversal.js +0 -52
  118. package/dist/legacy-root-azm/src/lowering/asmEquResolution.d.ts +0 -8
  119. package/dist/legacy-root-azm/src/lowering/asmEquResolution.js +0 -69
  120. package/dist/legacy-root-azm/src/lowering/asmInstructionLdHelpers.d.ts +0 -15
  121. package/dist/legacy-root-azm/src/lowering/asmInstructionLdHelpers.js +0 -102
  122. package/dist/legacy-root-azm/src/lowering/asmInstructionLowering.d.ts +0 -5
  123. package/dist/legacy-root-azm/src/lowering/asmInstructionLowering.js +0 -54
  124. package/dist/legacy-root-azm/src/lowering/asmInstructionStream.d.ts +0 -46
  125. package/dist/legacy-root-azm/src/lowering/asmInstructionStream.js +0 -51
  126. package/dist/legacy-root-azm/src/lowering/asmLoweringBranchCall.d.ts +0 -43
  127. package/dist/legacy-root-azm/src/lowering/asmLoweringBranchCall.js +0 -254
  128. package/dist/legacy-root-azm/src/lowering/asmLoweringHost.d.ts +0 -23
  129. package/dist/legacy-root-azm/src/lowering/asmLoweringHost.js +0 -1
  130. package/dist/legacy-root-azm/src/lowering/asmLoweringLd.d.ts +0 -28
  131. package/dist/legacy-root-azm/src/lowering/asmLoweringLd.js +0 -144
  132. package/dist/legacy-root-azm/src/lowering/asmRangeLowering.d.ts +0 -17
  133. package/dist/legacy-root-azm/src/lowering/asmRangeLowering.js +0 -39
  134. package/dist/legacy-root-azm/src/lowering/asmRawDataLowering.d.ts +0 -16
  135. package/dist/legacy-root-azm/src/lowering/asmRawDataLowering.js +0 -209
  136. package/dist/legacy-root-azm/src/lowering/asmSourceEmitter.d.ts +0 -4
  137. package/dist/legacy-root-azm/src/lowering/asmSourceEmitter.js +0 -9
  138. package/dist/legacy-root-azm/src/lowering/asmSourceInstructionLowering.d.ts +0 -4
  139. package/dist/legacy-root-azm/src/lowering/asmSourceInstructionLowering.js +0 -14
  140. package/dist/legacy-root-azm/src/lowering/asmUtils.d.ts +0 -13
  141. package/dist/legacy-root-azm/src/lowering/asmUtils.js +0 -105
  142. package/dist/legacy-root-azm/src/lowering/assemblerFlowSetup.d.ts +0 -54
  143. package/dist/legacy-root-azm/src/lowering/assemblerFlowSetup.js +0 -128
  144. package/dist/legacy-root-azm/src/lowering/assemblerLoweringContext.d.ts +0 -151
  145. package/dist/legacy-root-azm/src/lowering/assemblerLoweringContext.js +0 -16
  146. package/dist/legacy-root-azm/src/lowering/assemblerLoweringContextSplit.d.ts +0 -7
  147. package/dist/legacy-root-azm/src/lowering/assemblerLoweringContextSplit.js +0 -75
  148. package/dist/legacy-root-azm/src/lowering/assemblerLoweringPhases.d.ts +0 -66
  149. package/dist/legacy-root-azm/src/lowering/assemblerLoweringPhases.js +0 -166
  150. package/dist/legacy-root-azm/src/lowering/bytePlacement.d.ts +0 -7
  151. package/dist/legacy-root-azm/src/lowering/bytePlacement.js +0 -37
  152. package/dist/legacy-root-azm/src/lowering/capabilities.d.ts +0 -67
  153. package/dist/legacy-root-azm/src/lowering/capabilities.js +0 -1
  154. package/dist/legacy-root-azm/src/lowering/eaResolution.d.ts +0 -58
  155. package/dist/legacy-root-azm/src/lowering/eaResolution.js +0 -159
  156. package/dist/legacy-root-azm/src/lowering/emissionCore.d.ts +0 -17
  157. package/dist/legacy-root-azm/src/lowering/emissionCore.js +0 -21
  158. package/dist/legacy-root-azm/src/lowering/emit.d.ts +0 -17
  159. package/dist/legacy-root-azm/src/lowering/emit.js +0 -46
  160. package/dist/legacy-root-azm/src/lowering/emitContextBuilder.d.ts +0 -63
  161. package/dist/legacy-root-azm/src/lowering/emitContextBuilder.js +0 -41
  162. package/dist/legacy-root-azm/src/lowering/emitFinalization.d.ts +0 -61
  163. package/dist/legacy-root-azm/src/lowering/emitFinalization.js +0 -66
  164. package/dist/legacy-root-azm/src/lowering/emitFinalizationSetup.d.ts +0 -19
  165. package/dist/legacy-root-azm/src/lowering/emitFinalizationSetup.js +0 -26
  166. package/dist/legacy-root-azm/src/lowering/emitPhase1BuildProgramLoweringContext.d.ts +0 -7
  167. package/dist/legacy-root-azm/src/lowering/emitPhase1BuildProgramLoweringContext.js +0 -119
  168. package/dist/legacy-root-azm/src/lowering/emitPhase1Helpers.d.ts +0 -4
  169. package/dist/legacy-root-azm/src/lowering/emitPhase1Helpers.js +0 -12
  170. package/dist/legacy-root-azm/src/lowering/emitPhase1Types.d.ts +0 -21
  171. package/dist/legacy-root-azm/src/lowering/emitPhase1Types.js +0 -1
  172. package/dist/legacy-root-azm/src/lowering/emitPhase1WirePipeline.d.ts +0 -70
  173. package/dist/legacy-root-azm/src/lowering/emitPhase1WirePipeline.js +0 -203
  174. package/dist/legacy-root-azm/src/lowering/emitPhase1Workspace.d.ts +0 -82
  175. package/dist/legacy-root-azm/src/lowering/emitPhase1Workspace.js +0 -55
  176. package/dist/legacy-root-azm/src/lowering/emitPipeline.d.ts +0 -121
  177. package/dist/legacy-root-azm/src/lowering/emitPipeline.js +0 -57
  178. package/dist/legacy-root-azm/src/lowering/emitProgramContext.d.ts +0 -39
  179. package/dist/legacy-root-azm/src/lowering/emitProgramContext.js +0 -29
  180. package/dist/legacy-root-azm/src/lowering/emitState.d.ts +0 -90
  181. package/dist/legacy-root-azm/src/lowering/emitState.js +0 -124
  182. package/dist/legacy-root-azm/src/lowering/fixupBaseResolution.d.ts +0 -7
  183. package/dist/legacy-root-azm/src/lowering/fixupBaseResolution.js +0 -23
  184. package/dist/legacy-root-azm/src/lowering/fixupEmission.d.ts +0 -64
  185. package/dist/legacy-root-azm/src/lowering/fixupEmission.js +0 -199
  186. package/dist/legacy-root-azm/src/lowering/immMath.d.ts +0 -2
  187. package/dist/legacy-root-azm/src/lowering/immMath.js +0 -34
  188. package/dist/legacy-root-azm/src/lowering/inputAssets.d.ts +0 -7
  189. package/dist/legacy-root-azm/src/lowering/inputAssets.js +0 -106
  190. package/dist/legacy-root-azm/src/lowering/ldEncoding.d.ts +0 -15
  191. package/dist/legacy-root-azm/src/lowering/ldEncoding.js +0 -12
  192. package/dist/legacy-root-azm/src/lowering/ldEncodingRegMemHelpers.d.ts +0 -5
  193. package/dist/legacy-root-azm/src/lowering/ldEncodingRegMemHelpers.js +0 -124
  194. package/dist/legacy-root-azm/src/lowering/ldFormSelection.d.ts +0 -26
  195. package/dist/legacy-root-azm/src/lowering/ldFormSelection.js +0 -92
  196. package/dist/legacy-root-azm/src/lowering/ldLowering.d.ts +0 -7
  197. package/dist/legacy-root-azm/src/lowering/ldLowering.js +0 -13
  198. package/dist/legacy-root-azm/src/lowering/loweredAsmByteEmission.d.ts +0 -23
  199. package/dist/legacy-root-azm/src/lowering/loweredAsmByteEmission.js +0 -185
  200. package/dist/legacy-root-azm/src/lowering/loweredAsmPlacement.d.ts +0 -13
  201. package/dist/legacy-root-azm/src/lowering/loweredAsmPlacement.js +0 -86
  202. package/dist/legacy-root-azm/src/lowering/loweredAsmStreamRecording.d.ts +0 -27
  203. package/dist/legacy-root-azm/src/lowering/loweredAsmStreamRecording.js +0 -215
  204. package/dist/legacy-root-azm/src/lowering/loweredAsmTypes.d.ts +0 -202
  205. package/dist/legacy-root-azm/src/lowering/loweredAsmTypes.js +0 -1
  206. package/dist/legacy-root-azm/src/lowering/loweredFormat.d.ts +0 -3
  207. package/dist/legacy-root-azm/src/lowering/loweredFormat.js +0 -26
  208. package/dist/legacy-root-azm/src/lowering/loweredItemSize.d.ts +0 -4
  209. package/dist/legacy-root-azm/src/lowering/loweredItemSize.js +0 -17
  210. package/dist/legacy-root-azm/src/lowering/loweringDiagnostics.d.ts +0 -9
  211. package/dist/legacy-root-azm/src/lowering/loweringDiagnostics.js +0 -55
  212. package/dist/legacy-root-azm/src/lowering/loweringTypes.d.ts +0 -27
  213. package/dist/legacy-root-azm/src/lowering/loweringTypes.js +0 -1
  214. package/dist/legacy-root-azm/src/lowering/opCandidateRegistry.d.ts +0 -9
  215. package/dist/legacy-root-azm/src/lowering/opCandidateRegistry.js +0 -9
  216. package/dist/legacy-root-azm/src/lowering/opExpansionExecution.d.ts +0 -15
  217. package/dist/legacy-root-azm/src/lowering/opExpansionExecution.js +0 -45
  218. package/dist/legacy-root-azm/src/lowering/opExpansionOrchestration.d.ts +0 -15
  219. package/dist/legacy-root-azm/src/lowering/opExpansionOrchestration.js +0 -88
  220. package/dist/legacy-root-azm/src/lowering/opExpansionStream.d.ts +0 -12
  221. package/dist/legacy-root-azm/src/lowering/opExpansionStream.js +0 -176
  222. package/dist/legacy-root-azm/src/lowering/opMatching.d.ts +0 -52
  223. package/dist/legacy-root-azm/src/lowering/opMatching.js +0 -355
  224. package/dist/legacy-root-azm/src/lowering/opSubstitution.d.ts +0 -13
  225. package/dist/legacy-root-azm/src/lowering/opSubstitution.js +0 -175
  226. package/dist/legacy-root-azm/src/lowering/prescanTypes.d.ts +0 -7
  227. package/dist/legacy-root-azm/src/lowering/prescanTypes.js +0 -1
  228. package/dist/legacy-root-azm/src/lowering/programLowering.d.ts +0 -144
  229. package/dist/legacy-root-azm/src/lowering/programLowering.js +0 -2
  230. package/dist/legacy-root-azm/src/lowering/programLoweringDeclarations.d.ts +0 -5
  231. package/dist/legacy-root-azm/src/lowering/programLoweringDeclarations.js +0 -5
  232. package/dist/legacy-root-azm/src/lowering/programLoweringFinalize.d.ts +0 -18
  233. package/dist/legacy-root-azm/src/lowering/programLoweringFinalize.js +0 -115
  234. package/dist/legacy-root-azm/src/lowering/programLoweringTraversal.d.ts +0 -2
  235. package/dist/legacy-root-azm/src/lowering/programLoweringTraversal.js +0 -93
  236. package/dist/legacy-root-azm/src/lowering/programPrescan.d.ts +0 -3
  237. package/dist/legacy-root-azm/src/lowering/programPrescan.js +0 -37
  238. package/dist/legacy-root-azm/src/lowering/traceFormat.d.ts +0 -13
  239. package/dist/legacy-root-azm/src/lowering/traceFormat.js +0 -211
  240. package/dist/legacy-root-azm/src/packageInfo.d.ts +0 -1
  241. package/dist/legacy-root-azm/src/packageInfo.js +0 -15
  242. package/dist/legacy-root-azm/src/pathCompare.d.ts +0 -3
  243. package/dist/legacy-root-azm/src/pathCompare.js +0 -26
  244. package/dist/legacy-root-azm/src/pipeline.d.ts +0 -91
  245. package/dist/legacy-root-azm/src/pipeline.js +0 -1
  246. package/dist/legacy-root-azm/src/registerCare/analyze.d.ts +0 -24
  247. package/dist/legacy-root-azm/src/registerCare/analyze.js +0 -327
  248. package/dist/legacy-root-azm/src/registerCare/annotate.d.ts +0 -11
  249. package/dist/legacy-root-azm/src/registerCare/annotate.js +0 -76
  250. package/dist/legacy-root-azm/src/registerCare/boundaryHints.d.ts +0 -2
  251. package/dist/legacy-root-azm/src/registerCare/boundaryHints.js +0 -10
  252. package/dist/legacy-root-azm/src/registerCare/carriers.d.ts +0 -4
  253. package/dist/legacy-root-azm/src/registerCare/carriers.js +0 -78
  254. package/dist/legacy-root-azm/src/registerCare/controlFlow.d.ts +0 -5
  255. package/dist/legacy-root-azm/src/registerCare/controlFlow.js +0 -35
  256. package/dist/legacy-root-azm/src/registerCare/fix.d.ts +0 -11
  257. package/dist/legacy-root-azm/src/registerCare/fix.js +0 -119
  258. package/dist/legacy-root-azm/src/registerCare/liveness.d.ts +0 -7
  259. package/dist/legacy-root-azm/src/registerCare/liveness.js +0 -227
  260. package/dist/legacy-root-azm/src/registerCare/profiles.d.ts +0 -11
  261. package/dist/legacy-root-azm/src/registerCare/profiles.js +0 -45
  262. package/dist/legacy-root-azm/src/registerCare/programModel.d.ts +0 -3
  263. package/dist/legacy-root-azm/src/registerCare/programModel.js +0 -181
  264. package/dist/legacy-root-azm/src/registerCare/report.d.ts +0 -5
  265. package/dist/legacy-root-azm/src/registerCare/report.js +0 -139
  266. package/dist/legacy-root-azm/src/registerCare/smartComments.d.ts +0 -5
  267. package/dist/legacy-root-azm/src/registerCare/smartComments.js +0 -247
  268. package/dist/legacy-root-azm/src/registerCare/sourceText.d.ts +0 -8
  269. package/dist/legacy-root-azm/src/registerCare/sourceText.js +0 -15
  270. package/dist/legacy-root-azm/src/registerCare/summary.d.ts +0 -3
  271. package/dist/legacy-root-azm/src/registerCare/summary.js +0 -492
  272. package/dist/legacy-root-azm/src/registerCare/types.d.ts +0 -154
  273. package/dist/legacy-root-azm/src/registerCare/types.js +0 -1
  274. package/dist/legacy-root-azm/src/semantics/declVisitor.d.ts +0 -5
  275. package/dist/legacy-root-azm/src/semantics/declVisitor.js +0 -11
  276. package/dist/legacy-root-azm/src/semantics/env.d.ts +0 -28
  277. package/dist/legacy-root-azm/src/semantics/env.js +0 -432
  278. package/dist/legacy-root-azm/src/semantics/layout.d.ts +0 -21
  279. package/dist/legacy-root-azm/src/semantics/layout.js +0 -226
  280. package/dist/legacy-root-azm/src/semantics/layoutCastFold.d.ts +0 -22
  281. package/dist/legacy-root-azm/src/semantics/layoutCastFold.js +0 -118
  282. package/dist/legacy-root-azm/src/semantics/semanticsDiagnostics.d.ts +0 -2
  283. package/dist/legacy-root-azm/src/semantics/semanticsDiagnostics.js +0 -4
  284. package/dist/legacy-root-azm/src/semantics/typeQueries.d.ts +0 -31
  285. package/dist/legacy-root-azm/src/semantics/typeQueries.js +0 -124
  286. package/dist/legacy-root-azm/src/sourceIncludeExpansion.d.ts +0 -17
  287. package/dist/legacy-root-azm/src/sourceIncludeExpansion.js +0 -124
  288. package/dist/legacy-root-azm/src/sourceIncludePaths.d.ts +0 -1
  289. package/dist/legacy-root-azm/src/sourceIncludePaths.js +0 -12
  290. package/dist/legacy-root-azm/src/sourceLoader.d.ts +0 -15
  291. package/dist/legacy-root-azm/src/sourceLoader.js +0 -118
  292. package/dist/legacy-root-azm/src/z80/effects.d.ts +0 -3
  293. package/dist/legacy-root-azm/src/z80/effects.js +0 -516
  294. package/dist/legacy-root-azm/src/z80/encode.d.ts +0 -10
  295. package/dist/legacy-root-azm/src/z80/encode.js +0 -412
  296. package/dist/legacy-root-azm/src/z80/encodeAlu.d.ts +0 -7
  297. package/dist/legacy-root-azm/src/z80/encodeAlu.js +0 -219
  298. package/dist/legacy-root-azm/src/z80/encodeBitOps.d.ts +0 -7
  299. package/dist/legacy-root-azm/src/z80/encodeBitOps.js +0 -123
  300. package/dist/legacy-root-azm/src/z80/encodeContext.d.ts +0 -29
  301. package/dist/legacy-root-azm/src/z80/encodeContext.js +0 -1
  302. package/dist/legacy-root-azm/src/z80/encodeControl.d.ts +0 -26
  303. package/dist/legacy-root-azm/src/z80/encodeControl.js +0 -180
  304. package/dist/legacy-root-azm/src/z80/encodeCoreOps.d.ts +0 -7
  305. package/dist/legacy-root-azm/src/z80/encodeCoreOps.js +0 -131
  306. package/dist/legacy-root-azm/src/z80/encodeIo.d.ts +0 -9
  307. package/dist/legacy-root-azm/src/z80/encodeIo.js +0 -128
  308. package/dist/legacy-root-azm/src/z80/encodeLd.d.ts +0 -13
  309. package/dist/legacy-root-azm/src/z80/encodeLd.js +0 -273
  310. package/dist/legacy-root-azm/src/z80/encoderRegistry.d.ts +0 -13
  311. package/dist/legacy-root-azm/src/z80/encoderRegistry.js +0 -169
  312. package/dist/src/outputs/write-listing.d.ts +0 -2
  313. package/dist/src/outputs/write-listing.js +0 -79
@@ -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 {};