1use crate::lexer::Token;
2
3pub fn generate_code(tokens: &[Token]) -> String {
4 let mut output = String::new();
5
6 output.push_str("struct A {\n");
7
8 let mut i = 0;
9
10 while i < tokens.len() {
11 match &tokens[i] {
12
13 Token::Identifier(name) => {
14 if let Some(value_token) = tokens.get(i + 2) {
15 let ty = match value_token {
18 Token::Int(_) => "i64",
19 Token::Float(_) => "f64",
20 Token::StringVal(_) => "String",
21 Token::Bool(_) => "bool",
22 _ => "unknown",
23 };
24
25 output.push_str(&format!(" {}: {},\n", name, ty));
26 }
27 }
28
29 _ => {}
30 }
31
32 i += 1;
33 }
34
35 output.push_str("}\n");
36
37 output
38}