Двусмысленность Ямля; отступы и пустой узел - PullRequest
2 голосов
/ 21 октября 2010

я написал:

a:
-b
-c

Парсер понял это как:

!!map {
  ? !!str "a"
  : !!seq [
      !!str "b",
      !!str "c"
    ]
}

Но я имел в виду:

!!map {
  ? !!str "a"
  : !!null ""
}
!!seq [
  !!str "b",
  !!str "c"
]

В спецификации сказано:

Используемые символы «-», «?» И «:» для обозначения записей коллекции блоков воспринимается людьми как часть отступы. Это обрабатывается на в каждом конкретном случае соответствующими производства.

Значит, обе интерпретации допустимы? Если нет, можете ли вы указать раздел в спецификации, который препятствует этому?

В зависимости от "индивидуального подхода соответствующих производств"? Что такое "соответствующие производства"?

Ответы [ 2 ]

1 голос
/ 22 июля 2011

Ваш пример не анализируется PyYAML 3.11.

* ** 1003 тысяча два *http://yaml -online-parser.appspot.com /? YAML = а% 3A% 0A-б% 0A-с & тип = * 1005 JSON *

Попробуйте это:

a:
- b
- c

http://yaml -online-parser.appspot.com /? YAML = а% 3A% 0a- + Ь% 0a- + с & тип = * JSON +1013 *

0 голосов
/ 27 октября 2010

Попробуйте это:

- a: 
- b
- c
%YAML 1.1
---
!!seq [
    !!map {
        ? !!str "a"
        : !!null "null",
    },
    !!str "b",
    !!str "c",
]
...

...