blob: dbde5e7dad2c849a18d350a0ebf86eab84dcf826 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
file <- {| (place / ws? comment? %nl)* |} {.+}?
place <- {|
{:name: {word (ws word)*} :}
ws? ("(" ws? {:tags: {| {tag} (ws? "," ws? {tag})* ws? |} :} ")")? ws? ":"
({:times: {|
((ws? comment? %nl)+ (%tab / " "^+2) ws? {| 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"} :}
/ ("noon" {:hour: {~''->'12'~} :} {:ampm: {~''->'pm'~} :})
/ ("midnight" {:hour: {~''->'12'~} :} {:ampm: {~''->'am'~} :})
|}
tag <- word (" "+ word)*
word <- [^%nl%tab (),:#0-9-]+
ws <- [ %tab]+
|