Expand description
Neorusticus - A Prolog implementation in Rust
This library provides a complete Prolog interpreter with enhanced error handling, arithmetic operations, list processing, and cut operations.
§Quick Start
use neorusticus::parse_term;
let term = parse_term("foo(bar, X)").unwrap();
println!("Parsed: {}", term);§Architecture
The library is organized into several modules:
ast- Abstract syntax tree typeslexer- Tokenization of Prolog source codeparser- Parsing tokens into ASTunification- Unification algorithmerror- Error types and handlingbuiltins- Built-in predicates and functionsengine- The main Prolog engine for executing queriesutils- Utility functions for pretty printing, term manipulation, etc.
Re-exports§
pub use engine::PrologEngine;pub use engine::EngineStats;pub use engine::ExecutionContext;pub use ast::Term;pub use ast::Clause;pub use error::ParseError;pub use error::RuntimeError;pub use error::ParseResult;pub use error::RuntimeResult;pub use lexer::Token;pub use lexer::Tokenizer;pub use parser::Parser;pub use unification::Unifier;pub use unification::Substitution;pub use builtins::BuiltinPredicates;pub use utils::PrettyPrinter;pub use utils::TermUtils;pub use utils::ClauseUtils;pub use utils::EngineUtils;pub use utils::DatabaseAnalysis;
Modules§
- ast
- Abstract Syntax Tree types for Prolog terms and clauses
- builtins
- Built-in predicates for the Prolog engine
- engine
- Main Prolog execution engine
- error
- Error types and position tracking for the Prolog parser and runtime
- lexer
- Lexical analysis for Prolog source code
- parser
- Parser for Prolog source code
- unification
- Unification algorithm for Prolog terms
- utils
- Utility functions for the Neorusticus Prolog engine
Functions§
- parse_
term - Convenience function for parsing a single term from a string
- quick_
query - Convenience function for creating and running a simple query