smoke_lex7.nx source
↩ module page · 28 lines · 966 B
1// smoke_lex7.nx -- exact lex_test logic.
2
3import "syscalls.nx"
4import "lex_kinds.nx"
5import "lex.nx"
6
7func main() -> i64 {
8 let src: *u8 = "func add(a: i64, b: i64) -> i64 { return a + b }"
9 let toks: *Tok = lex_source(src, 256)
10 let t_base: i64 = toks as i64
11
12 let t0: *Tok = (t_base + 0 * TOK_BYTES) as *Tok
13 if t0.kind != TK_FUNC { return __syscall(93, 1, 0, 0, 0, 0, 0) }
14
15 let t1: *Tok = (t_base + 1 * TOK_BYTES) as *Tok
16 if t1.kind != TK_IDENT { return __syscall(93, 2, 0, 0, 0, 0, 0) }
17
18 let t2: *Tok = (t_base + 2 * TOK_BYTES) as *Tok
19 if t2.kind != TK_LPAREN { return __syscall(93, 3, 0, 0, 0, 0, 0) }
20
21 let t11: *Tok = (t_base + 11 * TOK_BYTES) as *Tok
22 if t11.kind != TK_ARROW { return __syscall(93, 4, 0, 0, 0, 0, 0) }
23
24 let t14: *Tok = (t_base + 14 * TOK_BYTES) as *Tok
25 if t14.kind != TK_RETURN { return __syscall(93, 5, 0, 0, 0, 0, 0) }
26
27 return __syscall(93, 0, 0, 0, 0, 0, 0)
28}