例として住所はあんまりよくなかったですね。
CSVを実現しようとしてるわけではなくて、
地球(
 日本(北海道(), 東京() ...),
 アメリカ(ニューヨーク(), ハワイ(), ...)
 ...
)
こういった風に書くとして、一番短くなる書き方の例をあげたのだけど。
これは、
住所 : 国
星 : name "(" {国 *} ")"
国 : name "(" {(都|道|府|県|州)*} ")"
都 : name "(" {区 *} ")"
...
といったような、定義が出来ますよね。
また、日本の県と中国の県は違うとか問題ありそうなのでよくない例だけど。
別に私は型だろうが、値だろうが名前は名前として扱うだけでいいと思うのだけど。
フラットにしたら
住所録(
 住所(地球,日本,北海道...),
 住所(地球,日本,東京...),
 住所(地球,アメリカ,ニューヨーク...),
 住所(地球,アメリカ,ハワイ...),
 ...
)
とも書けるだろうけど。