1. C# / Говнокод #17309

    +132

    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
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    static void InitializeRegExGrammar()
            {
                SimpleRegExGrammar[0] = "A->B";
                SimpleRegExGrammar[1] = "A->B|A";
                SimpleRegExGrammar[2] = "B->C";
                SimpleRegExGrammar[3] = "B->C@B";
                SimpleRegExGrammar[4] = "C->D*";
                SimpleRegExGrammar[5] = "C->D";
                SimpleRegExGrammar[6] = "D->(A)";
                SimpleRegExGrammar[7] = "D->a";
                SimpleRegExGrammar[8] = "D->b";
                SimpleRegExGrammar[9] = "D->c";
                SimpleRegExGrammar[10] = "D->d";
                SimpleRegExGrammar[11] = "D->e";
                SimpleRegExGrammar[12] = "D->f";
                SimpleRegExGrammar[13] = "D->g";
                SimpleRegExGrammar[14] = "D->h";
                SimpleRegExGrammar[15] = "D->i";
                SimpleRegExGrammar[16] = "D->j";
                SimpleRegExGrammar[17] = "D->k";
                SimpleRegExGrammar[18] = "D->l";
                SimpleRegExGrammar[19] = "D->m";
                SimpleRegExGrammar[20] = "D->n";
                SimpleRegExGrammar[21] = "D->o";
                SimpleRegExGrammar[22] = "D->p";
                SimpleRegExGrammar[23] = "D->q";
                SimpleRegExGrammar[24] = "D->r";
                SimpleRegExGrammar[25] = "D->s";
                SimpleRegExGrammar[26] = "D->t";
                SimpleRegExGrammar[27] = "D->u";
                SimpleRegExGrammar[28] = "D->v";
                SimpleRegExGrammar[29] = "D->w";
                SimpleRegExGrammar[30] = "D->x";
                SimpleRegExGrammar[31] = "D->y";
                SimpleRegExGrammar[32] = "D->z";
            }

    Пока отправлял, придумал, как лучше сделать =(

    Запостил: Destiner, 14 Декабря 2014

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

    • если только как то так
      ...
      string[] SimpleRegExGrammar = {   "A->B",
                                                    "A->B|A", 
                                                    "B->C", 
                                                    "B->C@B", 
                                                    "C->D*", 
                                                    "C->D", 
                                                    "D->(A)", 
                                                    "D->a",
                                                    "D->b",
                                                    "D->c",
                                                    "D->d",
                                                    "D->e",
                                                    "D->f",
                                                    "D->g",
                                                    "D->h",
                                                    "D->i",
                                                    "D->j",
                                                    "D->k",
                                                    "D->l",
                                                    "D->m",
                                                    "D->n",
                                                    "D->o",
                                                    "D->p",
                                                    "D->q",
                                                    "D->r",
                                                    "D->s",
                                                    "D->t",
                                                    "D->u",
                                                    "D->v",
                                                    "D->w",
                                                    "D->x",
                                                    "D->y",
                                                    "D->z"
                                                };
      ...
      Ответить
      • Начиная с седьмого элемента можно сделать цикл по чарам.
        Ответить
        • А если потом нужно будет изменить один из элементов по серединке? Например "D->q" на "D->kokoko" и поедет твой цикл в магадан. Универсально, короче говоря, тут ничего не напишешь)
          Ответить
          • почему тогда это в файлик не вынести? По сути конфиг же, хуле ему в коде то делать.
            Ответить
            • В базу данных. Гулять - так по полной.
              Ответить
              • Тогда уж в параметры приложения сразу, чтобы избавиться от сетевых сбоев.
                Ответить
        • А скажите далёкому от C# человеку, зачем это вообще?
          Регулярки в C# есть и так, парсить регулярки и потом исполнять не нужно. Выходит, Вы парсите какой-то код на своём DSL, в котором есть литералы регулярок?
          Ответить
          • Это хардкод грамматики регулярок для использования библиотекой. Библиотека строит по грамматике дерево состояний lr(1) анализатора. Грамматика регулярок в данном случае выступает скорее примером.
            Ответить
          • string[] SimpleRegExGrammar = { "aaa", "bbb" };
            , где { } - вызов инициализатора массива.
            Можно было бы записать так:
            string[] SimpleRegExGrammar = new string[2];
            SimpleRegExGrammar[0] = "aaa";
            SimpleRegExGrammar[1] = "bbb";

            Короче говоря синтаксический сахарок.
            Такую же штуку можно применять в разных ситуациях
            List<string> str = new List<string> { };
            и укзывать тут элементы массива, вместо поиндексного присвоения значения.
            Ответить
            • Извините, что потревожил своим комментарием, и он попал в контекст беседы об изменениях.
              Я, в общем-то, спрашивал про то, про что мне автор кода ответил.
              Ответить

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