public static boolean equalsElement()

in src/org/intellij/grammar/psi/impl/GrammarUtil.java [54:71]


  public static boolean equalsElement(BnfExpression e1, BnfExpression e2) {
    if (e1 == null) return e2 == null;
    if (e2 == null) return false;
    if (getEffectiveType(e1) != getEffectiveType(e2)) return false;
    if (isOneTokenExpression(e1)) {
      return e1.getText().equals(e2.getText());
    }
    else {
      for (PsiElement c1 = e1.getFirstChild(), c2 = e2.getFirstChild(); ;) {
        boolean f1 = c1 == null || c1 instanceof BnfExpression;
        boolean f2 = c2 == null || c2 instanceof BnfExpression;
        if (f1 && f2 && !equalsElement((BnfExpression)c1, (BnfExpression)c2)) return false;
        if (!f1 || f2) c1 = c1 == null ? null : c1.getNextSibling();
        if (f1 || !f2) c2 = c2 == null ? null : c2.getNextSibling();
        if (c1 == null && c2 == null) return true;
      }
    }
  }