diff --git a/src/main.rs b/src/main.rs index 1fc786e..027ea12 100644 --- a/src/main.rs +++ b/src/main.rs @@ -8,7 +8,7 @@ mod variable; fn main() { let mut vars = Variables::new(); let mut trsp = transpiler::Transpiler::default(); - let out = trsp.transpile("(xyz)".to_string(), 0, &mut vars); + let out = trsp.transpile("{xyz}".to_string(), 0, &mut vars); for p in trsp.problems { println!("{:?}: {}", p.problem_type, p.problem_msg) } diff --git a/src/parser.rs b/src/parser.rs index c39b790..65ae99a 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -23,6 +23,7 @@ pub fn get_token(v: String, t: u32, state: State) -> Token { 1 => Token::Number(v, state), 2 => Token::Identifier(v, state), 3 => Token::Round(v, state), + 4 => Token::Curly(v, state), _ => Token::Number(String::from(""), state), } } @@ -42,9 +43,15 @@ pub fn tokenize(code: String, root: &mut Transpiler) -> Vec { root.state.column += 1; if stoken.1 > 0 { match c { - ')' => { + '(' => { if stoken.0 == 1 { stoken.1 += 1; + token_value += c.to_string().as_str(); + } + } + ')' => { + if stoken.0 == 1 { + stoken.1 -= 1; if stoken.1 == 0 { stoken.0 = 0; tokens.push(get_token( @@ -59,15 +66,15 @@ pub fn tokenize(code: String, root: &mut Transpiler) -> Vec { } } } - '(' => { - if stoken.0 == 1 { - stoken.1 -= 1; - token_value += c.to_string().as_str(); - } - } '{' => { - if stoken.0 == 2 { + if stoken.0 == 1 { stoken.1 += 1; + token_value += c.to_string().as_str(); + } + } + '}' => { + if stoken.0 == 1 { + stoken.1 -= 1; if stoken.1 == 0 { stoken.0 = 0; tokens.push(get_token( @@ -82,12 +89,6 @@ pub fn tokenize(code: String, root: &mut Transpiler) -> Vec { } } } - '}' => { - if stoken.0 == 2 { - stoken.1 -= 1; - token_value += c.to_string().as_str(); - } - } _ => token_value += c.to_string().as_str(), } } else { @@ -110,10 +111,16 @@ pub fn tokenize(code: String, root: &mut Transpiler) -> Vec { } '(' => { stoken.0 = 1; - stoken.1 += 1; + stoken.1 = 1; tval = ' '; t = 3; } + '{' => { + stoken.0 = 2; + stoken.1 = 1; + tval = ' '; + t = 4; + } x => { root.problems.push(Problem { problem_msg: format!(