@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.
- package/README.md +16 -9
- package/dist/src/api-compile.d.ts +0 -2
- package/dist/src/api-compile.js +1 -8
- package/dist/src/assembly/address-planning.js +19 -1
- package/dist/src/cli/parse-args.d.ts +0 -1
- package/dist/src/cli/parse-args.js +0 -7
- package/dist/src/cli/write-artifacts.js +0 -11
- package/dist/src/core/compile.js +192 -9
- package/dist/src/expansion/op-expansion.js +1 -0
- package/dist/src/model/expression.d.ts +4 -0
- package/dist/src/model/source-item.d.ts +5 -0
- package/dist/src/outputs/index.js +0 -2
- package/dist/src/outputs/types.d.ts +3 -16
- package/dist/src/outputs/write-asm80.js +84 -0
- package/dist/src/semantics/expression-evaluation.d.ts +7 -3
- package/dist/src/semantics/expression-evaluation.js +57 -0
- package/dist/src/syntax/directive-aliases.js +9 -10
- package/dist/src/syntax/parse-expression.js +34 -9
- package/dist/src/syntax/parse-line.js +87 -44
- package/dist/src/tooling/case-style.js +3 -0
- package/docs/reference/cli.md +6 -4
- package/docs/reference/tooling-api.md +1 -4
- package/package.json +2 -6
- package/dist/legacy-root-azm/src/analysis.d.ts +0 -11
- package/dist/legacy-root-azm/src/analysis.js +0 -41
- package/dist/legacy-root-azm/src/compile.d.ts +0 -10
- package/dist/legacy-root-azm/src/compile.js +0 -186
- package/dist/legacy-root-azm/src/compileShared.d.ts +0 -3
- package/dist/legacy-root-azm/src/compileShared.js +0 -7
- package/dist/legacy-root-azm/src/diagnosticTypes.d.ts +0 -77
- package/dist/legacy-root-azm/src/diagnosticTypes.js +0 -53
- package/dist/legacy-root-azm/src/formats/index.d.ts +0 -7
- package/dist/legacy-root-azm/src/formats/index.js +0 -17
- package/dist/legacy-root-azm/src/formats/range.d.ts +0 -17
- package/dist/legacy-root-azm/src/formats/range.js +0 -45
- package/dist/legacy-root-azm/src/formats/types.d.ts +0 -283
- package/dist/legacy-root-azm/src/formats/types.js +0 -1
- package/dist/legacy-root-azm/src/formats/writeAsm80.d.ts +0 -6
- package/dist/legacy-root-azm/src/formats/writeAsm80.js +0 -86
- package/dist/legacy-root-azm/src/formats/writeBin.d.ts +0 -7
- package/dist/legacy-root-azm/src/formats/writeBin.js +0 -23
- package/dist/legacy-root-azm/src/formats/writeD8m.d.ts +0 -9
- package/dist/legacy-root-azm/src/formats/writeD8m.js +0 -245
- package/dist/legacy-root-azm/src/formats/writeHex.d.ts +0 -8
- package/dist/legacy-root-azm/src/formats/writeHex.js +0 -38
- package/dist/legacy-root-azm/src/formats/writeListing.d.ts +0 -8
- package/dist/legacy-root-azm/src/formats/writeListing.js +0 -83
- package/dist/legacy-root-azm/src/frontend/asm80/asmLine.d.ts +0 -39
- package/dist/legacy-root-azm/src/frontend/asm80/asmLine.js +0 -89
- package/dist/legacy-root-azm/src/frontend/asm80/parseAsmRawValues.d.ts +0 -4
- package/dist/legacy-root-azm/src/frontend/asm80/parseAsmRawValues.js +0 -94
- package/dist/legacy-root-azm/src/frontend/asm80/quoteScan.d.ts +0 -10
- package/dist/legacy-root-azm/src/frontend/asm80/quoteScan.js +0 -25
- package/dist/legacy-root-azm/src/frontend/ast.d.ts +0 -376
- package/dist/legacy-root-azm/src/frontend/ast.js +0 -1
- package/dist/legacy-root-azm/src/frontend/directiveAliases.d.ts +0 -14
- package/dist/legacy-root-azm/src/frontend/directiveAliases.js +0 -189
- package/dist/legacy-root-azm/src/frontend/grammarData.d.ts +0 -14
- package/dist/legacy-root-azm/src/frontend/grammarData.js +0 -65
- package/dist/legacy-root-azm/src/frontend/immExprUtils.d.ts +0 -2
- package/dist/legacy-root-azm/src/frontend/immExprUtils.js +0 -12
- package/dist/legacy-root-azm/src/frontend/parseAsmFlatDirectiveLine.d.ts +0 -17
- package/dist/legacy-root-azm/src/frontend/parseAsmFlatDirectiveLine.js +0 -187
- package/dist/legacy-root-azm/src/frontend/parseAsmInstruction.d.ts +0 -3
- package/dist/legacy-root-azm/src/frontend/parseAsmInstruction.js +0 -73
- package/dist/legacy-root-azm/src/frontend/parseAsmStatements.d.ts +0 -6
- package/dist/legacy-root-azm/src/frontend/parseAsmStatements.js +0 -16
- package/dist/legacy-root-azm/src/frontend/parseAsmStream.d.ts +0 -10
- package/dist/legacy-root-azm/src/frontend/parseAsmStream.js +0 -33
- package/dist/legacy-root-azm/src/frontend/parseAsmTopLevel.d.ts +0 -18
- package/dist/legacy-root-azm/src/frontend/parseAsmTopLevel.js +0 -34
- package/dist/legacy-root-azm/src/frontend/parseDiagnostics.d.ts +0 -9
- package/dist/legacy-root-azm/src/frontend/parseDiagnostics.js +0 -16
- package/dist/legacy-root-azm/src/frontend/parseEnum.d.ts +0 -12
- package/dist/legacy-root-azm/src/frontend/parseEnum.js +0 -70
- package/dist/legacy-root-azm/src/frontend/parseImm.d.ts +0 -10
- package/dist/legacy-root-azm/src/frontend/parseImm.js +0 -397
- package/dist/legacy-root-azm/src/frontend/parseLogicalLines.d.ts +0 -11
- package/dist/legacy-root-azm/src/frontend/parseLogicalLines.js +0 -94
- package/dist/legacy-root-azm/src/frontend/parseOp.d.ts +0 -25
- package/dist/legacy-root-azm/src/frontend/parseOp.js +0 -120
- package/dist/legacy-root-azm/src/frontend/parseOpHeader.d.ts +0 -20
- package/dist/legacy-root-azm/src/frontend/parseOpHeader.js +0 -32
- package/dist/legacy-root-azm/src/frontend/parseOperands.d.ts +0 -4
- package/dist/legacy-root-azm/src/frontend/parseOperands.js +0 -290
- package/dist/legacy-root-azm/src/frontend/parseParams.d.ts +0 -6
- package/dist/legacy-root-azm/src/frontend/parseParams.js +0 -62
- package/dist/legacy-root-azm/src/frontend/parseParserRecovery.d.ts +0 -12
- package/dist/legacy-root-azm/src/frontend/parseParserRecovery.js +0 -17
- package/dist/legacy-root-azm/src/frontend/parseParserShared.d.ts +0 -2
- package/dist/legacy-root-azm/src/frontend/parseParserShared.js +0 -8
- package/dist/legacy-root-azm/src/frontend/parseRawDataDirectiveStart.d.ts +0 -1
- package/dist/legacy-root-azm/src/frontend/parseRawDataDirectiveStart.js +0 -3
- package/dist/legacy-root-azm/src/frontend/parseRawDataDirectives.d.ts +0 -7
- package/dist/legacy-root-azm/src/frontend/parseRawDataDirectives.js +0 -142
- package/dist/legacy-root-azm/src/frontend/parseRecordFieldDecl.d.ts +0 -34
- package/dist/legacy-root-azm/src/frontend/parseRecordFieldDecl.js +0 -177
- package/dist/legacy-root-azm/src/frontend/parseSourceItemDispatch.d.ts +0 -46
- package/dist/legacy-root-azm/src/frontend/parseSourceItemDispatch.js +0 -53
- package/dist/legacy-root-azm/src/frontend/parseSourceItemTable.d.ts +0 -16
- package/dist/legacy-root-azm/src/frontend/parseSourceItemTable.js +0 -68
- package/dist/legacy-root-azm/src/frontend/parseTopLevelCommon.d.ts +0 -11
- package/dist/legacy-root-azm/src/frontend/parseTopLevelCommon.js +0 -50
- package/dist/legacy-root-azm/src/frontend/parseTypes.d.ts +0 -24
- package/dist/legacy-root-azm/src/frontend/parseTypes.js +0 -77
- package/dist/legacy-root-azm/src/frontend/parser.d.ts +0 -11
- package/dist/legacy-root-azm/src/frontend/parser.js +0 -88
- package/dist/legacy-root-azm/src/frontend/source.d.ts +0 -28
- package/dist/legacy-root-azm/src/frontend/source.js +0 -58
- package/dist/legacy-root-azm/src/frontend/sourceExtensions.d.ts +0 -2
- package/dist/legacy-root-azm/src/frontend/sourceExtensions.js +0 -6
- package/dist/legacy-root-azm/src/lintCaseStyle.d.ts +0 -4
- package/dist/legacy-root-azm/src/lintCaseStyle.js +0 -129
- package/dist/legacy-root-azm/src/lowering/asmDirectiveLowering.d.ts +0 -4
- package/dist/legacy-root-azm/src/lowering/asmDirectiveLowering.js +0 -229
- package/dist/legacy-root-azm/src/lowering/asmDirectiveTraversal.d.ts +0 -47
- package/dist/legacy-root-azm/src/lowering/asmDirectiveTraversal.js +0 -52
- package/dist/legacy-root-azm/src/lowering/asmEquResolution.d.ts +0 -8
- package/dist/legacy-root-azm/src/lowering/asmEquResolution.js +0 -69
- package/dist/legacy-root-azm/src/lowering/asmInstructionLdHelpers.d.ts +0 -15
- package/dist/legacy-root-azm/src/lowering/asmInstructionLdHelpers.js +0 -102
- package/dist/legacy-root-azm/src/lowering/asmInstructionLowering.d.ts +0 -5
- package/dist/legacy-root-azm/src/lowering/asmInstructionLowering.js +0 -54
- package/dist/legacy-root-azm/src/lowering/asmInstructionStream.d.ts +0 -46
- package/dist/legacy-root-azm/src/lowering/asmInstructionStream.js +0 -51
- package/dist/legacy-root-azm/src/lowering/asmLoweringBranchCall.d.ts +0 -43
- package/dist/legacy-root-azm/src/lowering/asmLoweringBranchCall.js +0 -254
- package/dist/legacy-root-azm/src/lowering/asmLoweringHost.d.ts +0 -23
- package/dist/legacy-root-azm/src/lowering/asmLoweringHost.js +0 -1
- package/dist/legacy-root-azm/src/lowering/asmLoweringLd.d.ts +0 -28
- package/dist/legacy-root-azm/src/lowering/asmLoweringLd.js +0 -144
- package/dist/legacy-root-azm/src/lowering/asmRangeLowering.d.ts +0 -17
- package/dist/legacy-root-azm/src/lowering/asmRangeLowering.js +0 -39
- package/dist/legacy-root-azm/src/lowering/asmRawDataLowering.d.ts +0 -16
- package/dist/legacy-root-azm/src/lowering/asmRawDataLowering.js +0 -209
- package/dist/legacy-root-azm/src/lowering/asmSourceEmitter.d.ts +0 -4
- package/dist/legacy-root-azm/src/lowering/asmSourceEmitter.js +0 -9
- package/dist/legacy-root-azm/src/lowering/asmSourceInstructionLowering.d.ts +0 -4
- package/dist/legacy-root-azm/src/lowering/asmSourceInstructionLowering.js +0 -14
- package/dist/legacy-root-azm/src/lowering/asmUtils.d.ts +0 -13
- package/dist/legacy-root-azm/src/lowering/asmUtils.js +0 -105
- package/dist/legacy-root-azm/src/lowering/assemblerFlowSetup.d.ts +0 -54
- package/dist/legacy-root-azm/src/lowering/assemblerFlowSetup.js +0 -128
- package/dist/legacy-root-azm/src/lowering/assemblerLoweringContext.d.ts +0 -151
- package/dist/legacy-root-azm/src/lowering/assemblerLoweringContext.js +0 -16
- package/dist/legacy-root-azm/src/lowering/assemblerLoweringContextSplit.d.ts +0 -7
- package/dist/legacy-root-azm/src/lowering/assemblerLoweringContextSplit.js +0 -75
- package/dist/legacy-root-azm/src/lowering/assemblerLoweringPhases.d.ts +0 -66
- package/dist/legacy-root-azm/src/lowering/assemblerLoweringPhases.js +0 -166
- package/dist/legacy-root-azm/src/lowering/bytePlacement.d.ts +0 -7
- package/dist/legacy-root-azm/src/lowering/bytePlacement.js +0 -37
- package/dist/legacy-root-azm/src/lowering/capabilities.d.ts +0 -67
- package/dist/legacy-root-azm/src/lowering/capabilities.js +0 -1
- package/dist/legacy-root-azm/src/lowering/eaResolution.d.ts +0 -58
- package/dist/legacy-root-azm/src/lowering/eaResolution.js +0 -159
- package/dist/legacy-root-azm/src/lowering/emissionCore.d.ts +0 -17
- package/dist/legacy-root-azm/src/lowering/emissionCore.js +0 -21
- package/dist/legacy-root-azm/src/lowering/emit.d.ts +0 -17
- package/dist/legacy-root-azm/src/lowering/emit.js +0 -46
- package/dist/legacy-root-azm/src/lowering/emitContextBuilder.d.ts +0 -63
- package/dist/legacy-root-azm/src/lowering/emitContextBuilder.js +0 -41
- package/dist/legacy-root-azm/src/lowering/emitFinalization.d.ts +0 -61
- package/dist/legacy-root-azm/src/lowering/emitFinalization.js +0 -66
- package/dist/legacy-root-azm/src/lowering/emitFinalizationSetup.d.ts +0 -19
- package/dist/legacy-root-azm/src/lowering/emitFinalizationSetup.js +0 -26
- package/dist/legacy-root-azm/src/lowering/emitPhase1BuildProgramLoweringContext.d.ts +0 -7
- package/dist/legacy-root-azm/src/lowering/emitPhase1BuildProgramLoweringContext.js +0 -119
- package/dist/legacy-root-azm/src/lowering/emitPhase1Helpers.d.ts +0 -4
- package/dist/legacy-root-azm/src/lowering/emitPhase1Helpers.js +0 -12
- package/dist/legacy-root-azm/src/lowering/emitPhase1Types.d.ts +0 -21
- package/dist/legacy-root-azm/src/lowering/emitPhase1Types.js +0 -1
- package/dist/legacy-root-azm/src/lowering/emitPhase1WirePipeline.d.ts +0 -70
- package/dist/legacy-root-azm/src/lowering/emitPhase1WirePipeline.js +0 -203
- package/dist/legacy-root-azm/src/lowering/emitPhase1Workspace.d.ts +0 -82
- package/dist/legacy-root-azm/src/lowering/emitPhase1Workspace.js +0 -55
- package/dist/legacy-root-azm/src/lowering/emitPipeline.d.ts +0 -121
- package/dist/legacy-root-azm/src/lowering/emitPipeline.js +0 -57
- package/dist/legacy-root-azm/src/lowering/emitProgramContext.d.ts +0 -39
- package/dist/legacy-root-azm/src/lowering/emitProgramContext.js +0 -29
- package/dist/legacy-root-azm/src/lowering/emitState.d.ts +0 -90
- package/dist/legacy-root-azm/src/lowering/emitState.js +0 -124
- package/dist/legacy-root-azm/src/lowering/fixupBaseResolution.d.ts +0 -7
- package/dist/legacy-root-azm/src/lowering/fixupBaseResolution.js +0 -23
- package/dist/legacy-root-azm/src/lowering/fixupEmission.d.ts +0 -64
- package/dist/legacy-root-azm/src/lowering/fixupEmission.js +0 -199
- package/dist/legacy-root-azm/src/lowering/immMath.d.ts +0 -2
- package/dist/legacy-root-azm/src/lowering/immMath.js +0 -34
- package/dist/legacy-root-azm/src/lowering/inputAssets.d.ts +0 -7
- package/dist/legacy-root-azm/src/lowering/inputAssets.js +0 -106
- package/dist/legacy-root-azm/src/lowering/ldEncoding.d.ts +0 -15
- package/dist/legacy-root-azm/src/lowering/ldEncoding.js +0 -12
- package/dist/legacy-root-azm/src/lowering/ldEncodingRegMemHelpers.d.ts +0 -5
- package/dist/legacy-root-azm/src/lowering/ldEncodingRegMemHelpers.js +0 -124
- package/dist/legacy-root-azm/src/lowering/ldFormSelection.d.ts +0 -26
- package/dist/legacy-root-azm/src/lowering/ldFormSelection.js +0 -92
- package/dist/legacy-root-azm/src/lowering/ldLowering.d.ts +0 -7
- package/dist/legacy-root-azm/src/lowering/ldLowering.js +0 -13
- package/dist/legacy-root-azm/src/lowering/loweredAsmByteEmission.d.ts +0 -23
- package/dist/legacy-root-azm/src/lowering/loweredAsmByteEmission.js +0 -185
- package/dist/legacy-root-azm/src/lowering/loweredAsmPlacement.d.ts +0 -13
- package/dist/legacy-root-azm/src/lowering/loweredAsmPlacement.js +0 -86
- package/dist/legacy-root-azm/src/lowering/loweredAsmStreamRecording.d.ts +0 -27
- package/dist/legacy-root-azm/src/lowering/loweredAsmStreamRecording.js +0 -215
- package/dist/legacy-root-azm/src/lowering/loweredAsmTypes.d.ts +0 -202
- package/dist/legacy-root-azm/src/lowering/loweredAsmTypes.js +0 -1
- package/dist/legacy-root-azm/src/lowering/loweredFormat.d.ts +0 -3
- package/dist/legacy-root-azm/src/lowering/loweredFormat.js +0 -26
- package/dist/legacy-root-azm/src/lowering/loweredItemSize.d.ts +0 -4
- package/dist/legacy-root-azm/src/lowering/loweredItemSize.js +0 -17
- package/dist/legacy-root-azm/src/lowering/loweringDiagnostics.d.ts +0 -9
- package/dist/legacy-root-azm/src/lowering/loweringDiagnostics.js +0 -55
- package/dist/legacy-root-azm/src/lowering/loweringTypes.d.ts +0 -27
- package/dist/legacy-root-azm/src/lowering/loweringTypes.js +0 -1
- package/dist/legacy-root-azm/src/lowering/opCandidateRegistry.d.ts +0 -9
- package/dist/legacy-root-azm/src/lowering/opCandidateRegistry.js +0 -9
- package/dist/legacy-root-azm/src/lowering/opExpansionExecution.d.ts +0 -15
- package/dist/legacy-root-azm/src/lowering/opExpansionExecution.js +0 -45
- package/dist/legacy-root-azm/src/lowering/opExpansionOrchestration.d.ts +0 -15
- package/dist/legacy-root-azm/src/lowering/opExpansionOrchestration.js +0 -88
- package/dist/legacy-root-azm/src/lowering/opExpansionStream.d.ts +0 -12
- package/dist/legacy-root-azm/src/lowering/opExpansionStream.js +0 -176
- package/dist/legacy-root-azm/src/lowering/opMatching.d.ts +0 -52
- package/dist/legacy-root-azm/src/lowering/opMatching.js +0 -355
- package/dist/legacy-root-azm/src/lowering/opSubstitution.d.ts +0 -13
- package/dist/legacy-root-azm/src/lowering/opSubstitution.js +0 -175
- package/dist/legacy-root-azm/src/lowering/prescanTypes.d.ts +0 -7
- package/dist/legacy-root-azm/src/lowering/prescanTypes.js +0 -1
- package/dist/legacy-root-azm/src/lowering/programLowering.d.ts +0 -144
- package/dist/legacy-root-azm/src/lowering/programLowering.js +0 -2
- package/dist/legacy-root-azm/src/lowering/programLoweringDeclarations.d.ts +0 -5
- package/dist/legacy-root-azm/src/lowering/programLoweringDeclarations.js +0 -5
- package/dist/legacy-root-azm/src/lowering/programLoweringFinalize.d.ts +0 -18
- package/dist/legacy-root-azm/src/lowering/programLoweringFinalize.js +0 -115
- package/dist/legacy-root-azm/src/lowering/programLoweringTraversal.d.ts +0 -2
- package/dist/legacy-root-azm/src/lowering/programLoweringTraversal.js +0 -93
- package/dist/legacy-root-azm/src/lowering/programPrescan.d.ts +0 -3
- package/dist/legacy-root-azm/src/lowering/programPrescan.js +0 -37
- package/dist/legacy-root-azm/src/lowering/traceFormat.d.ts +0 -13
- package/dist/legacy-root-azm/src/lowering/traceFormat.js +0 -211
- package/dist/legacy-root-azm/src/packageInfo.d.ts +0 -1
- package/dist/legacy-root-azm/src/packageInfo.js +0 -15
- package/dist/legacy-root-azm/src/pathCompare.d.ts +0 -3
- package/dist/legacy-root-azm/src/pathCompare.js +0 -26
- package/dist/legacy-root-azm/src/pipeline.d.ts +0 -91
- package/dist/legacy-root-azm/src/pipeline.js +0 -1
- package/dist/legacy-root-azm/src/registerCare/analyze.d.ts +0 -24
- package/dist/legacy-root-azm/src/registerCare/analyze.js +0 -327
- package/dist/legacy-root-azm/src/registerCare/annotate.d.ts +0 -11
- package/dist/legacy-root-azm/src/registerCare/annotate.js +0 -76
- package/dist/legacy-root-azm/src/registerCare/boundaryHints.d.ts +0 -2
- package/dist/legacy-root-azm/src/registerCare/boundaryHints.js +0 -10
- package/dist/legacy-root-azm/src/registerCare/carriers.d.ts +0 -4
- package/dist/legacy-root-azm/src/registerCare/carriers.js +0 -78
- package/dist/legacy-root-azm/src/registerCare/controlFlow.d.ts +0 -5
- package/dist/legacy-root-azm/src/registerCare/controlFlow.js +0 -35
- package/dist/legacy-root-azm/src/registerCare/fix.d.ts +0 -11
- package/dist/legacy-root-azm/src/registerCare/fix.js +0 -119
- package/dist/legacy-root-azm/src/registerCare/liveness.d.ts +0 -7
- package/dist/legacy-root-azm/src/registerCare/liveness.js +0 -227
- package/dist/legacy-root-azm/src/registerCare/profiles.d.ts +0 -11
- package/dist/legacy-root-azm/src/registerCare/profiles.js +0 -45
- package/dist/legacy-root-azm/src/registerCare/programModel.d.ts +0 -3
- package/dist/legacy-root-azm/src/registerCare/programModel.js +0 -181
- package/dist/legacy-root-azm/src/registerCare/report.d.ts +0 -5
- package/dist/legacy-root-azm/src/registerCare/report.js +0 -139
- package/dist/legacy-root-azm/src/registerCare/smartComments.d.ts +0 -5
- package/dist/legacy-root-azm/src/registerCare/smartComments.js +0 -247
- package/dist/legacy-root-azm/src/registerCare/sourceText.d.ts +0 -8
- package/dist/legacy-root-azm/src/registerCare/sourceText.js +0 -15
- package/dist/legacy-root-azm/src/registerCare/summary.d.ts +0 -3
- package/dist/legacy-root-azm/src/registerCare/summary.js +0 -492
- package/dist/legacy-root-azm/src/registerCare/types.d.ts +0 -154
- package/dist/legacy-root-azm/src/registerCare/types.js +0 -1
- package/dist/legacy-root-azm/src/semantics/declVisitor.d.ts +0 -5
- package/dist/legacy-root-azm/src/semantics/declVisitor.js +0 -11
- package/dist/legacy-root-azm/src/semantics/env.d.ts +0 -28
- package/dist/legacy-root-azm/src/semantics/env.js +0 -432
- package/dist/legacy-root-azm/src/semantics/layout.d.ts +0 -21
- package/dist/legacy-root-azm/src/semantics/layout.js +0 -226
- package/dist/legacy-root-azm/src/semantics/layoutCastFold.d.ts +0 -22
- package/dist/legacy-root-azm/src/semantics/layoutCastFold.js +0 -118
- package/dist/legacy-root-azm/src/semantics/semanticsDiagnostics.d.ts +0 -2
- package/dist/legacy-root-azm/src/semantics/semanticsDiagnostics.js +0 -4
- package/dist/legacy-root-azm/src/semantics/typeQueries.d.ts +0 -31
- package/dist/legacy-root-azm/src/semantics/typeQueries.js +0 -124
- package/dist/legacy-root-azm/src/sourceIncludeExpansion.d.ts +0 -17
- package/dist/legacy-root-azm/src/sourceIncludeExpansion.js +0 -124
- package/dist/legacy-root-azm/src/sourceIncludePaths.d.ts +0 -1
- package/dist/legacy-root-azm/src/sourceIncludePaths.js +0 -12
- package/dist/legacy-root-azm/src/sourceLoader.d.ts +0 -15
- package/dist/legacy-root-azm/src/sourceLoader.js +0 -118
- package/dist/legacy-root-azm/src/z80/effects.d.ts +0 -3
- package/dist/legacy-root-azm/src/z80/effects.js +0 -516
- package/dist/legacy-root-azm/src/z80/encode.d.ts +0 -10
- package/dist/legacy-root-azm/src/z80/encode.js +0 -412
- package/dist/legacy-root-azm/src/z80/encodeAlu.d.ts +0 -7
- package/dist/legacy-root-azm/src/z80/encodeAlu.js +0 -219
- package/dist/legacy-root-azm/src/z80/encodeBitOps.d.ts +0 -7
- package/dist/legacy-root-azm/src/z80/encodeBitOps.js +0 -123
- package/dist/legacy-root-azm/src/z80/encodeContext.d.ts +0 -29
- package/dist/legacy-root-azm/src/z80/encodeContext.js +0 -1
- package/dist/legacy-root-azm/src/z80/encodeControl.d.ts +0 -26
- package/dist/legacy-root-azm/src/z80/encodeControl.js +0 -180
- package/dist/legacy-root-azm/src/z80/encodeCoreOps.d.ts +0 -7
- package/dist/legacy-root-azm/src/z80/encodeCoreOps.js +0 -131
- package/dist/legacy-root-azm/src/z80/encodeIo.d.ts +0 -9
- package/dist/legacy-root-azm/src/z80/encodeIo.js +0 -128
- package/dist/legacy-root-azm/src/z80/encodeLd.d.ts +0 -13
- package/dist/legacy-root-azm/src/z80/encodeLd.js +0 -273
- package/dist/legacy-root-azm/src/z80/encoderRegistry.d.ts +0 -13
- package/dist/legacy-root-azm/src/z80/encoderRegistry.js +0 -169
- package/dist/src/outputs/write-listing.d.ts +0 -2
- package/dist/src/outputs/write-listing.js +0 -79
|
@@ -1,187 +0,0 @@
|
|
|
1
|
-
import { parseAsmLine } from './asm80/asmLine.js';
|
|
2
|
-
import { parseAsmRawValues } from './asm80/parseAsmRawValues.js';
|
|
3
|
-
import { parseImmExprFromText } from './parseImm.js';
|
|
4
|
-
import { parseDiag as diag } from './parseDiagnostics.js';
|
|
5
|
-
import { looksLikeRawDataDirectiveStart } from './parseRawDataDirectiveStart.js';
|
|
6
|
-
import { parseBareRawDataDirective, parseRawDataSizeOperands } from './parseRawDataDirectives.js';
|
|
7
|
-
function isAsmFlatDirectiveLine(rest) {
|
|
8
|
-
const trimmed = rest.trim();
|
|
9
|
-
if (looksLikeRawDataDirectiveStart(trimmed))
|
|
10
|
-
return true;
|
|
11
|
-
if (/^(?:[A-Za-z_][A-Za-z0-9_]*\s*:\s*)?\.?(db|dw|ds)\b/i.test(trimmed))
|
|
12
|
-
return true;
|
|
13
|
-
return /^(?:[A-Za-z_][A-Za-z0-9_]*\s*:\s*)?\.?(org|align|equ|binfrom|binto|end)\b/i.test(trimmed);
|
|
14
|
-
}
|
|
15
|
-
function normalizeRawDataDirectiveText(text) {
|
|
16
|
-
const match = /^\.?(db|dw|ds)\b(.*)$/i.exec(text.trim());
|
|
17
|
-
if (!match)
|
|
18
|
-
return undefined;
|
|
19
|
-
return `${match[1].toLowerCase()}${match[2]}`;
|
|
20
|
-
}
|
|
21
|
-
function isStringEquate(name, stringEquates) {
|
|
22
|
-
const normalized = name.startsWith('@') ? name.slice(1) : name;
|
|
23
|
-
return stringEquates.has(normalized.toLowerCase());
|
|
24
|
-
}
|
|
25
|
-
function directiveColumn(text, directive) {
|
|
26
|
-
const index = text.toLowerCase().indexOf(directive.toLowerCase());
|
|
27
|
-
return index < 0 ? 1 : index + 1;
|
|
28
|
-
}
|
|
29
|
-
function asmRawDataToNode(parsed, stmtSpan, filePath, diagnostics, stringEquates) {
|
|
30
|
-
if (parsed.directive === 'ds') {
|
|
31
|
-
const ds = parseRawDataSizeOperands(parsed.valuesText, stmtSpan.start.line, stmtSpan, filePath, diagnostics);
|
|
32
|
-
return {
|
|
33
|
-
kind: 'AsmRawData',
|
|
34
|
-
span: stmtSpan,
|
|
35
|
-
name: parsed.label,
|
|
36
|
-
directive: 'ds',
|
|
37
|
-
size: ds?.size,
|
|
38
|
-
fill: ds?.fill,
|
|
39
|
-
valuesText: parsed.valuesText,
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
const values = parseAsmRawValues(filePath, parsed.valuesText, stmtSpan, diagnostics, stringEquates);
|
|
43
|
-
return {
|
|
44
|
-
kind: 'AsmRawData',
|
|
45
|
-
span: stmtSpan,
|
|
46
|
-
name: parsed.label,
|
|
47
|
-
directive: parsed.directive,
|
|
48
|
-
values,
|
|
49
|
-
valuesText: parsed.valuesText,
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
/** Parses one source-file line of ASM flat assembler directives. */
|
|
53
|
-
export function parseAsmFlatDirectiveLine(args) {
|
|
54
|
-
const { rest, stmtSpan, filePath, lineNo, diagnostics, ctx, aliasPolicy, stringEquates } = args;
|
|
55
|
-
const trimmed = rest.trim();
|
|
56
|
-
const parsedAsm = parseAsmLine(filePath, trimmed, lineNo, stmtSpan.start.offset, aliasPolicy);
|
|
57
|
-
if (ctx.asmEnded && parsedAsm?.kind !== 'binfrom' && parsedAsm?.kind !== 'binto') {
|
|
58
|
-
return [];
|
|
59
|
-
}
|
|
60
|
-
if (!isAsmFlatDirectiveLine(trimmed) &&
|
|
61
|
-
parsedAsm?.kind !== 'rawData' &&
|
|
62
|
-
parsedAsm?.kind !== 'equ' &&
|
|
63
|
-
parsedAsm?.kind !== 'org' &&
|
|
64
|
-
parsedAsm?.kind !== 'align' &&
|
|
65
|
-
parsedAsm?.kind !== 'binfrom' &&
|
|
66
|
-
parsedAsm?.kind !== 'binto' &&
|
|
67
|
-
parsedAsm?.kind !== 'end' &&
|
|
68
|
-
parsedAsm?.kind !== 'unsupportedDirective') {
|
|
69
|
-
return undefined;
|
|
70
|
-
}
|
|
71
|
-
const inlineLabelRaw = /^([A-Za-z_][A-Za-z0-9_]*)\s*:\s*\.?(db|dw|ds)\b(.*)$/i.exec(trimmed);
|
|
72
|
-
if (inlineLabelRaw) {
|
|
73
|
-
return parsedAsm?.kind === 'rawData'
|
|
74
|
-
? [asmRawDataToNode(parsedAsm, stmtSpan, filePath, diagnostics, stringEquates)]
|
|
75
|
-
: [];
|
|
76
|
-
}
|
|
77
|
-
const inlineLabelEqu = /^([A-Za-z_][A-Za-z0-9_]*)\s*:\s*\.?equ\b\s*(.+)$/i.exec(trimmed);
|
|
78
|
-
if (inlineLabelEqu) {
|
|
79
|
-
const exprText = inlineLabelEqu[2].trim();
|
|
80
|
-
return [
|
|
81
|
-
{
|
|
82
|
-
kind: 'AsmEqu',
|
|
83
|
-
span: stmtSpan,
|
|
84
|
-
name: inlineLabelEqu[1],
|
|
85
|
-
exprText,
|
|
86
|
-
value: parseImmExprFromText(filePath, exprText, stmtSpan, diagnostics, !isStringEquate(inlineLabelEqu[1], stringEquates)),
|
|
87
|
-
},
|
|
88
|
-
];
|
|
89
|
-
}
|
|
90
|
-
const bareEqu = /^([A-Za-z_][A-Za-z0-9_]*)\s+\.?equ\b\s*(.+)$/i.exec(trimmed);
|
|
91
|
-
if (bareEqu) {
|
|
92
|
-
const exprText = bareEqu[2].trim();
|
|
93
|
-
return [
|
|
94
|
-
{
|
|
95
|
-
kind: 'AsmEqu',
|
|
96
|
-
span: stmtSpan,
|
|
97
|
-
name: bareEqu[1],
|
|
98
|
-
exprText,
|
|
99
|
-
value: parseImmExprFromText(filePath, exprText, stmtSpan, diagnostics, !isStringEquate(bareEqu[1], stringEquates)),
|
|
100
|
-
},
|
|
101
|
-
];
|
|
102
|
-
}
|
|
103
|
-
const labelOnly = /^([A-Za-z_][A-Za-z0-9_]*)\s*:\s*$/.exec(trimmed);
|
|
104
|
-
if (labelOnly) {
|
|
105
|
-
return [{ kind: 'AsmLabel', span: stmtSpan, name: labelOnly[1] }];
|
|
106
|
-
}
|
|
107
|
-
if (parsedAsm?.kind === 'rawData') {
|
|
108
|
-
return [asmRawDataToNode(parsedAsm, stmtSpan, filePath, diagnostics, stringEquates)];
|
|
109
|
-
}
|
|
110
|
-
const bareRawText = normalizeRawDataDirectiveText(trimmed);
|
|
111
|
-
const bareRaw = bareRawText
|
|
112
|
-
? parseBareRawDataDirective(bareRawText, lineNo, stmtSpan, filePath, diagnostics)
|
|
113
|
-
: undefined;
|
|
114
|
-
if (bareRaw)
|
|
115
|
-
return [bareRaw];
|
|
116
|
-
const orgMatch = /^\.?org\b\s*(.*)$/i.exec(trimmed);
|
|
117
|
-
if (orgMatch) {
|
|
118
|
-
const exprText = orgMatch[1].trim();
|
|
119
|
-
return [
|
|
120
|
-
{
|
|
121
|
-
kind: 'AsmOrg',
|
|
122
|
-
span: stmtSpan,
|
|
123
|
-
exprText,
|
|
124
|
-
value: parseImmExprFromText(filePath, exprText, stmtSpan, diagnostics),
|
|
125
|
-
},
|
|
126
|
-
];
|
|
127
|
-
}
|
|
128
|
-
const parsed = parsedAsm;
|
|
129
|
-
if (!parsed)
|
|
130
|
-
return undefined;
|
|
131
|
-
if (parsed.kind === 'instruction' || parsed.kind === 'label')
|
|
132
|
-
return undefined;
|
|
133
|
-
switch (parsed.kind) {
|
|
134
|
-
case 'equ':
|
|
135
|
-
return [
|
|
136
|
-
{
|
|
137
|
-
kind: 'AsmEqu',
|
|
138
|
-
span: stmtSpan,
|
|
139
|
-
name: parsed.name,
|
|
140
|
-
exprText: parsed.exprText,
|
|
141
|
-
value: parseImmExprFromText(filePath, parsed.exprText, stmtSpan, diagnostics, !isStringEquate(parsed.name, stringEquates)),
|
|
142
|
-
},
|
|
143
|
-
];
|
|
144
|
-
case 'org':
|
|
145
|
-
return [
|
|
146
|
-
{
|
|
147
|
-
kind: 'AsmOrg',
|
|
148
|
-
span: stmtSpan,
|
|
149
|
-
exprText: parsed.exprText,
|
|
150
|
-
value: parseImmExprFromText(filePath, parsed.exprText, stmtSpan, diagnostics),
|
|
151
|
-
},
|
|
152
|
-
];
|
|
153
|
-
case 'binfrom':
|
|
154
|
-
return [
|
|
155
|
-
{
|
|
156
|
-
kind: 'AsmBinFrom',
|
|
157
|
-
span: stmtSpan,
|
|
158
|
-
exprText: parsed.exprText,
|
|
159
|
-
value: parseImmExprFromText(filePath, parsed.exprText, stmtSpan, diagnostics),
|
|
160
|
-
},
|
|
161
|
-
];
|
|
162
|
-
case 'binto':
|
|
163
|
-
return [
|
|
164
|
-
{
|
|
165
|
-
kind: 'AsmBinTo',
|
|
166
|
-
span: stmtSpan,
|
|
167
|
-
exprText: parsed.exprText,
|
|
168
|
-
value: parseImmExprFromText(filePath, parsed.exprText, stmtSpan, diagnostics),
|
|
169
|
-
},
|
|
170
|
-
];
|
|
171
|
-
case 'align': {
|
|
172
|
-
const value = parseImmExprFromText(filePath, parsed.exprText, stmtSpan, diagnostics);
|
|
173
|
-
return value ? [{ kind: 'AsmAlign', span: stmtSpan, value }] : [];
|
|
174
|
-
}
|
|
175
|
-
case 'end':
|
|
176
|
-
ctx.asmEnded = true;
|
|
177
|
-
return [{ kind: 'AsmEnd', span: stmtSpan }];
|
|
178
|
-
case 'unsupportedDirective':
|
|
179
|
-
diag(diagnostics, filePath, `Unsupported ASM80 directive ".${parsed.directive}".`, {
|
|
180
|
-
line: lineNo,
|
|
181
|
-
column: directiveColumn(trimmed, parsed.directive),
|
|
182
|
-
});
|
|
183
|
-
return [];
|
|
184
|
-
default:
|
|
185
|
-
return undefined;
|
|
186
|
-
}
|
|
187
|
-
}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import type { AsmInstructionNode, SourceSpan } from './ast.js';
|
|
2
|
-
import type { Diagnostic } from '../diagnosticTypes.js';
|
|
3
|
-
export declare function parseAsmInstruction(filePath: string, text: string, instrSpan: SourceSpan, diagnostics: Diagnostic[]): AsmInstructionNode | undefined;
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import { parseImmExprFromText } from './parseImm.js';
|
|
2
|
-
import { parseAsmOperand } from './parseOperands.js';
|
|
3
|
-
function splitTopLevelCommaSeparated(text) {
|
|
4
|
-
const parts = [];
|
|
5
|
-
let current = '';
|
|
6
|
-
let parenDepth = 0;
|
|
7
|
-
let bracketDepth = 0;
|
|
8
|
-
for (let i = 0; i < text.length; i++) {
|
|
9
|
-
const ch = text[i];
|
|
10
|
-
if (ch === '(') {
|
|
11
|
-
parenDepth++;
|
|
12
|
-
current += ch;
|
|
13
|
-
continue;
|
|
14
|
-
}
|
|
15
|
-
if (ch === ')') {
|
|
16
|
-
parenDepth = Math.max(parenDepth - 1, 0);
|
|
17
|
-
current += ch;
|
|
18
|
-
continue;
|
|
19
|
-
}
|
|
20
|
-
if (ch === '[') {
|
|
21
|
-
bracketDepth++;
|
|
22
|
-
current += ch;
|
|
23
|
-
continue;
|
|
24
|
-
}
|
|
25
|
-
if (ch === ']') {
|
|
26
|
-
bracketDepth = Math.max(bracketDepth - 1, 0);
|
|
27
|
-
current += ch;
|
|
28
|
-
continue;
|
|
29
|
-
}
|
|
30
|
-
if (ch === ',' && parenDepth === 0 && bracketDepth === 0) {
|
|
31
|
-
parts.push(current.trim());
|
|
32
|
-
current = '';
|
|
33
|
-
continue;
|
|
34
|
-
}
|
|
35
|
-
current += ch;
|
|
36
|
-
}
|
|
37
|
-
parts.push(current.trim());
|
|
38
|
-
return parts.filter((part) => part.length > 0);
|
|
39
|
-
}
|
|
40
|
-
export function parseAsmInstruction(filePath, text, instrSpan, diagnostics) {
|
|
41
|
-
const trimmed = text.trim();
|
|
42
|
-
if (trimmed.length === 0)
|
|
43
|
-
return undefined;
|
|
44
|
-
const firstSpace = trimmed.search(/\s/);
|
|
45
|
-
const head = firstSpace === -1 ? trimmed : trimmed.slice(0, firstSpace);
|
|
46
|
-
const headLower = head.toLowerCase();
|
|
47
|
-
const rest = firstSpace === -1 ? '' : trimmed.slice(firstSpace).trim();
|
|
48
|
-
const operands = [];
|
|
49
|
-
if (rest.length > 0) {
|
|
50
|
-
const preferDottedImmediate = filePath.toLowerCase().endsWith('.asm');
|
|
51
|
-
const parseInOutOperand = (operandText) => {
|
|
52
|
-
const t = operandText.trim();
|
|
53
|
-
if (t.startsWith('(') && t.endsWith(')')) {
|
|
54
|
-
const inner = t.slice(1, -1).trim();
|
|
55
|
-
if (/^c$/i.test(inner))
|
|
56
|
-
return { kind: 'PortC', span: instrSpan };
|
|
57
|
-
const expr = parseImmExprFromText(filePath, inner, instrSpan, diagnostics);
|
|
58
|
-
if (expr)
|
|
59
|
-
return { kind: 'PortImm8', span: instrSpan, expr };
|
|
60
|
-
}
|
|
61
|
-
return parseAsmOperand(filePath, t, instrSpan, diagnostics, true, preferDottedImmediate);
|
|
62
|
-
};
|
|
63
|
-
const parts = splitTopLevelCommaSeparated(rest);
|
|
64
|
-
for (const part of parts) {
|
|
65
|
-
const opNode = headLower === 'in' || headLower === 'out'
|
|
66
|
-
? parseInOutOperand(part)
|
|
67
|
-
: parseAsmOperand(filePath, part, instrSpan, diagnostics, true, preferDottedImmediate);
|
|
68
|
-
if (opNode)
|
|
69
|
-
operands.push(opNode);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
return { kind: 'AsmInstruction', span: instrSpan, head: headLower, operands };
|
|
73
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { AsmItemNode, SourceSpan } from './ast.js';
|
|
2
|
-
import type { Diagnostic } from '../diagnosticTypes.js';
|
|
3
|
-
type ParsedAsmStatement = AsmItemNode | AsmItemNode[] | undefined;
|
|
4
|
-
export declare function appendParsedAsmStatement(out: AsmItemNode[], parsed: ParsedAsmStatement): void;
|
|
5
|
-
export declare function parseAsmStatement(filePath: string, text: string, stmtSpan: SourceSpan, diagnostics: Diagnostic[]): ParsedAsmStatement;
|
|
6
|
-
export {};
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { parseAsmInstruction } from './parseAsmInstruction.js';
|
|
2
|
-
export function appendParsedAsmStatement(out, parsed) {
|
|
3
|
-
if (!parsed)
|
|
4
|
-
return;
|
|
5
|
-
if (Array.isArray(parsed)) {
|
|
6
|
-
out.push(...parsed);
|
|
7
|
-
return;
|
|
8
|
-
}
|
|
9
|
-
out.push(parsed);
|
|
10
|
-
}
|
|
11
|
-
export function parseAsmStatement(filePath, text, stmtSpan, diagnostics) {
|
|
12
|
-
const trimmed = text.trim();
|
|
13
|
-
if (trimmed.length === 0)
|
|
14
|
-
return undefined;
|
|
15
|
-
return parseAsmInstruction(filePath, trimmed, stmtSpan, diagnostics);
|
|
16
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { AsmInstructionNode, AsmLabelNode, SourceSpan } from './ast.js';
|
|
2
|
-
import type { Diagnostic } from '../diagnosticTypes.js';
|
|
3
|
-
type AsmStreamItem = AsmLabelNode | AsmInstructionNode;
|
|
4
|
-
export declare function parseAsmStreamLine(args: {
|
|
5
|
-
rest: string;
|
|
6
|
-
filePath: string;
|
|
7
|
-
stmtSpan: SourceSpan;
|
|
8
|
-
diagnostics: Diagnostic[];
|
|
9
|
-
}): AsmStreamItem[] | undefined;
|
|
10
|
-
export {};
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { appendParsedAsmStatement, parseAsmStatement } from './parseAsmStatements.js';
|
|
2
|
-
import { topLevelStartKeyword } from './parseTopLevelCommon.js';
|
|
3
|
-
export function parseAsmStreamLine(args) {
|
|
4
|
-
const { rest, filePath, stmtSpan, diagnostics } = args;
|
|
5
|
-
if (topLevelStartKeyword(rest) !== undefined)
|
|
6
|
-
return undefined;
|
|
7
|
-
const content = rest.trim();
|
|
8
|
-
if (content.length === 0)
|
|
9
|
-
return [];
|
|
10
|
-
const nodes = [];
|
|
11
|
-
const asmItems = [];
|
|
12
|
-
const labelMatch = /^(@?[A-Za-z_][A-Za-z0-9_]*|\.[A-Za-z_][A-Za-z0-9_]*)\s*:(?!\=)\s*(.*)$/.exec(content);
|
|
13
|
-
if (labelMatch) {
|
|
14
|
-
const rawName = labelMatch[1];
|
|
15
|
-
const isEntry = rawName.startsWith('@');
|
|
16
|
-
nodes.push({
|
|
17
|
-
kind: 'AsmLabel',
|
|
18
|
-
span: stmtSpan,
|
|
19
|
-
name: isEntry ? rawName.slice(1) : rawName,
|
|
20
|
-
...(isEntry ? { isEntry: true } : {}),
|
|
21
|
-
});
|
|
22
|
-
const remainder = labelMatch[2]?.trim() ?? '';
|
|
23
|
-
if (remainder.length > 0) {
|
|
24
|
-
appendParsedAsmStatement(asmItems, parseAsmStatement(filePath, remainder, stmtSpan, diagnostics));
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
appendParsedAsmStatement(asmItems, parseAsmStatement(filePath, content, stmtSpan, diagnostics));
|
|
29
|
-
}
|
|
30
|
-
for (const item of asmItems)
|
|
31
|
-
nodes.push(item);
|
|
32
|
-
return nodes;
|
|
33
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import type { Diagnostic } from '../diagnosticTypes.js';
|
|
2
|
-
import type { SourceSpan } from './ast.js';
|
|
3
|
-
import type { DirectiveAliasPolicy } from './directiveAliases.js';
|
|
4
|
-
import type { ParseItemContext, ParseItemResult } from './parseSourceItemDispatch.js';
|
|
5
|
-
export interface ParseAsmTopLevelInput {
|
|
6
|
-
index: number;
|
|
7
|
-
filePath: string;
|
|
8
|
-
lineNo: number;
|
|
9
|
-
rest: string;
|
|
10
|
-
stmtSpan: SourceSpan;
|
|
11
|
-
diagnostics: Diagnostic[];
|
|
12
|
-
ctx: Extract<ParseItemContext, {
|
|
13
|
-
scope: 'source';
|
|
14
|
-
}>;
|
|
15
|
-
aliasPolicy?: DirectiveAliasPolicy;
|
|
16
|
-
asmStringEquates?: Map<string, string>;
|
|
17
|
-
}
|
|
18
|
-
export declare function parseAsmTopLevel(args: ParseAsmTopLevelInput): ParseItemResult | undefined;
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { parseAsmStreamLine } from './parseAsmStream.js';
|
|
2
|
-
import { parseAsmFlatDirectiveLine } from './parseAsmFlatDirectiveLine.js';
|
|
3
|
-
import { topLevelStartKeyword } from './parseTopLevelCommon.js';
|
|
4
|
-
export function parseAsmTopLevel(args) {
|
|
5
|
-
const keyword = topLevelStartKeyword(args.rest);
|
|
6
|
-
if (keyword !== undefined) {
|
|
7
|
-
return undefined;
|
|
8
|
-
}
|
|
9
|
-
const directiveItems = parseAsmFlatDirectiveLine({
|
|
10
|
-
rest: args.rest,
|
|
11
|
-
stmtSpan: args.stmtSpan,
|
|
12
|
-
filePath: args.filePath,
|
|
13
|
-
lineNo: args.lineNo,
|
|
14
|
-
diagnostics: args.diagnostics,
|
|
15
|
-
ctx: args.ctx,
|
|
16
|
-
...(args.aliasPolicy ? { aliasPolicy: args.aliasPolicy } : {}),
|
|
17
|
-
stringEquates: args.asmStringEquates ?? new Map(),
|
|
18
|
-
});
|
|
19
|
-
if (directiveItems !== undefined) {
|
|
20
|
-
return { nextIndex: args.index + 1, nodes: directiveItems };
|
|
21
|
-
}
|
|
22
|
-
const asmItems = parseAsmStreamLine({
|
|
23
|
-
rest: args.rest,
|
|
24
|
-
filePath: args.filePath,
|
|
25
|
-
stmtSpan: args.stmtSpan,
|
|
26
|
-
diagnostics: args.diagnostics,
|
|
27
|
-
});
|
|
28
|
-
if (asmItems === undefined)
|
|
29
|
-
return undefined;
|
|
30
|
-
return {
|
|
31
|
-
nextIndex: args.index + 1,
|
|
32
|
-
nodes: asmItems,
|
|
33
|
-
};
|
|
34
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { Diagnostic, DiagnosticId, DiagnosticSeverity } from '../diagnosticTypes.js';
|
|
2
|
-
type ParseDiagLocation = {
|
|
3
|
-
line: number;
|
|
4
|
-
column: number;
|
|
5
|
-
};
|
|
6
|
-
export declare function parseDiag(diagnostics: Diagnostic[], file: string, message: string, where?: ParseDiagLocation): void;
|
|
7
|
-
export declare function parseDiagAt(diagnostics: Diagnostic[], file: string, message: string, line: number, column: number): void;
|
|
8
|
-
export declare function parseDiagAtWithId(diagnostics: Diagnostic[], file: string, id: DiagnosticId, severity: DiagnosticSeverity, message: string, where?: ParseDiagLocation): void;
|
|
9
|
-
export {};
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { DiagnosticIds } from '../diagnosticTypes.js';
|
|
2
|
-
export function parseDiag(diagnostics, file, message, where) {
|
|
3
|
-
parseDiagAtWithId(diagnostics, file, DiagnosticIds.ParseError, 'error', message, where);
|
|
4
|
-
}
|
|
5
|
-
export function parseDiagAt(diagnostics, file, message, line, column) {
|
|
6
|
-
parseDiag(diagnostics, file, message, { line, column });
|
|
7
|
-
}
|
|
8
|
-
export function parseDiagAtWithId(diagnostics, file, id, severity, message, where) {
|
|
9
|
-
diagnostics.push({
|
|
10
|
-
id,
|
|
11
|
-
severity,
|
|
12
|
-
message,
|
|
13
|
-
file,
|
|
14
|
-
...(where ? { line: where.line, column: where.column } : {}),
|
|
15
|
-
});
|
|
16
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { EnumDeclNode, SourceSpan } from './ast.js';
|
|
2
|
-
import type { Diagnostic } from '../diagnosticTypes.js';
|
|
3
|
-
type ParseEnumContext = {
|
|
4
|
-
diagnostics: Diagnostic[];
|
|
5
|
-
sourcePath: string;
|
|
6
|
-
lineNo: number;
|
|
7
|
-
text: string;
|
|
8
|
-
span: SourceSpan;
|
|
9
|
-
isReservedTopLevelName: (name: string) => boolean;
|
|
10
|
-
};
|
|
11
|
-
export declare function parseEnumDecl(enumTail: string, ctx: ParseEnumContext): EnumDeclNode | undefined;
|
|
12
|
-
export {};
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { parseDiag as diag } from './parseDiagnostics.js';
|
|
2
|
-
import { diagInvalidHeaderLine, formatIdentifierToken } from './parseTopLevelCommon.js';
|
|
3
|
-
export function parseEnumDecl(enumTail, ctx) {
|
|
4
|
-
const { diagnostics, sourcePath, lineNo, text, span, isReservedTopLevelName } = ctx;
|
|
5
|
-
const decl = enumTail;
|
|
6
|
-
const nameMatch = /^([A-Za-z_][A-Za-z0-9_]*)(?:\s+(.*))?$/.exec(decl);
|
|
7
|
-
if (!nameMatch) {
|
|
8
|
-
const invalidName = decl.split(/\s+/, 1)[0] ?? '';
|
|
9
|
-
if (invalidName.length > 0) {
|
|
10
|
-
diag(diagnostics, sourcePath, `Invalid enum name ${formatIdentifierToken(invalidName)}: expected <identifier>.`, { line: lineNo, column: 1 });
|
|
11
|
-
}
|
|
12
|
-
else {
|
|
13
|
-
diagInvalidHeaderLine(diagnostics, sourcePath, 'enum declaration', text, '<name> <member>[, ...]', lineNo);
|
|
14
|
-
}
|
|
15
|
-
return undefined;
|
|
16
|
-
}
|
|
17
|
-
const name = nameMatch[1];
|
|
18
|
-
if (isReservedTopLevelName(name)) {
|
|
19
|
-
diag(diagnostics, sourcePath, `Invalid enum name "${name}": collides with a top-level keyword.`, {
|
|
20
|
-
line: lineNo,
|
|
21
|
-
column: 1,
|
|
22
|
-
});
|
|
23
|
-
return undefined;
|
|
24
|
-
}
|
|
25
|
-
const membersText = (nameMatch[2] ?? '').trim();
|
|
26
|
-
if (membersText.length === 0) {
|
|
27
|
-
diag(diagnostics, sourcePath, `Enum "${name}" must declare at least one member`, {
|
|
28
|
-
line: lineNo,
|
|
29
|
-
column: 1,
|
|
30
|
-
});
|
|
31
|
-
return undefined;
|
|
32
|
-
}
|
|
33
|
-
const rawParts = membersText.split(',').map((p) => p.trim());
|
|
34
|
-
if (rawParts.some((p) => p.length === 0)) {
|
|
35
|
-
diag(diagnostics, sourcePath, `Trailing commas are not permitted in enum member lists`, {
|
|
36
|
-
line: lineNo,
|
|
37
|
-
column: 1,
|
|
38
|
-
});
|
|
39
|
-
return undefined;
|
|
40
|
-
}
|
|
41
|
-
const members = [];
|
|
42
|
-
const membersLower = new Set();
|
|
43
|
-
for (const m of rawParts) {
|
|
44
|
-
if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(m)) {
|
|
45
|
-
diag(diagnostics, sourcePath, `Invalid enum member name ${formatIdentifierToken(m)}: expected <identifier>.`, {
|
|
46
|
-
line: lineNo,
|
|
47
|
-
column: 1,
|
|
48
|
-
});
|
|
49
|
-
continue;
|
|
50
|
-
}
|
|
51
|
-
if (isReservedTopLevelName(m)) {
|
|
52
|
-
diag(diagnostics, sourcePath, `Invalid enum member name "${m}": collides with a top-level keyword.`, {
|
|
53
|
-
line: lineNo,
|
|
54
|
-
column: 1,
|
|
55
|
-
});
|
|
56
|
-
continue;
|
|
57
|
-
}
|
|
58
|
-
const memberLower = m.toLowerCase();
|
|
59
|
-
if (membersLower.has(memberLower)) {
|
|
60
|
-
diag(diagnostics, sourcePath, `Duplicate enum member name "${m}".`, {
|
|
61
|
-
line: lineNo,
|
|
62
|
-
column: 1,
|
|
63
|
-
});
|
|
64
|
-
continue;
|
|
65
|
-
}
|
|
66
|
-
membersLower.add(memberLower);
|
|
67
|
-
members.push(m);
|
|
68
|
-
}
|
|
69
|
-
return { kind: 'EnumDecl', span, name, members };
|
|
70
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { ImmExprNode, SourceSpan, TypeExprNode } from './ast.js';
|
|
2
|
-
import type { Diagnostic } from '../diagnosticTypes.js';
|
|
3
|
-
export declare function immLiteral(filePath: string, s: SourceSpan, value: number): ImmExprNode;
|
|
4
|
-
export declare function parseTypeExprFromText(typeText: string, typeSpan: SourceSpan): TypeExprNode | undefined;
|
|
5
|
-
export declare function diagIfArrayLengthMissing(diagnostics: Diagnostic[], filePath: string, typeText: string, where: {
|
|
6
|
-
line: number;
|
|
7
|
-
column: number;
|
|
8
|
-
}): boolean;
|
|
9
|
-
export declare function parseNumberLiteral(text: string): number | undefined;
|
|
10
|
-
export declare function parseImmExprFromText(filePath: string, exprText: string, exprSpan: SourceSpan, diagnostics: Diagnostic[], emitDiagnostics?: boolean): ImmExprNode | undefined;
|