code wiki / (root) / lex_test.nx

lex_test.nx source

↩ module page · 39 lines · 1204 B

1// lex_test.nx -- self-test for lex.nx. 2 3import "lex_kinds.nx" 4import "lex.nx" 5 6 7// ===== self-test =================================================== 8// 9// Tokenize a small NishiLang source snippet; verify token count and 10// the kinds of a few specific tokens. 11 12func main() -> i64 { 13 let src: *u8 = "func add(a: i64, b: i64) -> i64 { return a + b }" 14 let toks: *Tok = lex_source(src, 256) 15 16 // Expected token sequence (17 tokens + EOF): 17 // func(10) add(2) ((67) a(2) :(64) i64(2) ,(66) b(2) :(64) i64(2) )(68) 18 // ->(61) i64(2) {(69) return(23) a(2) +(40) b(2) }(70) EOF(0) 19 // 20 // We check a handful of positions. 21 22 let t_base: i64 = toks as i64 23 let t0: *Tok = (t_base + 0 * TOK_BYTES) as *Tok 24 if t0.kind != TK_FUNC { return 1 } 25 26 let t1: *Tok = (t_base + 1 * TOK_BYTES) as *Tok 27 if t1.kind != TK_IDENT { return 2 } 28 29 let t2: *Tok = (t_base + 2 * TOK_BYTES) as *Tok 30 if t2.kind != TK_LPAREN { return 3 } 31 32 let t11: *Tok = (t_base + 11 * TOK_BYTES) as *Tok 33 if t11.kind != TK_ARROW { return 4 } 34 35 let t14: *Tok = (t_base + 14 * TOK_BYTES) as *Tok 36 if t14.kind != TK_RETURN { return 5 } 37 38 return 0 39}