Logo

index : 0x2lib

Library extension for Jai

  • summary
  • about
  • tree
  • log
  • branches
<< path: root/public/0x2lib.git/html/tests/lexer.jai blob: 0aa86ee318e1d78da958d3a4095f6dabf4aef6c2 [raw] [clear marker]

        
0
1
2
3run :: () -> bool {
4 using lexer_state: My_Lexer_State;
5 source = TEST;
6
7 while !is_at_end() {
8 char := advance();
9
10 if char == {
11 case "[";
12 state = .OPTION;
13 inner := consume_till("]");
14 if !inner continue;
15
16 advance_by(inner);
17
18 // Do stuff
19
20 current_char := u8_to_str(*peek());
21 ass(current_char, "]");
22 ass(inner, "Thing1:Something");
23
24 case "{";
25 state = .WEIRD;
26 inner := consume_till("}");
27 if !inner continue;
28
29 advance_by(inner);
30
31 // Do stuff
32
33 current_char := u8_to_str(*peek());
34 ass(current_char, "}");
35 ass(inner, " Something ");
36
37 case "(";
38 state = .VAL;
39 inner := consume_till("+");
40
41 if !inner then report_error(
42 lexer_state,
43 "lexer.jai",
44 "If you can see this, the test was %\n%",
45 "successful!",
46 1234567890
47 );
48
49 current_char := u8_to_str(*peek());
50 ass(current_char, "V");
51 }
52 }
53
54 return true;
55}
56
57
58#scope_file
59
60
61TOKEN_ERROR :: "ERROR";
62
63TEST :: #string STR_END
64[Thing1:Something]
65key1 = "123"
66key2 = "abc"
67
68AAAAAAAAAAAAAAAAAAAAAAAAA \ BBBBBBBBBBBBBBBBBBBBBBB
69
70{ Something }:{ Things
71
72
73&&
74
75
76 (Val: ERROR)
77
78
79STR_END;
80
81
82State :: enum {
83 ERROR;
84 NONE;
85 OPTION;
86 WEIRD;
87 VAL;
88 EOF;
89}
90
91My_Lexer_State :: struct {
92 index: int;
93 source: string;
94 state: State;
95}
96
97
98#import "Basic";
99#import "Print_Vars";
100#import "String";
101#import,file "../0x2_Lexer.jai";
102
103#load "assertion.jai";
104
105
106
Copyright 2026  E766CB298A6D1E64 | Git-Thing heavily inspired by cgit