wp-lang 0.3.0

WPL language crate with AST, parser, evaluator, builtins, and generators.
Documentation
use std::path::PathBuf;

use crate::{WplExpress, WplPackage, WplRule};

pub const DEFAULT_RULE_FILE: &str = "rule.wpl";
pub const DEFAULT_SAMPLE_FILE: &str = "sample.txt";

#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum Mode {
    Auto,
    Package,
    Rule,
    Expr,
}

#[derive(Debug, Clone, Eq, PartialEq)]
pub struct SourceRequest {
    pub mode: Mode,
    pub input: Option<PathBuf>,
}

#[derive(Debug, Clone, Eq, PartialEq)]
pub struct SampleRequest {
    pub source: SourceRequest,
    pub rule_name: Option<String>,
    pub sample: SampleInput,
}

#[derive(Debug, Clone, Eq, PartialEq)]
pub enum SampleInput {
    Inline(String),
    DefaultFile,
    File(PathBuf),
}

#[derive(Debug)]
pub enum ParseResult {
    Package(WplPackage),
    Rule(WplRule),
    Expr(WplExpress),
}

#[derive(Debug)]
pub struct EvalResult {
    pub target: String,
    pub record: String,
    pub residue: String,
    pub field_count: usize,
}

#[derive(Debug)]
pub struct SampleCheckResult {
    pub parsed: ParseResult,
    pub evaluation: EvalResult,
}