test numbers

This commit is contained in:
janis 2025-10-28 17:16:28 +01:00
parent 44ee13246e
commit 43a06ad55c
Signed by: janis
SSH key fingerprint: SHA256:bB1qbbqmDXZNT0KKD5c2Dfjg53JGhj7B3CFcLIzSqq8
3 changed files with 20 additions and 1 deletions

View file

@ -323,6 +323,7 @@ is_ident:
push r13 push r13
push r14 push r14
push rdi push rdi
mov rax, [rel cursor] mov rax, [rel cursor]
mov r12, [rel buffer] mov r12, [rel buffer]
mov r13, [rel buffer_len] mov r13, [rel buffer_len]
@ -393,7 +394,7 @@ is_number:
mov dil, [r12 + r14] mov dil, [r12 + r14]
call is_whitespace call is_whitespace
test rax, rax test rax, rax
je .number jne .number
cmp dil, '_' cmp dil, '_'
je .loop_next je .loop_next
call is_numeric call is_numeric
@ -572,4 +573,5 @@ find_lexeme:
.is_number: .is_number:
mov rdi, [rsp + 8] mov rdi, [rsp + 8]
mov qword [rdi], TOKEN_NUMBER mov qword [rdi], TOKEN_NUMBER
mov [rdi + 16], rax
jmp .epilogue jmp .epilogue

View file

@ -158,6 +158,18 @@ fn main() {
Lexeme(10, ""), Lexeme(10, ""),
Lexeme(23, ""), Lexeme(23, ""),
Lexeme(20, ""), Lexeme(20, ""),
]);
eprint!("Initializing tokeniser.. ");
tokeniser_init(c"tests/tokens/number.l".as_ptr());
eprintln!("ok.");
assert_eq!(&collect_tokens()[..], &[
Lexeme(31, "1234"),
Lexeme(31, "123_345_"),
Lexeme(31, "1234____56"),
Lexeme(31, "1"),
Lexeme(31, "0"),
]); ]);
eprintln!("Finished tokenising."); eprintln!("Finished tokenising.");

View file

@ -0,0 +1,5 @@
1234
123_345_
1234____56
1
0