Skip to main content

Module grammar

Module grammar 

Source
Expand description

Grammar intermediate representation and links encoding.

The grammar IR is a small expression algebra that can hold PEG, BNF, EBNF, ABNF, and inferred grammars without committing to one textual surface syntax. Values can be encoded as first-class grammar links in a LinkNetwork.

§Example

use meta_language::{
    FromLinks, Grammar, LinkType, LinksDecoder, LinksEncoder, ToLinks,
};

let expr = Grammar::expr();
let grammar = Grammar::builder().start("word").rule("word", expr.rep1(expr.char_range('a', 'z'))).build();

let mut encoder = LinksEncoder::new();
let root = grammar.to_links(&mut encoder);
let network = encoder.into_network();
assert!(network.links().any(|link| link.metadata().link_type() == Some(LinkType::Grammar)));
let mut decoder = LinksDecoder::new(&network);
assert_eq!(Grammar::from_links(&mut decoder, root).expect("grammar decodes"), grammar);

Re-exports§

pub use concepts::annotate_grammar_concepts;
pub use concepts::grammar_expr_concept_id;
pub use concepts::rule_concept_id;
pub use concepts::GrammarConcept;
pub use concepts::GRAMMAR_CONCEPTS;
pub use emit::emit_abnf;
pub use emit::emit_bnf;
pub use emit::emit_ebnf;
pub use emit::emit_gbnf;
pub use emit::emit_javascript_parser;
pub use emit::emit_peggy;
pub use emit::emit_pest;
pub use emit::emit_rust_parser;
pub use emit::emit_tree_sitter_grammar_js;
pub use emit::emit_tree_sitter_grammar_js_with_report;
pub use emit::render_rust_type;
pub use emit::EmitReport;
pub use emit::GrammarEmitError;
pub use emit::JsParserArtifacts;
pub use emit::RustParserArtifacts;
pub use fidelity::canonical_grammar_format;
pub use fidelity::grammar_format_profile;
pub use fidelity::GrammarFidelityLevel;
pub use fidelity::GrammarFormatProfile;
pub use fidelity::GRAMMAR_CONSTRUCTS;
pub use fidelity::GRAMMAR_FORMATS;
pub use import::import_abnf;
pub use import::import_antlr;
pub use import::import_bnf;
pub use import::import_ebnf;
pub use import::import_gbnf;
pub use import::import_lark;
pub use import::import_pest;
pub use import::import_tree_sitter_json;
pub use import::GrammarImportError;
pub use inference::active::clean_structural_acceptance;
pub use inference::active::learn_dfa;
pub use inference::active::learn_grammar;
pub use inference::active::ActiveLearningConfig;
pub use inference::active::ActiveLearningError;
pub use inference::active::Dfa;
pub use inference::active::GrammarAcceptorOracle;
pub use inference::active::Oracle as ActiveLearningOracle;
pub use inference::active::ParserAcceptancePredicate;
pub use inference::active::ParserMembershipOracle;
pub use inference::active::SamplingEquivalenceOracle;
pub use inference::active::Symbol as ActiveSymbol;
pub use inference::advisor::AdviceDecision;
pub use inference::advisor::AdviceDecisionKind;
pub use inference::advisor::AdviceSource;
pub use inference::advisor::ConceptNamingAdvisor;
pub use inference::advisor::FallbackAdvisor;
pub use inference::advisor::MdlMergeAdvisor;
pub use inference::advisor::MergeAdvisor;
pub use inference::advisor::MergeCandidate;
pub use inference::advisor::MergeRequest;
pub use inference::advisor::MergeScore;
pub use inference::advisor::NameCandidate;
pub use inference::advisor::NamingAdvisor;
pub use inference::advisor::NamingRequest;
pub use inference::advisor::LlmClient;
pub use inference::advisor::LlmError;
pub use inference::advisor::LlmMergeAdvisor;
pub use inference::advisor::LlmNamingAdvisor;
pub use inference::cfg::infer_cfg;
pub use inference::cfg::infer_cfg_with_advisors;
pub use inference::cfg::InferenceOptions;
pub use inference::cfg::InferenceReport;
pub use inference::cfg::InferenceResult;
pub use inference::cfg::Oracle;
pub use inference::cfg::PositiveOnlyOracle;
pub use inference::eval::evaluate;
pub use inference::eval::mdl;
pub use inference::eval::run_corpus;
pub use inference::eval::run_named_corpus;
pub use inference::eval::sample;
pub use inference::eval::size_symbols;
pub use inference::eval::BenchmarkReport;
pub use inference::eval::EvalError;
pub use inference::eval::GoldenCorpus;
pub use inference::eval::GrammarOracle;
pub use inference::eval::MembershipOracle;
pub use inference::eval::MetricScores;
pub use inference::eval::SampleConfig;
pub use inference::eval::ScoringMode;
pub use inference::eval::GOLDEN_CORPORA;
pub use inference::lexical::categorise;
pub use inference::lexical::infer_lexical_classes;
pub use inference::lexical::CharCategory;
pub use inference::lexical::LexicalConfig;
pub use inference::lexical::LexicalModel;
pub use inference::lexical::Token;
pub use inference::minimize::mdl_cost;
pub use inference::minimize::minimize;
pub use inference::minimize::Mdl;
pub use inference::minimize::MinimizeOptions;
pub use inference::minimize::MinimizeReport;
pub use inference::minimize::MinimizeResult;
pub use inference::prior::build_structural_prior;
pub use inference::prior::ByteSpan;
pub use inference::prior::Delimiter;
pub use inference::prior::LeafKind;
pub use inference::prior::PriorOptions;
pub use inference::prior::SeedNode;
pub use inference::prior::SeedTree;
pub use inference::prior::StructuralPrior;
pub use inference::prior::WhitespacePolicy;
pub use inference::semantic::default_pattern_catalog;
pub use inference::semantic::evaluate_atom;
pub use inference::semantic::evaluate_clause;
pub use inference::semantic::evaluate_constraint;
pub use inference::semantic::evaluate_probabilistic;
pub use inference::semantic::mine_semantic_constraints;
pub use inference::semantic::ConstraintAtom;
pub use inference::semantic::ConstraintClause;
pub use inference::semantic::ConstraintPattern;
pub use inference::semantic::LengthUnit;
pub use inference::semantic::NonTerminalRef;
pub use inference::semantic::SemanticConstraint;
pub use inference::semantic::SemanticInferenceConfig;
pub use inference::sequitur::run_sequitur;
pub use inference::sequitur::Symbol;
pub use inference::state_merging::infer_dfa;
pub use inference::state_merging::InferredAutomaton;
pub use inference::state_merging::MergeStrategy;
pub use inference::state_merging::Sample;
pub use runtime::register_grammar;
pub use runtime::with_grammar;
pub use runtime::GrammarParser;
pub use surface::grammar_from_lino;
pub use surface::grammar_to_lino;
pub use surface::parse_grammar_surface;
pub use surface::write_grammar_surface;
pub use surface::GrammarSurfaceError;
pub use translate::grammar_concept_translation_rules;
pub use translate::translate_grammar_surface;
pub use translate::GrammarTranslateError;
pub use validate::validate;
pub use validate::DiagnosticKind;
pub use validate::GrammarDiagnostic;
pub use validate::RuleSpan;
pub use validate::Severity;

Modules§

concepts
Concept-ontology alignment for grammar algebra nodes.
emit
Emitters for external grammar definition formats.
fidelity
Per-format capability profiles for grammar round-trip fidelity.
import
Importers for external grammar definition formats.
inference
Grammar inference support.
runtime
Runtime parser for first-class grammar values.
surface
Meta-notation-derived textual surface syntax for grammar authoring.
translate
Concept-aligned translation of a grammar’s human-facing surface.
validate
Semantic validation for authored grammar IR values.

Structs§

ExprBuilder
Ergonomic constructor for grammar expressions.
Grammar
Order-preserving grammar.
GrammarBuilder
Fluent builder for order-preserving grammars.
GrammarRule
A named grammar rule.

Enums§

CharClassItem
One item inside a character class.
GrammarExpr
One node of the grammar expression algebra.
GrammarFormat
Origin grammar format.
RuleKind
How a rule participates in parsing.