Implement 'character' literals (#1747)

This commit is contained in:
Rangi
2025-07-15 13:08:50 -04:00
committed by GitHub
parent b6d77fbb9e
commit 1fecf80659
8 changed files with 124 additions and 11 deletions

View File

@@ -0,0 +1,34 @@
def s equs "d"
charmap "A", 1
charmap "B", 2
charmap "c{s}e", 3
charmap "F", 4, 5, 6
charmap "'", 42
charmap "\"", 1234
charmap "\n\r\t\0", 1337
charmap "',\",\\", 99
MACRO char
assert (\1) == (\2)
ENDM
char 'A', 1
char 'B', 2
char 'c{s}e', 3
char '\'', 42
char '"', 1234
char '\n\r\t\0', 1337
char '\',",\\', 99
char charval("c{s}e", 0), 'c{s}e'
def v equs "\n\r\t\0"
def x = '{v}'
char x, '\n\r\t\0'
; errors
char '?', $3f ; ASCII
char 'F', 0
char 'ABF', 0
char '\n\r\t', 0

View File

@@ -0,0 +1,15 @@
warning: character-literals.asm(31) -> character-literals.asm::char(13): [-Wunmapped-char]
Unmapped character '?'
error: character-literals.asm(32) -> character-literals.asm::char(13):
Character literals must be a single charmap unit
error: character-literals.asm(33) -> character-literals.asm::char(13):
Character literals must be a single charmap unit
warning: character-literals.asm(34) -> character-literals.asm::char(13): [-Wunmapped-char]
Unmapped character '\n'
warning: character-literals.asm(34) -> character-literals.asm::char(13): [-Wunmapped-char]
Unmapped character '\r'
warning: character-literals.asm(34) -> character-literals.asm::char(13): [-Wunmapped-char]
Unmapped character '\t'
error: character-literals.asm(34) -> character-literals.asm::char(13):
Character literals must be a single charmap unit
Assembly aborted with 3 errors!

View File

@@ -1,3 +1,3 @@
assert 1 +# 1 == 2
assert 2 '?* 2 == 4
assert 3 **?''?##?? 3 == 27
assert 2 ?<EFBFBD>* 2 == 4
assert 3 **?<EFBFBD>?##?? 3 == 27

View File

@@ -1,9 +1,9 @@
error: garbage_sequence.asm(1):
Unknown character '#'
error: garbage_sequence.asm(2):
Unknown characters ''', '?'
Unknown characters '?', 0xFF
error: garbage_sequence.asm(3):
Unknown characters '?', ''', ''', '?'
Unknown characters '?', 0xFF, '?'
error: garbage_sequence.asm(3):
Unknown character '#'
error: garbage_sequence.asm(3):