public boolean isOK(JointMultigram m) // TODO: lhs all vowels <-> rhs all vowels
      {
    // CHANGE: multigram ending with $ is ok iff it is ok without th e $
    if (m.lhs.endsWith(Alphabet.finalBoundaryString)
        || m.rhs.endsWith(Alphabet.finalBoundaryString)) {
      if (!(m.lhs.endsWith(Alphabet.finalBoundaryString)
          && m.rhs.endsWith(Alphabet.finalBoundaryString))) return false;

      String lhsx = m.lhs.substring(0, m.lhs.length() - 1);
      String rhsx = m.rhs.substring(0, m.rhs.length() - 1);
      JointMultigram mm = m.set.createMultigram(lhsx, rhsx);
      return isOK(mm);
    }
    if (m.lhs.contains(Alphabet.initialBoundaryString)
        || m.rhs.contains(Alphabet.finalBoundaryString)) // this is no good
    {
      return m.lhs.equals(m.rhs)
          && (m.rhs.equals(Alphabet.initialBoundaryString)
              || m.rhs.equals(Alphabet.finalBoundaryString));
    }
    if (m.isSingleton()) return true;
    if (isPossibleGrapheme(m.lhs, true) && isPossibleGrapheme(m.rhs, false)) return true;
    return false;
  }
예제 #2
0
 public boolean isOK(JointMultigram m) // TODO: lhs all vowels <-> rhs all vowels
     {
   boolean x = m.isSingleton() || lengthOneOrTwo(m.lhs, m.rhs);
   System.err.println(x + " " + m);
   return x;
 }