1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#[cfg(feature = "solver-scip")]
mod error;
pub mod flatpint;
#[cfg(feature = "solver-scip")]
pub mod scip;

use crate::flatpint::FlatPint;
#[cfg(feature = "solver-scip")]
use crate::scip::Solver;
use lalrpop_util::lalrpop_mod;
#[cfg(feature = "solver-scip")]
use russcip::ProblemCreated;

lalrpop_mod!(#[allow(unused, clippy::ptr_arg, clippy::type_complexity)] pub flatpint_parser);

pub fn parse_flatpint(
    src: &str,
) -> Result<FlatPint, lalrpop_util::ParseError<usize, lalrpop_util::lexer::Token, &'static str>> {
    flatpint_parser::FlatPintParser::new().parse(src)
}

#[cfg(feature = "solver-scip")]
pub fn solver(ast: &FlatPint) -> Solver<ProblemCreated> {
    Solver::<ProblemCreated>::new(ast)
}