use nl3::Nl3;
fn main() {
let nl3 = Nl3::builder()
.grammar(["users message users"])
.vocabulary([
("msg", "message"), ("messag", "message"), ("contact", "message"), ])
.build();
let phrasings = [
"user jack msg user jill",
"user jack msgs user jill",
"user jack messaged user jill",
"user jack contacted user jill",
"user jack contacts user jill",
"jack contacts jill",
];
for phrase in phrasings {
match nl3.parse(phrase) {
Ok(triple) => println!(
"{phrase:<35} => {}({}) -{}-> {}({})",
triple.subject.ty.as_deref().unwrap_or("?"),
triple.subject.value.as_deref().unwrap_or("?"),
triple.predicate.value.as_deref().unwrap_or("?"),
triple.object.ty.as_deref().unwrap_or("?"),
triple.object.value.as_deref().unwrap_or("?"),
),
Err(e) => println!("{phrase:<35} => error: {e}"),
}
}
}