class_docstr: A syllable has three main constituents:
  
  - onset
  - nucleus
  - coda
  
  Source: https://en.wikipedia.org/wiki/Syllable
docstr: >>> sylla1 = Syllable("armr", ["a"], ["r", "m"])
  >>> sylla1.onset
  []
  >>> sylla1.nucleus
  ['a']
  >>> sylla1.coda
  ['r', 'm', 'r']
  
  >>> sylla2 = Syllable("gangr", ["a"], ["g", "n", "r"])
  >>> sylla2.onset
  ['g']
  >>> sylla2.nucleus
  ['a']
  >>> sylla2.coda
  ['n', 'g', 'r']
  
  
  >>> sylla3 = Syllable("aurr", ["a", "u"], ["r"])
  >>> sylla3.nucleus
  ['a', 'u']
  >>> sylla3.coda
  ['r', 'r']
  
  
  :param text: a syllable
docstr_tok: [">",">",">","sylla1","=","Syllable","(","``","armr","''",",","[","``","a","''","]",",","[","``","r","''",",","``","m","''","]",")",">",">",">","sylla1.onset","[","]",">",">",">","sylla1.nucleus","[","'","a","'","]",">",">",">","sylla1.coda","[","'","r","'",",","'m","'",",","'","r","'","]",">",">",">","sylla2","=","Syllable","(","``","gangr","''",",","[","``","a","''","]",",","[","``","g","''",",","``","n","''",",","``","r","''","]",")",">",">",">","sylla2.onset","[","'","g","'","]",">",">",">","sylla2.nucleus","[","'","a","'","]",">",">",">","sylla2.coda","[","'n","'",",","'","g","'",",","'","r","'","]",">",">",">","sylla3","=","Syllable","(","``","aurr","''",",","[","``","a","''",",","``","u","''","]",",","[","``","r","''","]",")",">",">",">","sylla3.nucleus","[","'","a","'",",","'","u","'","]",">",">",">","sylla3.coda","[","'","r","'",",","'","r","'","]",":","param","text",":","a","syllable"]
code: def _compute_syllable(self, text):
      """
      >>> sylla1 = Syllable("armr", ["a"], ["r", "m"])
      >>> sylla1.onset
      []
      >>> sylla1.nucleus
      ['a']
      >>> sylla1.coda
      ['r', 'm', 'r']
  
      >>> sylla2 = Syllable("gangr", ["a"], ["g", "n", "r"])
      >>> sylla2.onset
      ['g']
      >>> sylla2.nucleus
      ['a']
      >>> sylla2.coda
      ['n', 'g', 'r']
  
  
      >>> sylla3 = Syllable("aurr", ["a", "u"], ["r"])
      >>> sylla3.nucleus
      ['a', 'u']
      >>> sylla3.coda
      ['r', 'r']
  
  
      :param text: a syllable
      """
      is_in_onset = True
      is_in_nucleus = False
      is_in_coda = False
      if len(text) > 0:
          for c in text:
              if is_in_onset and c in self.consonants:
                  self.onset.append(c)
  
              elif is_in_onset and c in self.vowels:
                  is_in_onset = False
                  is_in_nucleus = True
                  self.nucleus.append(c)
  
              elif is_in_nucleus and c in self.vowels:
                  self.nucleus.append(c)
  
              elif is_in_nucleus and c in self.consonants:
                  is_in_nucleus = False
                  is_in_coda = True
                  self.coda.append(c)
  
              elif is_in_coda and c in self.consonants:
                  self.coda.append(c)
  
              elif is_in_coda and c in self.vowels:
                  raise ValueError(
                      "This is not a correct syllable "
                      "(a vowel '{}' cannot be inserted in coda)".format(
                          c
                      )
                  )
  
              else:
                  raise ValueError(
                      "{} is an unknown character".format(c)
                  )
  
          if len(self.nucleus) == 0:
              raise ValueError("This is not a correct syllable")
      else:
          raise ValueError("A syllable can't be void")
  
imports: import logging
  import unicodedata
  from collections import defaultdict
  from typing import List, Union
  import cltk.phonology.ang.syllabifier
  import cltk.phonology.enm.syllabifier
  import cltk.phonology.gmh.syllabifier
  import cltk.phonology.non.syllabifier
  import cltk.phonology.non.utils
  from cltk.core.exceptions import CLTKException
label_desc: Use image node_id 2 for calling the Syllable obj's underlying member method code with example usage: obj._compute_syllable(text) without return types