diff options
| author | Mel <einebeere@gmail.com> | 2022-07-06 01:45:49 +0200 |
|---|---|---|
| committer | Mel <einebeere@gmail.com> | 2022-07-06 14:05:28 +0200 |
| commit | 5d00068f228322a95895e7f92dd48e6cbb206832 (patch) | |
| tree | 4d8463f995db8fedcf14b6ebd45509e0b729fa53 /pkg/lang/vm/text | |
| parent | 3a31347d38ae9a4c04c52304330b50f95a54a826 (diff) | |
| download | jinx-5d00068f228322a95895e7f92dd48e6cbb206832.tar.zst jinx-5d00068f228322a95895e7f92dd48e6cbb206832.zip | |
Allow text compiler to use number labels as PCs
Diffstat (limited to 'pkg/lang/vm/text')
| -rw-r--r-- | pkg/lang/vm/text/compiler.go | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/pkg/lang/vm/text/compiler.go b/pkg/lang/vm/text/compiler.go index 28bc9a7..21d8dae 100644 --- a/pkg/lang/vm/text/compiler.go +++ b/pkg/lang/vm/text/compiler.go @@ -194,7 +194,11 @@ func (cpl *Compiler) linkLabels(builder *code.Builder) error { for _, ref := range cpl.labelReferences { pos, ok := cpl.labelPositions[ref.label] if !ok { - return ErrUnkonwnLabel{ref.label} + if pc, err := strconv.ParseUint(ref.label, 10, 64); err == nil { + pos = int(pc) + } else { + return ErrUnkonwnLabel{ref.label} + } } builder.SetInt(ref.at, int64(pos)) |
