-- | Main module for the Gram library.
--
-- This module provides convenient access to all Gram library functionality
-- by re-exporting public APIs from core modules. Import this module to access
-- all Gram types, functions, and utilities without needing to import
-- individual modules.
--
-- == Library Organization
--
-- The Gram library is organized into several modules:
--
-- * @Gram.Serialize@ - Serialization of Pattern Subject to gram notation
-- * @Gram.Parse@ - Parsing gram notation to Pattern Subject
-- * @Gram.Validate@ - Validation of parsed Gram AST for semantic correctness
--
-- == Usage
--
-- Import the main Gram module to access all functionality:
--
-- >>> import Gram
-- >>> import Pattern.Core (Pattern(..))
-- >>> import Subject.Core (Subject(..), Symbol(..))
-- >>> import Data.Set (Set)
-- >>> import qualified Data.Set as Set
-- >>> let s = Subject (Symbol "n") (Set.fromList ["Person"]) empty
-- >>> let p = Pattern { value = s, elements = [] }
-- >>> toGram p
-- "(n:Person)"
--
-- All public functions and types from Gram.Serialize, Gram.Parse, and
-- Gram.Validate are available through this module. See individual module
-- documentation for detailed information about specific functionality.
--
-- == Re-export Structure
--
-- This module re-exports:
--
-- * All public exports from @Gram.Serialize@ (toGram, etc.)
-- * All public exports from @Gram.Parse@ (fromGram, ParseError, etc.)
-- * All public exports from @Gram.Validate@ (validate, ValidationError, etc.)
--
-- Internal implementation details and helper functions are not exported through
-- this module, ensuring a clean public API.
module Gram
  ( module Gram.Serialize
  , module Gram.Parse
  , module Gram.Validate
  ) where

import Gram.Serialize
import Gram.Parse
import Gram.Validate