Mist Script
This commit is contained in:
+1
-75
@@ -1,10 +1,6 @@
|
||||
pub mod compiler;
|
||||
|
||||
use std::fs;
|
||||
use std::path::PathBuf;
|
||||
use std::process;
|
||||
|
||||
use semantic::walk_ast;
|
||||
pub mod compiler;
|
||||
|
||||
fn main() {
|
||||
let args: Vec<String> = std::env::args().collect();
|
||||
@@ -22,20 +18,6 @@ fn main() {
|
||||
}
|
||||
compiler::build();
|
||||
}
|
||||
"check" => {
|
||||
if args.len() < 3 {
|
||||
eprintln!("error: expected a file path\n usage: mist check <file.ms>");
|
||||
process::exit(1);
|
||||
}
|
||||
cmd_check(&args[2]);
|
||||
}
|
||||
"parse" => {
|
||||
if args.len() < 3 {
|
||||
eprintln!("error: expected a file path\n usage: mist check <file.ms>");
|
||||
process::exit(1);
|
||||
}
|
||||
cmd_parse(&args[2]);
|
||||
}
|
||||
"version" | "--version" | "-v" => {
|
||||
println!("mist {}", env!("CARGO_PKG_VERSION"));
|
||||
}
|
||||
@@ -50,62 +32,6 @@ fn main() {
|
||||
}
|
||||
}
|
||||
|
||||
fn cmd_check(path: &str) {
|
||||
let source = read_ms_file(path);
|
||||
match parser::parse(&source) {
|
||||
Ok(mut ast) => {
|
||||
println!("parse: ok");
|
||||
|
||||
// walk_ast(semantic::scope::Scope::from_top(&ast), &mut ast);
|
||||
|
||||
println!("{:#?}", ast)
|
||||
}
|
||||
Err(e) => {
|
||||
eprintln!("parse error:\n{}", e);
|
||||
process::exit(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn cmd_parse(path: &str) {
|
||||
let source = read_ms_file(path);
|
||||
match parser::parse(&source) {
|
||||
Ok(mut ast) => {
|
||||
// walk_ast(semantic::scope::Scope::from_top(&ast), &mut ast);
|
||||
|
||||
fs::write("output.json", serde_json::to_string_pretty(&ast).unwrap()).unwrap_or_else(
|
||||
|e| {
|
||||
eprintln!("error: could not write output.json: {}", e);
|
||||
process::exit(1);
|
||||
},
|
||||
);
|
||||
}
|
||||
Err(e) => {
|
||||
eprintln!("parse error:\n{}", e);
|
||||
process::exit(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn read_ms_file(path: &str) -> String {
|
||||
let pb = PathBuf::from(path);
|
||||
|
||||
if !pb.exists() {
|
||||
eprintln!("error: file '{}' not found", path);
|
||||
process::exit(1);
|
||||
}
|
||||
|
||||
if pb.extension().and_then(|e| e.to_str()) != Some("ms") {
|
||||
eprintln!("error: expected a .ms file, got '{}'", path);
|
||||
process::exit(1);
|
||||
}
|
||||
|
||||
fs::read_to_string(&pb).unwrap_or_else(|e| {
|
||||
eprintln!("error: could not read '{}': {}", path, e);
|
||||
process::exit(1);
|
||||
})
|
||||
}
|
||||
|
||||
fn print_usage() {
|
||||
println!("mist - the mist compiler");
|
||||
println!();
|
||||
|
||||
Reference in New Issue
Block a user