pub mod c;
pub mod cpp;
pub mod csharp;
pub mod golang;
pub mod haskell;
pub mod js;
pub mod lua;
pub mod python;
#[derive(Debug, PartialEq, Copy, Clone)]
enum Token {
Add, Sub, Right, Left, Read, Write, BeginLoop, EndLoop, }
use self::Token::*;
fn tokenize(input: &str) -> Vec<Token> {
let mut tokens = Vec::<Token>::new();
let chars = input.chars();
for c in chars {
match c {
'+' => tokens.push(Add),
'-' => tokens.push(Sub),
'>' => tokens.push(Right),
'<' => tokens.push(Left),
',' => tokens.push(Read),
'.' => tokens.push(Write),
'[' => tokens.push(BeginLoop),
']' => tokens.push(EndLoop),
_ => {}
}
}
tokens
}
pub enum Lang {
C, Cpp, CSharp, Python, GoLang, Haskell, Lua, JavaScript,
}
use self::Lang::*;
pub fn generate(lang: Lang, input: &str) -> String {
match lang {
C => {
use crate::c::brains;
brains(input)
}
Cpp => {
use crate::cpp::brains;
brains(input)
}
CSharp => {
use crate::csharp::brains;
brains(input)
}
Python => {
use crate::python::brains;
brains(input)
}
GoLang => {
use crate::golang::brains;
brains(input)
}
Haskell => {
use crate::haskell::brains;
brains(input)
}
Lua => {
use crate::lua::brains;
brains(input)
}
JavaScript => {
use crate::js::brains;
brains(input)
}
}
}