0 w = {[.w? "#" ..."\n"?] .w!}
1 package = ["[package]" ?w .l({
    ["name" ?w "=" ?w .t!:"name" ?w]
    ["version" ?w "=" ?w .t!:"version" ?w]
    [!"#" .."="? ?w "=" ?w ..."\n"? ?w]
})]
2 dependency = ["[dependencies." .."]"!:"name" "]" ?w .l({
    ["version" ?w "=" ?w .t!:"version" ?w]
    [!"#" .."="? ?w "=" ?w ..."\n"? ?w]
})]
3 dev_dependency = ["[dev-dependencies." .."]"!:"name" "]" ?w .l({
    ["version" ?w "=" ?w .t!:"version" ?w]
    [!"#" .."="? ?w "=" ?w ..."\n"? ?w]
})]
4 dependency_list_item = [!"#" .."="!:"name" ?w "=" ?w {
  ["{" ?w .s?.([.w? "," .w?] {
    ["version" ?w "=" ?w .t!:"version"]
    [...",}"!]
  }) ?w "}"]
  .t!:"version"
} ?w]
5 dependency_list = ["[dependencies]" ?w .l({
    dependency_list_item:"dependency"
})]
6 dev_dependency_list = ["[dev-dependencies]" ?w .l({
    dependency_list_item:"dev_dependency"
})]
7 dependencies = [.l({
    dependency:"dependency"
    dependency_list
    dev_dependency:"dev_dependency"
    dev_dependency_list
    ..."\n"?
})]
9 package_node = [package ?w dependencies]
10 document = [
    .r?({w [!"[package]" ..."\n"? .w!]})
    package_node:"package"
    ...""?
]
