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§
- Expr
Builder - Ergonomic constructor for grammar expressions.
- Grammar
- Order-preserving grammar.
- Grammar
Builder - Fluent builder for order-preserving grammars.
- Grammar
Rule - A named grammar rule.
Enums§
- Char
Class Item - One item inside a character class.
- Grammar
Expr - One node of the grammar expression algebra.
- Grammar
Format - Origin grammar format.
- Rule
Kind - How a rule participates in parsing.