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