세 key 스타일, 값엔 한 규칙
Bare key
가장 기본이야. letters_and_underscores_only_123 처럼 쓰고, 쓸 수 있는 문자는 A-Z a-z 0-9 _ - 뿐이야. 스페이스도, 점도, 특수 문자도 못 써.
Quoted key
특수 문자나 스페이스가 들어가야 하면 큰따옴표나 작은따옴표로 감싸. "key with spaces" = "value" 이렇게. escape 규칙은 basic string 과 똑같아.
Dotted key
key 경로에 점을 찍으면 그게 곧 중첩이야. server.host = "localhost" 는 [server] 아래 host = "localhost" 를 쓴 것과 같아. 점으로 나뉜 조각 하나하나가 bare 든 quoted 든 자기 규칙을 따르면 돼서, servers."my-host".port = 8000 같은 것도 잘 먹어.
이름 당 key 하나
TOML 은 같은 층에 같은 이름이 두 번 나오는 걸 거부해. name = "a"\nname = "b" 는 그대로 파스 에러야. JSON 은 이 경우를 아예 정의 안 해뒀고 YAML 은 보통 뒤엣것을 취하는데, TOML 은 일부러 막았어. 헷갈릴 여지가 없는 config 가 이 포맷이 내세우는 강점이거든.
'dotted key vs table' 미묘함:
a.b = 1 과 [a]b = 1 은 파싱된 값은 같지만, 뒤에 나오는 [a] block 과 부딪힐 때 다르게 굴어. 요즘 TOML 은 둘을 섞어 쓰는 걸 허용하는데, a.b = 1 을 써놓고 나중에 [a] 를 다시 열면 'cannot redefine table' 에러가 나. 논리적인 섹션 하나당 한 스타일만 골라 써.