about summary refs log tree commit diff
path: root/pkg/lang
diff options
context:
space:
mode:
authorMel <einebeere@gmail.com>2022-07-06 01:45:49 +0200
committerMel <einebeere@gmail.com>2022-07-06 14:05:28 +0200
commit5d00068f228322a95895e7f92dd48e6cbb206832 (patch)
tree4d8463f995db8fedcf14b6ebd45509e0b729fa53 /pkg/lang
parent3a31347d38ae9a4c04c52304330b50f95a54a826 (diff)
downloadjinx-5d00068f228322a95895e7f92dd48e6cbb206832.tar.zst
jinx-5d00068f228322a95895e7f92dd48e6cbb206832.zip
Allow text compiler to use number labels as PCs
Diffstat (limited to 'pkg/lang')
-rw-r--r--pkg/lang/vm/text/compiler.go6
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))