rust code

This commit is contained in:
2024-07-06 13:43:49 +02:00
parent e3ebe9d8d3
commit 0137beff70
3 changed files with 20 additions and 4 deletions
+1 -4
View File
@@ -7,10 +7,7 @@ mod utils;
fn main() {
let mut vars = Variables::new();
let mut trsp = transpiler::Transpiler::default();
trsp.inject.inject = true;
trsp.inject.state.line = 2;
trsp.inject.state.column = 2;
let out = trsp.transpile("int x\nx".to_string(), 0, &mut vars);
let out = trsp.transpile("rust{let mut x;}".to_string(), 0, &mut vars);
for p in trsp.problems {
match p {
ProblemCap::Error(problem) => {
+14
View File
@@ -9,6 +9,8 @@ use crate::{
#[allow(dead_code)]
pub enum Token {
Number(String, State),
Keyword(String, State),
SKeyword(String, State),
DKeyword(String, State),
Identifier(String, State),
Curly(String, State),
@@ -23,6 +25,8 @@ pub fn extract_values(token: Token) -> (String, State) {
Token::Curly(x, state) => (x, state),
Token::Round(x, state) => (x, state),
Token::DKeyword(x, state) => (x, state),
Token::SKeyword(x, state) => (x, state),
Token::Keyword(x, state) => (x, state),
}
}
@@ -44,6 +48,7 @@ pub fn extract_ast(ast: Ast) -> Vec<String> {
vstr.push(a);
vstr.push(b);
}
_ => {}
}
vstr
}
@@ -53,6 +58,7 @@ pub enum Ast {
Variable(String, String),
Function(String, String, String, String),
Struct(String, String),
Rust(String),
Single(Token),
}
@@ -61,6 +67,7 @@ pub fn get_token(v: String, t: u32, state: State) -> Token {
1 => Token::Number(v, state),
2 => match v.as_str() {
"enum" | "struct" | "namespace" => Token::DKeyword(v, state),
"rust" => Token::SKeyword(v, state),
_ => Token::Identifier(v, state),
},
3 => Token::Round(v, state),
@@ -255,6 +262,13 @@ pub fn parse(
}
drain += 2;
}
[Token::SKeyword(keyword, _), Token::Curly(curly, _), ..] => {
match keyword.as_str() {
"rust" => ast.push(Ast::Rust(curly.clone())),
_ => {}
}
drain += 1;
}
x => {
ast.push(Ast::Single(x[0].clone()));
//let estate = extract_values(x[0].clone()).1;
+5
View File
@@ -91,6 +91,11 @@ impl Transpiler {
)
.as_str()
}
Ast::Rust(rs) => {
res += "{";
res += rs.as_str();
res += "}";
}
Ast::Single(_) => {}
}
}