forked from katzen-cafe/iowo
lang: basic ast work
This commit is contained in:
parent
cfefab9fd0
commit
d6bc644fb6
13 changed files with 560 additions and 58 deletions
|
@ -1,7 +1,10 @@
|
|||
use clap::Parser;
|
||||
use std::{fs, path::PathBuf};
|
||||
|
||||
use lang::lst_parser::{self, grammar, input, output::Output, syntax_kind};
|
||||
use lang::{
|
||||
ast::World,
|
||||
lst_parser::{self, grammar, input, output::Output, syntax_kind},
|
||||
};
|
||||
|
||||
#[derive(Parser)]
|
||||
struct Args {
|
||||
|
@ -12,37 +15,18 @@ struct Args {
|
|||
fn main() {
|
||||
let args = Args::parse();
|
||||
let n = args.file.clone();
|
||||
let f = fs::read_to_string(n.clone()).expect("failed to read file");
|
||||
// let f = fs::read_to_string(n.clone()).expect("failed to read file");
|
||||
|
||||
let toks = dbg!(syntax_kind::lex(&f));
|
||||
let input = input::Input::new(&toks);
|
||||
let mut parser = lst_parser::Parser::new(input);
|
||||
// let toks = dbg!(syntax_kind::lex(&f));
|
||||
// let input = input::Input::new(&toks);
|
||||
// let mut parser = lst_parser::Parser::new(input);
|
||||
|
||||
grammar::source_file(&mut parser);
|
||||
// grammar::source_file(&mut parser);
|
||||
|
||||
let p_out = dbg!(parser.finish());
|
||||
let o = Output::from_parser_output(toks, p_out);
|
||||
// let p_out = dbg!(parser.finish());
|
||||
// let o = Output::from_parser_output(toks, p_out);
|
||||
|
||||
println!("{}", o.debug_colored());
|
||||
// println!("{}", o.debug_colored());
|
||||
|
||||
// let parse_res = parser::parse(&f);
|
||||
// println!("parse: {:?}", parse_res);
|
||||
|
||||
// dbg!(lex::lex(&f));
|
||||
// let mut err_collector = ErrorCollector::new(vec![(n.to_str().unwrap(), &f)]);
|
||||
|
||||
// println!("file: {f}\n");
|
||||
// let parse_res = parse(&f);
|
||||
// err_collector.insert_many(
|
||||
// args.file.to_str().unwrap(),
|
||||
// lang::err_reporting::Stage::Parse,
|
||||
// parse_res
|
||||
// .errors()
|
||||
// .into_iter()
|
||||
// .map(|e| e.to_owned())
|
||||
// .collect::<Vec<_>>(),
|
||||
// );
|
||||
|
||||
// err_collector.report_raw();
|
||||
// println!("res: {:?}", parse_res);
|
||||
World::new(n);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue