Skip to main content

gollum_ast/
item.rs

1//! Top-level item type for the Gollum AST.
2use crate::clause::{Fact, Rule};
3use crate::directive::Directive;
4use crate::query::Query;
5
6/// A plain clause (fact or rule) for use in probabilistic items.
7#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
8#[allow(missing_docs)]
9pub enum PlainClause {
10    Fact(Fact),
11    Rule(Rule),
12}
13
14/// A probabilistic clause.
15#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
16pub struct Probabilistic {
17    /// Probability annotation
18    pub probability: f64,
19    /// The underlying clause
20    pub clause: PlainClause,
21}
22
23/// A top-level item in a Gollum program.
24#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
25#[allow(missing_docs)]
26pub enum Item {
27    Fact(Fact),
28    Rule(Rule),
29    Query(Query),
30    Directive(Directive),
31    Probabilistic(Probabilistic),
32}