This commit is contained in:
2024-07-01 18:12:06 +02:00
parent d561682136
commit 001636c799
2 changed files with 23 additions and 16 deletions
+1 -1
View File
@@ -8,7 +8,7 @@ mod variable;
fn main() { fn main() {
let mut vars = Variables::new(); let mut vars = Variables::new();
let mut trsp = transpiler::Transpiler::default(); 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 { for p in trsp.problems {
println!("{:?}: {}", p.problem_type, p.problem_msg) println!("{:?}: {}", p.problem_type, p.problem_msg)
} }
+22 -15
View File
@@ -23,6 +23,7 @@ pub fn get_token(v: String, t: u32, state: State) -> Token {
1 => Token::Number(v, state), 1 => Token::Number(v, state),
2 => Token::Identifier(v, state), 2 => Token::Identifier(v, state),
3 => Token::Round(v, state), 3 => Token::Round(v, state),
4 => Token::Curly(v, state),
_ => Token::Number(String::from(""), state), _ => Token::Number(String::from(""), state),
} }
} }
@@ -42,9 +43,15 @@ pub fn tokenize(code: String, root: &mut Transpiler) -> Vec<Token> {
root.state.column += 1; root.state.column += 1;
if stoken.1 > 0 { if stoken.1 > 0 {
match c { match c {
')' => { '(' => {
if stoken.0 == 1 { if stoken.0 == 1 {
stoken.1 += 1; stoken.1 += 1;
token_value += c.to_string().as_str();
}
}
')' => {
if stoken.0 == 1 {
stoken.1 -= 1;
if stoken.1 == 0 { if stoken.1 == 0 {
stoken.0 = 0; stoken.0 = 0;
tokens.push(get_token( tokens.push(get_token(
@@ -59,15 +66,15 @@ pub fn tokenize(code: String, root: &mut Transpiler) -> Vec<Token> {
} }
} }
} }
'(' => {
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; stoken.1 += 1;
token_value += c.to_string().as_str();
}
}
'}' => {
if stoken.0 == 1 {
stoken.1 -= 1;
if stoken.1 == 0 { if stoken.1 == 0 {
stoken.0 = 0; stoken.0 = 0;
tokens.push(get_token( tokens.push(get_token(
@@ -82,12 +89,6 @@ pub fn tokenize(code: String, root: &mut Transpiler) -> Vec<Token> {
} }
} }
} }
'}' => {
if stoken.0 == 2 {
stoken.1 -= 1;
token_value += c.to_string().as_str();
}
}
_ => token_value += c.to_string().as_str(), _ => token_value += c.to_string().as_str(),
} }
} else { } else {
@@ -110,10 +111,16 @@ pub fn tokenize(code: String, root: &mut Transpiler) -> Vec<Token> {
} }
'(' => { '(' => {
stoken.0 = 1; stoken.0 = 1;
stoken.1 += 1; stoken.1 = 1;
tval = ' '; tval = ' ';
t = 3; t = 3;
} }
'{' => {
stoken.0 = 2;
stoken.1 = 1;
tval = ' ';
t = 4;
}
x => { x => {
root.problems.push(Problem { root.problems.push(Problem {
problem_msg: format!( problem_msg: format!(