public static boolean maybeEmtpy()

in jflex/src/main/java/jflex/core/SemCheck.java [61:99]


  public static boolean maybeEmtpy(RegExp re) {
    RegExp2 r;

    switch (re.type) {
      case sym.BAR:
        r = (RegExp2) re;
        return maybeEmtpy(r.r1) || maybeEmtpy(r.r2);

      case sym.CONCAT:
        r = (RegExp2) re;
        return maybeEmtpy(r.r1) && maybeEmtpy(r.r2);

      case sym.STAR:
      case sym.QUESTION:
        return true;

      case sym.PLUS:
        RegExp1 r1 = (RegExp1) re;
        return maybeEmtpy((RegExp) r1.content);

      case sym.CHAR:
      case sym.CHAR_I:
      case sym.PRIMCLASS:
      case sym.TILDE:
        return false;

      case sym.STRING:
      case sym.STRING_I:
        String content = (String) ((RegExp1) re).content;
        return content.length() == 0;

      case sym.BANG:
        RegExp1 r3 = (RegExp1) re;
        return !maybeEmtpy((RegExp) r3.content);

      default:
        throw new RegExpException(re);
    }
  }