Expr ← Path Type XPath? Path ← "/" Type ← WildCard / "node" / "way" / "relation" XPath ← Bbox (Tag Child?)? / Bbox Child Tag? / Tag (Bbox Child?)? / Tag Child Bbox? / Child (Tag Bbox?)? / Child Bbox Tag? Bbox ← LeftBracket BboxPredicate RightBracket Tag ← LeftBracket TagPredicate RightBracket Child ← LeftBracket ChildPredicate RightBracket BboxPredicate ← [bB] [bB] [oO] [xX] Equals Left Komma Bottom Komma Right Komma Top Left ← Coordinate Bottom ← Coordinate Right ← Coordinate Top ← Coordinate Coordinate ← Sign? Double / Sign? Integer TagPredicate ← Keys Equals Vals Keys ← Key (Pipe Key)* Key ← Chars Vals ← WildCard / Val Val ← Chars Pipe Keys / Chars Chars ← Char (Char)* SpecialChar ← Escape Special Special ← Equals / LeftBracket / RightBracket / LeftParent / RightParent / Pipe / Backslash Space ← [ U+0020 ] Equals ← [ U+003D ] Escape ← [ U+005C ] LeftBracket ← [ U+005B ] RightBracket ← [ U+005D ] LeftParent ← [ U+0028 ] RightParent ← [ U+0029 ] Backslash ← [ U+005C ] Pipe ← [ U+007C ] Char ← SpecialChar / [U+0021-U+0027] / [U+002B-U+003C] / [U+003E-U+005A] / [U+005C] / [U+005E-U+007B] / [U+007D-U+FFFF] ChildPredicate ← "nd" / "not(nd)" / "tag" / "not(tag)" / "not(tag)" / "way" / "not(way)" / "node" / "not(node)" / "relation" / "not(relation)" Integer ← "0" / Sign? [1-9] [0-9]* Double ← Integer "." [0-9]* Sign ← "+" / "-" Empty ← "" Dot ← "." Komma ← "," WildCard ← "*" CR ← [U+0013] LF ← [U+000A]