Esempio n. 1
0
  @SuppressWarnings("fallthrough")
  /* \M-, \C-, \c, or \... */
  private int fetchEscapedValue() {
    if (!left()) {
      throw new SyntaxException(ERR_END_PATTERN_AT_ESCAPE);
    }
    fetch();

    switch (c) {
      case 'M':
        if (syntax.op2EscCapitalMBarMeta()) {
          if (!left()) {
            throw new SyntaxException(ERR_END_PATTERN_AT_META);
          }
          fetch();
          if (c != '-') {
            throw new SyntaxException(ERR_META_CODE_SYNTAX);
          }
          if (!left()) {
            throw new SyntaxException(ERR_END_PATTERN_AT_META);
          }
          fetch();
          if (c == syntax.metaCharTable.esc) {
            c = fetchEscapedValue();
          }
          c = ((c & 0xff) | 0x80);
        } else {
          fetchEscapedValueBackSlash();
        }
        break;

      case 'C':
        if (syntax.op2EscCapitalCBarControl()) {
          if (!left()) {
            throw new SyntaxException(ERR_END_PATTERN_AT_CONTROL);
          }
          fetch();
          if (c != '-') {
            throw new SyntaxException(ERR_CONTROL_CODE_SYNTAX);
          }
          fetchEscapedValueControl();
        } else {
          fetchEscapedValueBackSlash();
        }
        break;

      case 'c':
        if (syntax.opEscCControl()) {
          fetchEscapedValueControl();
        }
        /* fall through */

      default:
        fetchEscapedValueBackSlash();
    } // switch

    return c; // ???
  }