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" ...""? ]