43 lines
1.1 KiB
Rust
43 lines
1.1 KiB
Rust
mod lexer;
|
|
mod parser;
|
|
// mod emitter;
|
|
// mod transformer;
|
|
|
|
use anyhow::Result;
|
|
use std::{env, fs};
|
|
use thiserror::Error;
|
|
|
|
#[derive(Error, Debug)]
|
|
pub enum ArgumentError {
|
|
#[error("Usage: {0} ./path/to/file.solace")]
|
|
MissingSourceFile(String),
|
|
}
|
|
|
|
fn main() -> Result<()> {
|
|
let args: Vec<String> = env::args().collect();
|
|
|
|
if args.len() < 2 {
|
|
return Err(ArgumentError::MissingSourceFile(args[0].clone()).into());
|
|
}
|
|
|
|
let file_path = &args[1];
|
|
let input = fs::read_to_string(file_path).expect(&format!("Cannot read file '{}'!", file_path));
|
|
|
|
/*
|
|
// Parse Solace Code
|
|
if let Some((ast, span)) = parser::parse(file_path.to_string(), &input, false) {
|
|
// Transform from Solace AST to SWC AST
|
|
let js_transformer = transformer::js::JsTransformer::new();
|
|
let js_ast = js_transformer.transform(ast, span);
|
|
|
|
// Emit JavaScript
|
|
let js_emitter = emitter::js::JsEmitter::new();
|
|
let (js_code, _source_map) = js_emitter.emit(js_ast);
|
|
|
|
// Write Output to stdout
|
|
println!("{}", js_code);
|
|
}
|
|
*/
|
|
|
|
Ok(())
|
|
}
|