file <- {| (place / ws? comment? %nl)* |} {.+}? place <- {| {:name: {word (ws word)*} :} ws? ("(" {:tags: {| {word} ("," ws? {word})* |} :} ")")? ":" ({:times: {| ((ws? comment? %nl)+ " " {| days ws? ("closed" / {:open: time :} "-" {:close: time :}) |})+ |} :}) |} comment <- "#" [^%nl]* days <- ({:from: {word} :} "-" {:to: {word} :} ":") /({:from: {word} :} ":") /({:from:''->'sun':} {:to:''->'sat':}) time <- {| {:hour: {[0-9]+} :} (":" {:minute: {[0-9]+} :})? {:ampm: { "am" / "pm"} :} |} word <- [^%nl (),:#0-9-]+ ws <- [ ]+