YAML (YAML Ain't Markup Language)ã¨ã¯ã€ã‚ªãƒ–ジェクトを文å—列ã§è¡¨ç¾ã™ã‚‹å½¢å¼ã®ä¸€ã¤ã§ã™ã€‚
YAMLã®ã‚µãƒ–セットã§è¡¨ã•ã‚ŒãŸã‚ªãƒ–ジェクトã¨ã€ãƒ—ãƒãƒ‘ティを指定ã™ã‚‹ã‚¯ã‚¨ãƒªãŒä¸Žãˆã‚‰ã‚Œã‚‹ã®ã§ã€æŒ‡å®šã•ã‚ŒãŸãƒ—ãƒãƒ‘ティã®å€¤ã‚’ç”ãˆã¦ãã ã•ã„。
YAML ã®ã‚µãƒ–セットã¯ã€æ¬¡ã®ã‚ˆã†ãªæ‹¡å¼µ BNF 記法ã§è¡¨ã•ã‚Œã‚‹æ§‹æ–‡è¦å‰‡ã«å¾“ã„ã¾ã™ã€‚
yaml: mapping(0) mapping(n): mapping-item(n) | mapping-item(n) mapping(n) mapping-item(n): indent(n) key ':' ' ' string '\n' | indent(n) key ':' '\n' mapping(m) (ãŸã ã—m>n) key: [a-z0-9]+ (※英å—å°æ–‡å—ã¾ãŸã¯æ•°å—ã‹ã‚‰ãªã‚‹1æ–‡å—以上ã®æ–‡å—列) string: [a-z0-9 ]+ (※英å—å°æ–‡å—ã¾ãŸã¯æ•°å—ã¾ãŸã¯ã‚¹ãƒšãƒ¼ã‚¹ã‹ã‚‰ãªã‚‹1æ–‡å—以上ã®æ–‡å—列) indent(0): "" (※空文å—列) indent(n+1): ' ' indent(n) (※スペースをn+1個並ã¹ãŸæ–‡å—列)
'\n'ã¯æ”¹è¡Œæ–‡å—を表ã—ã¾ã™ã€‚
mapping(n) ã¯ã‚ªãƒ–ジェクトを表ã—ã€mapping(n) ã«å«ã¾ã‚Œã‚‹ mapping-item(n) ã¯ã€ã‚ªãƒ–ジェクトã«å«ã¾ã‚Œã‚‹ãƒ—ãƒãƒ‘ティを表ã—ã¾ã™ã€‚
mapping-item(n): indent(n) key ':' ' ' string '\n'
ã¯ã€ key ã§è¡¨ã•ã‚Œã‚‹ãƒ—ãƒãƒ‘ティã®å€¤ãŒstringã§è¡¨ã•ã‚Œã‚‹æ–‡å—列ã§ã‚ã‚‹ã“ã¨ã‚’示ã—ã¾ã™ã€‚
mapping-item(n): indent(n) key ':' '\n' mapping(m)
ã¯ã€key ã§è¡¨ã•ã‚Œã‚‹ãƒ—ãƒãƒ‘ティã®å€¤ãŒmapping(m)ã§è¡¨ã•ã‚Œã‚‹ã‚ªãƒ–ジェクトã§ã‚ã‚‹ã“ã¨ã‚’示ã—ã¾ã™ã€‚
1ã¤ã®ã‚ªãƒ–ジェクトã«ã€2ã¤ä»¥ä¸Šã€åŒã˜ key ã‚’æŒã¤ãƒ—ãƒãƒ‘ティãŒå«ã¾ã‚Œã‚‹ã“ã¨ã¯ã‚ã‚Šã¾ã›ã‚“。
プãƒãƒ‘ティを指定ã™ã‚‹ã‚¯ã‚¨ãƒªã¯ã€
.key_1.key_2(..çœç•¥..).key_n
ã®ã‚ˆã†ã«ã€'.
'㨠key ãŒäº¤äº’ã«ç¾ã‚Œã‚‹å½¢ã§ä¸Žãˆã‚‰ã‚Œã€ã“ã‚Œã¯ã€Œ yaml ã§ä¸Žãˆã‚‰ã‚ŒãŸã‚ªãƒ–ジェクトã®ã€key1 ã¨ã„ㆠkey ã‚’æŒã¤ãƒ—ãƒãƒ‘ティã®å€¤ã§ã‚るオブジェクトã®ã€ key2 ã¨ã„ㆠkey ã‚’æŒã¤ãƒ—ãƒãƒ‘ティã®å€¤ã§ã‚るオブジェクトã®ã€(..çœç•¥..) keyn ã¨ã„ㆠkey ã‚’æŒã¤ãƒ—ãƒãƒ‘ティã€ã‚’表ã—ã¾ã™ã€‚
ãªãŠã€ã‚ã‚‹i(1 ≤ i ≤ n - 1)ã«ã¤ã„ã¦ã€.key_1.key_2.(..çœç•¥..).key_iã¾ã§ã§è¡¨ã•ã‚Œã‚‹ãƒ—ãƒãƒ‘ティã®å€¤ãŒã‚ªãƒ–ジェクトã§ãªã„ã€ã¾ãŸã¯ã‚ªãƒ–ジェクトã§ã‚ã‚‹ãŒkey_i+1ã¨ã„ã†ãƒ—ãƒãƒ‘ティをå«ã‚“ã§ã„ãªã„å ´åˆã€.key_1.key_2(..çœç•¥..).key_n ã§è¡¨ã•ã‚Œã‚‹ã‚ˆã†ãªãƒ—ãƒãƒ‘ティã¯å˜åœ¨ã—ãªã„ã¨ã¿ãªã—ã¾ã™ã€‚
.key_1.key_2(...).key_n
yaml
1 ≤ n ≤ 20
入力全体ã«å«ã¾ã‚Œã‚‹æ–‡å—æ•° ≤ 50,000
プãƒãƒ‘ティã®å€¤ã‚’ 1 è¡Œã§å‡ºåŠ›ã—ã¦ãã ã•ã„。
指定ã•ã‚ŒãŸãƒ—ãƒãƒ‘ティãŒå˜åœ¨ã—ãªã„å ´åˆã¯ no such property
, プãƒãƒ‘ティã®å€¤ãŒã‚ªãƒ–ジェクトã®å ´åˆã¯ object
, プãƒãƒ‘ティã®å€¤ãŒæ–‡å—列ã®å ´åˆã¯ string "<æ–‡å—列ã®å†…容>"
ã¨å‡ºåŠ›ã—ã¦ãã ã•ã„。
.tweets.1 name: shimeji id: shimejitan tweets: 1: shimejilove 2: azupero
string "shimejilove"
.a a: sample case
string "sample case"
.my.obj my: str: string value obj: a: a b: b c: c
object
.str.inner str: inner
no such property
.no.such.property object: prop1: str prop2: str
no such property