class_docstr: Max. phonological unit, contains phones and triggers alternations.
docstr: :return: syllabified word
docstr_tok: [":","return",":","syllabified","word"]
code: def syllabify(self) -> List[str]:
      """
  
      :return: syllabified word
      """
      nuclei = []
      for n in range(len(self.phones)):
          p = self.phones[n]
          if p.vow:
              nuclei.append(n)
      # initialize syllables with a tuple for the first syllable
      # where onset is everything before the first nucleus
      # and coda remains unknown.
      if nuclei:
          syllables = [
              [self.phones[0 : nuclei[0]], [self.phones[nuclei[0]]], []]
          ]
  
          # continue for every nucleus, assuming that everything between
          # the previous nucleus and it is the onset.
          for x in range(len(nuclei) - 1):
              i = nuclei[x + 1]
              onset = self.phones[nuclei[x] + 1 : i]
              nucleus = [self.phones[i]]
              syllables.append([onset, nucleus, []])
          # assume that everything after the final nucleus is final coda.
          syllables[-1][2] = self.phones[nuclei[-1] + 1 :]
      else:
          syllables = [[self.phones]]
      # now go through and check onset viability
      for x in range(len(syllables) - 1):
          onset = syllables[x + 1][0]
          nucleus = syllables[x + 1][1]
          coda = syllables[x + 1][2]
          # trim all onsets greater than the maximum 2 phones
          # removing extra phones from the left
          # and appending them to the previous coda
          if len(onset) > 2:
              trim = onset[:-2]
              del onset[:-2]
              syllables[x][2] = trim
          # once onset is 2 phones...
          if len(onset) == 2:
              # voiceless oral stop + nasal or liquid
              # is a viable sequence, and passes
              if (
                  (not onset[0].cont)
                  and (not onset[0].vce)
                  and (not onset[0].app)
                  and (not onset[0].nas)
                  and (onset[1].nas or onset[1].app)
              ):
                  break
              # voiced stop + liquid is also a viable sequence, and passes
              elif (not onset[0].cont) and onset[1].app:
                  break
              # otherwise, onset must be right Phone only
              # the left phone is appended to the previous coda
              else:
                  trim = onset[0]
                  del onset[0]
                  syllables[x][2] += [trim]
      self.syllables = syllables
      return syllables
  
imports: import re
  import unicodedata
  from typing import List
  from nltk.tokenize import wordpunct_tokenize
  from cltk.core.cltk_logger import logger
label_desc: Use image node_id 8 for calling the Word obj's underlying member method code with example usage: obj.syllabify() and returns: syllables