1. Java / Говнокод #3999

    +110

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    // At the maximum, no match found
                    if (j >= cmax)
                        return false;
                    // Okay, must try one more atom
                    if (!atom.match(matcher, i, seq))
                        return false;
                    // If we haven't moved forward then must break out
                    if (i == matcher.last)
                        return false;
    
                if (type == GREEDY)
                    return match0(matcher, i, j, seq);
                else if (type == LAZY)
                    return match1(matcher, i, j, seq);
                else
                    return match2(matcher, i, j, seq);

    to be continued....

    Запостил: 3.14159265, 16 Августа 2010

    Комментарии (9) RSS

    • match0 match1 match2 - идеальные имена
      Ответить
      • а вот и сами функции
        boolean match(Matcher matcher, int i, CharSequence seq) {
                    switch (type) {
                    case GREEDY:
                        return (atom.match(matcher, i, seq) && next.match(matcher, matcher.last, seq))
                            || next.match(matcher, i, seq);
                    case LAZY:
                        return next.match(matcher, i, seq)
                            || (atom.match(matcher, i, seq) && next.match(matcher, matcher.last, seq));
                    case POSSESSIVE:
                        if (atom.match(matcher, i, seq)) i = matcher.last;
                        return next.match(matcher, i, seq);
                    default:
                        return atom.match(matcher, i, seq) && next.match(matcher, matcher.last, seq);
                    }
                }
        
                boolean match1(Matcher matcher, int i, int j, CharSequence seq) {
                    for (;;) {
                        // Try finishing match without consuming any more
                        if (next.match(matcher, i, seq))
                            return true;
                        // At the maximum, no match found
                        if (j >= cmax)
                            return false;
                        // Okay, must try one more atom
                        if (!atom.match(matcher, i, seq))
                            return false;
                        // If we haven't moved forward then must break out
                        if (i == matcher.last)
                            return false;
                        // Move up index and number matched
                        i = matcher.last;
                        j++;
                    }
                }
                boolean match2(Matcher matcher, int i, int j, CharSequence seq) {
                    for (; j < cmax; j++) {
                        if (!atom.match(matcher, i, seq))
                            break;
                        if (i == matcher.last)
                            break;
                        i = matcher.last;
                    }
                    return next.match(matcher, i, seq);
                }
        Ответить
        • ахренеть... )))
          и вот такое, при давно существующем пакете java.util.regex
          Ответить
        • Фабрику тут надо))
          UPD ...если бы это объекты возвращались.
          Чето с башкой седня.
          Ответить
        • Да, внутри конечно тоже треш. Это продолжение все того же проекта?
          Ответить
          • >>>и вот такое, при давно существующем пакете java.util.regex
            >>>Это продолжение все того же проекта?

            вы не поверите но это продолжение исходников жабы
            http://kickjava.com/src/java/util/regex/Pattern.java.htm
            Ответить
            • все понятно, конечные автоматы через жопу
              вот и с этим приходится жить
              Ответить
            • Я вот с детства подсознательно чуял))
              Ну как бы ни срали некоторые из нас параллелепипедами, есть вещи, которые написаны на яве, и лучших аналогов я не видел. На ноуте поставил нетбинс не так давно, теперь на работе от студии воротит.
              Ой блять какая уебищная поделка(( Дикие бабки -- нерабочий интеллисенс блять. И "no files for search". Ну пиздец.
              Ответить
    • Если дело не только в именах, то я не вижу...

      ЗЫ: Херово становится когда пишешь какой-нить кусок методом полу-тыка, вся эта шняга разрастается, начинает работать как надо. И ты вздыхаешь с облегчением, идешь курить. Через 10 минут видишь кучу идентификаторов вида q1, q1234, qqqq2, z, asd, ww, qqq, aaaa, ss и всё.
      Отсюда и пошло выражение -- стучаться головой об стол.
      Ответить

    Добавить комментарий