(** Module for representing syllables and their components *) (** Type representing a syllable with its phonological components *) type t = { onset : string; (** Initial consonants *) medial : string; (** Medial consonants (between onset and nucleus) *) nucleus : string; (** Vowel core of the syllable *) coda : string; (** Final consonants *) tone : string; (** Tonal information *) spelling : string; (** Orthographic representation *) start_idx : int; (** Start position in the word *) end_idx : int; (** End position in the word *) stressed : bool; (** Whether this syllable is stressed *) } (** Empty syllable constant *) val empty : t (** Create a syllable with specified components *) val create : ?onset:string -> ?medial:string -> ?nucleus:string -> ?coda:string -> ?tone:string -> ?spelling:string -> ?start_idx:int -> ?end_idx:int -> ?stressed:bool -> unit -> t (** Get the complete syllable string *) val all : t -> string (** Get the rhyme (medial + nucleus + coda) *) val rhyme : t -> string (** Check if the nucleus contains length marker *) val is_long : t -> bool (** Finalize a syllable - determine if it's stressed based on position relative to stress marker *) val finalize : t -> end_idx:int -> stress_idx:int -> t (** Pretty print a syllable with Unicode box drawing *) val pretty_print : t -> string (** Convert to string representation *) val to_string : t -> string (** Append operations *) val append_onset : t -> string -> t val append_nucleus : t -> string -> t val append_coda : t -> string -> t val append_tone : t -> string -> t