rust code
This commit is contained in:
+1
-4
@@ -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) => {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -91,6 +91,11 @@ impl Transpiler {
|
||||
)
|
||||
.as_str()
|
||||
}
|
||||
Ast::Rust(rs) => {
|
||||
res += "{";
|
||||
res += rs.as_str();
|
||||
res += "}";
|
||||
}
|
||||
Ast::Single(_) => {}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user