29 lines
707 B
Rust
29 lines
707 B
Rust
mod context;
|
|
mod translate_body;
|
|
mod translate_head;
|
|
|
|
pub use context::Context;
|
|
|
|
use translate_body::translate_body;
|
|
use translate_head::determine_head_type;
|
|
|
|
pub fn read(rule: &clingo::ast::Rule, context: &mut Context) -> Result<(), crate::Error>
|
|
{
|
|
let test = translate_body(rule.body(), context)?;
|
|
|
|
println!("{:?}", test);
|
|
|
|
let test = determine_head_type(rule.head(),
|
|
|name, arity| context.find_or_create_predicate_declaration(name, arity))?;
|
|
|
|
match test
|
|
{
|
|
translate_head::HeadType::ChoiceWithSingleAtom(_) => println!("choice single"),
|
|
translate_head::HeadType::IntegrityConstraint => println!("integrity"),
|
|
translate_head::HeadType::Trivial => println!("trivial"),
|
|
_ => (),
|
|
}
|
|
|
|
Ok(())
|
|
}
|