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() { fn main() {
let mut vars = Variables::new(); let mut vars = Variables::new();
let mut trsp = transpiler::Transpiler::default(); let mut trsp = transpiler::Transpiler::default();
trsp.inject.inject = true; let out = trsp.transpile("rust{let mut x;}".to_string(), 0, &mut vars);
trsp.inject.state.line = 2;
trsp.inject.state.column = 2;
let out = trsp.transpile("int x\nx".to_string(), 0, &mut vars);
for p in trsp.problems { for p in trsp.problems {
match p { match p {
ProblemCap::Error(problem) => { ProblemCap::Error(problem) => {
+14
View File
@@ -9,6 +9,8 @@ use crate::{
#[allow(dead_code)] #[allow(dead_code)]
pub enum Token { pub enum Token {
Number(String, State), Number(String, State),
Keyword(String, State),
SKeyword(String, State),
DKeyword(String, State), DKeyword(String, State),
Identifier(String, State), Identifier(String, State),
Curly(String, State), Curly(String, State),
@@ -23,6 +25,8 @@ pub fn extract_values(token: Token) -> (String, State) {
Token::Curly(x, state) => (x, state), Token::Curly(x, state) => (x, state),
Token::Round(x, state) => (x, state), Token::Round(x, state) => (x, state),
Token::DKeyword(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(a);
vstr.push(b); vstr.push(b);
} }
_ => {}
} }
vstr vstr
} }
@@ -53,6 +58,7 @@ pub enum Ast {
Variable(String, String), Variable(String, String),
Function(String, String, String, String), Function(String, String, String, String),
Struct(String, String), Struct(String, String),
Rust(String),
Single(Token), Single(Token),
} }
@@ -61,6 +67,7 @@ pub fn get_token(v: String, t: u32, state: State) -> Token {
1 => Token::Number(v, state), 1 => Token::Number(v, state),
2 => match v.as_str() { 2 => match v.as_str() {
"enum" | "struct" | "namespace" => Token::DKeyword(v, state), "enum" | "struct" | "namespace" => Token::DKeyword(v, state),
"rust" => Token::SKeyword(v, state),
_ => Token::Identifier(v, state), _ => Token::Identifier(v, state),
}, },
3 => Token::Round(v, state), 3 => Token::Round(v, state),
@@ -255,6 +262,13 @@ pub fn parse(
} }
drain += 2; drain += 2;
} }
[Token::SKeyword(keyword, _), Token::Curly(curly, _), ..] => {
match keyword.as_str() {
"rust" => ast.push(Ast::Rust(curly.clone())),
_ => {}
}
drain += 1;
}
x => { x => {
ast.push(Ast::Single(x[0].clone())); ast.push(Ast::Single(x[0].clone()));
//let estate = extract_values(x[0].clone()).1; //let estate = extract_values(x[0].clone()).1;
+5
View File
@@ -91,6 +91,11 @@ impl Transpiler {
) )
.as_str() .as_str()
} }
Ast::Rust(rs) => {
res += "{";
res += rs.as_str();
res += "}";
}
Ast::Single(_) => {} Ast::Single(_) => {}
} }
} }