extern crate clap;
use clap::Parser;
mod notation;
mod cnfparser;
mod solvers;
mod utils;
use utils::read_file;
use solvers::syntactic::syntactic_algorithm;
#[derive(Parser)]
struct Cli {
path: std::path::PathBuf,
#[clap(short, long, default_value = "syntactic")]
solver: String,
}
fn main(){
let args = Cli::parse();
let extension = args.path.extension().unwrap_or_default().to_str().unwrap_or_default();
if extension != "cnf" {
panic!("File extension must be .cnf");
}
let buffer: String = read_file(&args.path);
let formula = cnfparser::parse_cnf(&buffer);
if args.solver == "syntactic" {
println!("Using syntactic solver");
match syntactic_algorithm(formula.unwrap()){
Ok(value) => println!("Value: {}", value),
Err(why) => panic!("Error: {}", why),
};
} else {
panic!("Unknown solver: {}", args.solver);
}
}