11mod lexericals;
2- use crate :: lexericals:: tokenizer:: { Token , Tokenkind } ;
32use crate :: lexericals:: lexer:: Lexer ;
43
54
@@ -11,17 +10,44 @@ fn main() {
1110 // println!("Token kind: {:?}, literal: {}", token.kind, token.literal);
1211 // println!("Token {:?}", token);
1312
14- let input = "+=(){};" ;
13+ let input =r#"
14+ let five = 5;
15+ let ten = 10;
16+ let add = fn(x, y) {
17+ x + y;
18+ };
19+ let result = add(five, ten);
20+ "# ;
21+
1522 let mut lexer = Lexer :: new ( input) ;
1623 println ! ( "Lexer initialized with input: {}" , input) ;
17- // println!("Current character: {:?}", lexer );
18-
19- for ( idx , token) in lexer . input . clone ( ) . into_iter ( ) . enumerate ( ) {
20- println ! ( "Token at index {}: {}" , idx , token) ;
21- println ! ( "Current character: {:?}" , lexer. next_token( ) ) ;
24+ let mut tokens = Vec :: new ( ) ;
25+ let mut token = lexer . next_token ( ) ;
26+ while token. kind != lexericals :: tokenizer :: Tokenkind :: Eof {
27+ tokens . push ( token. literal ) ;
28+ token = lexer. next_token ( ) ;
2229 }
2330
31+ // loop {
32+ // let token = lexer.next_token();
33+ // if token.kind == lexericals::tokenizer::Tokenkind::Eof {
34+ // break;
35+ // }
36+ // tokens.push(token.literal);
37+ // }
38+ println ! ( "Tokens: {:?}" , tokens) ;
39+
40+ // for (idx,token) in lexer.input.clone().into_iter().enumerate() {
41+ // println!("charater at index:{} token:{}", idx, token);
42+ // let token = lexer.next_token();
43+ // println!("Tokenkind at index:{} is:{}", idx, token.kind);
44+ // println!("literal at index:{} is:{} ", idx, token.literal);
45+ // }
46+
2447 // println!(" last Current character: {:?}", lexer.next_token());
2548
2649}
2750
51+ fn read_string ( ch : char ) -> String {
52+ todo ! ( "Implement string reading logic" ) ;
53+ }
0 commit comments