omena-parser 0.3.0

Green-field cstree parser substrate for the Omena CSS parser stack
Documentation
//! Green-field parser substrate for omena-css.
//!
//! This crate owns the cstree parser track and publishes parser facts for the
//! product query, bridge, LSP, and transform consumers.

#[cfg(test)]
pub(crate) use omena_syntax::SyntaxKind;
pub use omena_syntax::{CssKeywordText, StyleDialect, css_keyword};

mod closed_world;
mod cst;
mod extension;
mod facts;
mod instrumentation;
mod language;
mod lex;
mod parse;
mod parse_tree_contract_idl_generated;
// R1 narrow public surface: `public_product` is private; only this curated set
// of V0 contract types + summary fns is re-exported (no wildcard). Reuse of
// omena-parser as a building block goes through these names — keep the list
// explicit and minimal rather than widening to `pub use public_product::*`.
mod public_product;
mod recovery;
mod spans;
mod summaries;
mod syntax_helpers;
mod value_names;
pub use closed_world::{
    ClosedWorldBundleBuildErrorV0, ClosedWorldBundleV0, ClosedWorldInterfaceHashAvailabilityV0,
    ClosedWorldInterfaceHashEntryV0, ClosedWorldInterfaceHashSetV0, ClosedWorldLinkedModuleV0,
    ClosedWorldModuleMetadataV0, ClosedWorldReachabilityBitsetParityReportV0,
    ClosedWorldSourcePrecisionSummaryV0, ConfigurationHashV0, ModuleIdV0, ModuleInstanceKeyV0,
    ModuleQualifiedSymbolSetV0, OpenWorldSnapshotV0, ReachabilityIndexV0,
    summarize_closed_world_reachability_bitset_parity_v0,
};
pub use cst::{
    AtRuleCstNode, BogusCstNode, CommaSeparatedComponentValueListCstNode, ComponentValueCstNode,
    ComponentValueListCstNode, CustomPropertyValueCstNode, DeclarationCstNode,
    DeclarationListCstNode, ParsedCst, RuleCstNode, SelectorCstNode, SimpleBlockCstNode,
    StylesheetCstNode, TypedCstNode, UrlValueCstNode, ValueCstNode, is_at_rule_node_kind,
};
pub use extension::{BuiltinDialectExtension, DialectExtension, TemplatePlaceholderMode};
pub(crate) use extension::{at_rule_spec, scss_at_rule_spec};
pub use facts::{
    ParsedAnimationFact, ParsedAnimationFactKind, ParsedAtRuleFact,
    ParsedCssModuleComposesEdgeFact, ParsedCssModuleComposesEdgeKind, ParsedCssModuleComposesFact,
    ParsedCssModuleComposesFactKind, ParsedCssModuleValueDefinitionEdgeFact,
    ParsedCssModuleValueFact, ParsedCssModuleValueFactKind, ParsedCssModuleValueImportEdgeFact,
    ParsedExtendTargetFact, ParsedExtendTargetFactKind, ParsedIcssExportEdgeFact, ParsedIcssFact,
    ParsedIcssFactKind, ParsedIcssImportEdgeFact, ParsedSassCallableParameterFact,
    ParsedSassCallableSignatureFact, ParsedSassIncludeFact, ParsedSassModuleEdgeFact,
    ParsedSassModuleEdgeFactKind, ParsedSassPlaceholderDefinitionFact, ParsedSassSymbolFact,
    ParsedSassSymbolFactKind, ParsedSelectorFact, ParsedSelectorFactKind, ParsedStyleFacts,
    ParsedVariableFact, ParsedVariableFactKind, collect_icss_export_values_from_cst,
    collect_style_facts_with_extension, facts_from_cst,
};
pub(crate) use facts::{
    SelectorBranch, collect_class_selector_names_from_header,
    css_module_block_scope_marker_in_header, css_module_header_is_global_only,
    product_facts_from_cst, resolve_selector_header, split_selector_groups,
};
pub(crate) use facts::{
    collect_css_module_value_definition_edge_names, css_module_value_reference_token_can_be_name,
    css_module_value_source_name, css_module_value_statement_end, declaration_colon_index,
};
pub use instrumentation::{
    OmenaParserLexInstrumentationSnapshotV0, OmenaParserParseInstrumentationSnapshotV0,
    with_omena_parser_lex_instrumentation, with_omena_parser_parse_instrumentation,
};
#[cfg(test)]
pub(crate) use instrumentation::{
    omena_parser_syntax_root_materialization_count,
    reset_omena_parser_syntax_root_materialization_count,
};
pub(crate) use instrumentation::{
    record_omena_parser_lex_materialization, record_omena_parser_parse_materialization,
    record_omena_parser_syntax_root_materialization,
};
pub use language::StyleLanguage;
pub use lex::{LexResult, LexedToken};
pub(crate) use lex::{Token, Tokenizer, public_token_text};
pub use parse::{
    HirId, ParseEntryPoint, ParseError, ParseErrorCode, ParseResult, ParseReuseCache, SyntaxNodeId,
    collect_style_facts, hir_id_for_syntax_node, lex, lex_with_extension, parse, parse_entry_point,
    parse_entry_point_with_extension, parse_entry_point_with_extension_and_reuse_cache,
    parse_entry_point_with_reuse_cache, parse_only, parse_with_extension, parse_with_reuse_cache,
    syntax_node_id,
};
pub(crate) use parse::{Parser, tokenize};
pub use parse_tree_contract_idl_generated::ParseTreeNodeV0;
pub use public_product::{
    ParserCanonicalCandidateBundleV0, ParserCanonicalProducerSignalV0, ParserEvaluatorCandidatesV0,
    ParserIndexSummaryV0, dialect_for_path, summarize_css_modules_intermediate,
    summarize_parser_canonical_candidate, summarize_parser_canonical_producer_signal,
    summarize_parser_evaluator_candidates,
};
pub use recovery::{RECOVERY_DECLARATION, RECOVERY_SELECTOR, RECOVERY_TOP, TokenSet};
pub use spans::{ParserByteSpanV0, ParserPositionV0, ParserRangeV0};
pub use summaries::{
    OmenaParserAtRuleKindCountsV0, OmenaParserCssModuleComposesEdgeFactV0,
    OmenaParserCssModuleValueDefinitionEdgeFactV0, OmenaParserCssModuleValueImportEdgeFactV0,
    OmenaParserDeclarationKindCountsV0, OmenaParserIcssExportEdgeFactV0,
    OmenaParserIcssImportEdgeFactV0, OmenaParserLexSummaryV0, OmenaParserLexTokenV0,
    OmenaParserParityLiteSummaryV0, OmenaParserSassModuleEdgeFactV0, OmenaParserSassSymbolFactV0,
    OmenaParserSassSymbolResolutionCapabilitiesV0, OmenaParserSassSymbolResolutionEdgeV0,
    OmenaParserSassSymbolResolutionV0, OmenaParserStyleFactsSummaryV0, ParserBoundarySummary,
    ParserCstEquivalenceSummaryV0, ParserPrattValueCoverageSummaryV0,
    ParserRecursiveDescentCoverageSummaryV0, ParserSemanticNameConsumptionSummaryV0,
    summarize_omena_parser_lex, summarize_omena_parser_parity_lite,
    summarize_omena_parser_style_facts, summarize_parser_boundary,
    summarize_parser_cst_equivalence, summarize_parser_semantic_name_consumption,
    summarize_pratt_value_parser_coverage, summarize_recursive_descent_parser_coverage,
};
#[cfg(test)]
pub(crate) use syntax_helpers::infix_binding_power;
pub(crate) use syntax_helpers::{
    UNARY_PREFIX_RIGHT_BINDING_POWER, at_rule_prelude_head_is_custom_ident,
    at_rule_prelude_head_is_custom_property_name, attribute_name_token_can_continue,
    attribute_name_token_can_start, attribute_value_token_can_start, bracketed_value_recovery,
    comma_separated_component_value_list_item_recovery, containing_at_rule_header_name,
    css_module_scope_function_kind, dialect_allows_value_logical_operators,
    find_block_after_header, find_selector_block_after_header, function_argument_count_is_valid,
    function_argument_recovery, function_requires_filled_top_level_arguments,
    interpolation_end_kind, is_at_rule_prelude_boundary, is_attribute_matcher, is_combinator,
    is_component_value_atom_start, is_css_module_from_source_token,
    is_dynamic_function_argument_head, is_interpolation_start, is_nth_pseudo_class,
    is_scss_control_rule_kind, is_scss_module_namespace_token, is_scss_module_source_token,
    is_scss_module_visibility_name_token, is_selector_boundary, is_selector_boundary_until,
    is_selector_combinator_kind, is_selector_list_pseudo_class, is_statement_end,
    keyframe_selector_token_is_valid, language_tag_token_can_start, matches_ignore_ascii_case,
    matching_right_brace, matching_right_paren_from_range, matching_simple_block_close,
    namespace_selector_target_can_start, next_non_trivia_token, next_non_trivia_token_after_range,
    next_non_trivia_token_index_until, next_non_trivia_token_until, previous_non_trivia_token,
    previous_non_trivia_token_index, selector_component_can_end, selector_component_can_start,
    selector_item_token_is_recoverable, simple_block_recovery,
    skip_statement_or_unmatched_boundary, skip_trivia_tokens, specialized_function_kind,
    style_wrapper_at_rule, token_index_by_range, top_level_token_kind_index,
    top_level_token_text_index, value_infix_operator_binding, value_list_item_recovery,
    variable_declaration_node_kind,
};

#[cfg(test)]
mod tests;