code wiki / (root) / smoke_lex7.nx

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}