arena-terms-parser 0.6.2

Parser for arena-backed, lightweight representations of Prolog-like terms
Documentation
//! # Arena Terms Parser
//!
//! Parser for arena-backed Prolog-like terms.
//!
//! This crate provides a parser for reading and interpreting Prolog-style terms
//! into the compact, bump-allocated arena representation provided by the
//! [`arena_terms`] crate. It is built on top of the [`parlex`] core library and uses
//! lexer and parser code generated by the [`parlex-gen`] tools **Alex** (lexer)
//! and **ASLR** (parser).
//!
//! # Overview
//! The parser is designed for performance and memory efficiency, making it
//! suitable for large-scale term manipulation, logic engines, and symbolic
//! computation. It supports the full range of Prolog term constructs, including
//! atoms, numbers, lists, and compound structures, while maintaining tight
//! control over allocation through arena-based storage.
//!
//! # Modules
//! - [`lexer`]: Performs tokenization and value extraction (atoms, numbers, dates, etc.).
//! - [`oper`]: Defines operator fixity, precedence, and associativity rules.
//! - [`parser`]: Implements an SLR parser that constructs `arena_terms::Term` values.
//!
//! # Dependencies
//! - [`arena_terms`]: Provides the arena-backed term data structures.
//! - [`parlex`]: Core support library for lexing and parsing.
//! - [`parlex-gen`]: Code generation utilities for **Alex** and **ASLR**.
//!
//! ## License
//!
//! Copyright (c) 2005–2026 IKH Software, Inc.
//!
//! Released under the [MIT License](https://opensource.org/licenses/MIT).
//!
//! ## See Also
//!
//! - [arena-terms](https://crates.io/crates/arena-terms) — arena backed terms library
//! - [parlex](https://crates.io/crates/parlex) — lexer and parser generators core support library
//! - [parlex-gen](https://crates.io/crates/parlex-gen) — lexer and parser generators ALEX and ASLR

mod encoding;
mod lexer;
mod parser;
mod token;

pub use encoding::Encoding;
pub use lexer::{TermLexer, TermLexerDriver};
pub use parser::parser_data::TokenID;
pub use parser::{TermParser, TermParserDriver, TermTokenParser, define_opers};
pub use token::{TermToken, Value};