test numbers
This commit is contained in:
parent
44ee13246e
commit
43a06ad55c
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -160,6 +160,18 @@ fn main() {
|
||||||
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.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
5
lang/tests/tokens/number.l
Normal file
5
lang/tests/tokens/number.l
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
1234
|
||||||
|
123_345_
|
||||||
|
1234____56
|
||||||
|
1
|
||||||
|
0
|
||||||
Loading…
Reference in a new issue