#![feature(
option_result_contains,
iter_collect_into,
is_some_with,
unwrap_infallible,
new_uninit,
arbitrary_enum_discriminant
)]
#![warn(
clippy::all,
clippy::pedantic,
clippy::nursery,
clippy::cargo,
clippy::verbose_file_reads,
clippy::unneeded_field_pattern,
clippy::unnecessary_self_imports,
clippy::string_to_string,
clippy::if_then_some_else_none,
clippy::empty_structs_with_brackets
)]
#![allow(
non_snake_case,
dead_code,
clippy::needless_return,
clippy::redundant_else,
clippy::manual_assert,
clippy::needless_pass_by_value
)]
#![allow(clippy::too_many_lines)]
mod compiler;
mod grammars;
mod preprocessor;
mod test;
mod utils;
use clap::Parser;
use compiler::Compiler;
use utils::parameters::Parameters;
#[derive(Parser)]
#[clap(author, version, about, long_about = None)]
struct Args {
#[clap(short, long, value_parser, default_value = "")]
files: String,
}
fn main() {
env_logger::init();
let args = Args::parse();
if args.files.is_empty() {
log::error!("File list not specified!");
return;
}
let parameters = Parameters::new_file(&args.files).unwrap();
let mut compiler = Compiler::new(parameters);
compiler.print_preprocessor();
}