1. Куча / Говнокод #20865

    +1514

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    [151] ns-flow-pair-entry(n,c) ::= ns-flow-pair-yaml-key-entry(n,c)
                                    | c-ns-flow-map-empty-key-entry(n,c)
                                    | c-ns-flow-pair-json-key-entry(n,c)
    [152] ns-flow-pair-yaml-key-entry(n,c) ::= ns-s-implicit-yaml-key(flow-key)
                                               c-ns-flow-map-separate-value(n,c)
    [153] c-ns-flow-pair-json-key-entry(n,c) ::= c-s-implicit-json-key(flow-key)
                                                 c-ns-flow-map-adjacent-value(n,c)
    [154] ns-s-implicit-yaml-key(c) ::= ns-flow-yaml-node(n/a,c) s-separate-in-line?
                                       /* At most 1024 characters altogether */
    [155] c-s-implicit-json-key(c) ::= c-flow-json-node(n/a,c) s-separate-in-line?
                                       /* At most 1024 characters altogether */

    If the “?” indicator is omitted, parsing needs to see past the implicit key to recognize it as such. To limit the amount of lookahead required, the “:” indicator must appear at most 1024 Unicode characters beyond the start of the key. In addition, the key is restricted to a single line.

    Note that YAML allows arbitrary nodes to be used as keys. In particular, a key may be a sequence or a mapping. Thus, without the above restrictions, practical one-pass parsing would have been impossible to implement.


    Столкнулся, значит, с проблемой. ЙАМЛ парсер для Го не может распарсить даже примеры из спецификации.
    Заглянул в исходники - ад и погибель. Копипаста сишного кода из libyaml с косметическими изменениями. Функции по 200+ строк с кучей ифов, регулярками и т.п. Решил заглянуть в спецификацию в надежде, что может можно самому как-то... в спецификации - ад и погибель. Копипаста с грамматическими ошибками, и тьма их. Ну а как дошел до этого места, так сразу и понял, что тут уже делать больше нечего.

    Запостил: wvxvw, 19 Августа 2016

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

    • показать все, что скрытоКакой багор )))
      Ответить
    • показать все, что скрыто>>регулярками
      лол
      Ответить
    • YAML говно. на проекте есть пара конфигов в YAML. все как бы не критично, но пару раз уже и индентацию ломали (но конфиг (криво) зачитывался), и пару раз пользователи неправильно данные добавляли (разница синтаксиса между: ключ+значение vs ключ+список значений).

      к слову одна из прог "гениально" последнюю проблему решила: у каждого значение есть ключ/имя, но во многих местах ключи/имена просто игнорируется. таким образом прога форсирует что бы все параметры были однозначно: либо контейнером, либо простые значения.

      ЗЫ на этой теме меня до сих пор пробивает что нет стандарта конфигов на s-expressions. наверное опять lisp curse.
      Ответить
      • > стандарта конфигов на s-expressions
        Слишком просто, нет простора для выебонов типа YAML'овских...
        Ответить
        • "не энтерпрайзно"
          Ответить
          • Будете смеяться, но в наших интерпрайзах внутре есть конфиги и на секспах, и тупо на эрлаговских термах. Раньше был XML, но он жирный слишком для конфигов с тысячами объектов.
            Ответить
            • показать все, что скрытолол, все говнят на XML, а потом вручную ловят неэкскйпированных питухов
              Ответить
              • Так это скрытые внутренние конфиги, откуда там питуху взяться?

                Вот юзеров, копипастящих команды из блокнота наблюдаю часто. А ещё мне рассказывали, как одни утырки скрипт сохранили в .doc, переименовали в .sh и написали багрепорт, что, мол, ваша железка не работает.
                Ответить
            • "Будете смеяться, но в наших интерпрайзах внутре есть конфиги и на секспах, и тупо на эрлаговских термах."

              для секспов есть какие библиотеки?

              "Раньше был XML, но он жирный слишком для конфигов с тысячами объектов."

              фи как не культурно. мой прошлый работодатель дампы базы в XML сливал и читал. ну подумаешь что нужно <size-of-DB> гигов памяти что бы дамп прочитать/провалидировать. это у вас просто памяти мало на серваках стоит.
              Ответить
              • Самописное говно на сишке, насколько я знаю.
                Ответить
              • >> <size-of-DB>
                зачем? sax отменили?
                Ответить
                • sax там используется. в память все зачитывается перед там как в базу отправлять, потому что прога позволяет данные еще патчить (что в оригинале и была ее основной функцией).
                  Ответить
      • показать все, что скрытоТак пиши на "PHP", какие проблемы?
        Ответить
      • А мне жейсон нравится. Если бы были коменты и можно было писать ключи без кавычек, цены бы не было.
        Ответить
        • { "comment": "..." }
          Ответить
        • json5. напитоне даже парсер есть.
          Ответить
        • > А мне жейсон нравится. Если бы были коменты и можно было писать ключи без кавычек, цены бы не было.

          так как json никто не валидирует сильно, у нас в одном месте в качестве комментариев просто левые ключики со комментарием как значение/строка используются.
          Ответить
        • показать все, что скрытоКстати, буст проперти три умел парсить жейсон с коментами. Но в 1.58 эту фичу без объявления войны оторвали.
          Ответить
    • Привет, бессмысленный пиздун

      Ответить
    • Прикиньте, я всю ночь регал пидоров, наргеал 2,6к, а писема с подтверждением пришли только для половины. FFFUUUUUU~
      Ответить

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