So verstehe ich es auch.
Das Konstrukt ist eher wie ein verkettetes if - then - else-
Den vorgestellten Operator gibt es in einigen Programmiersprachen, ist aber nicht unbedingt intuitiv verständlich.
Die erste Zeile wäre geklammert
switch (or highway=track (or highway=road (or highway=path highway=footway)) ...
mit if-orientiert also
if (highway=track or highway=road or highway=path or highway=footway) then
(if ( ...
...
else if (probablyGood) then 1.0 else 5.0) ...))
Die schließenden Klammern je nachdem wieviel öffnende Klammern man gesetzt hat (-> @Vinzenz_Mai ).
In den meisten Programmiersprachen hat man wegen der unübersichtlichen else-if-Struktur das eigentliche switch-Konstrukt, das auf etwas wie
switch (tracktype) {
1: if probablyGood then 1.0 else 1.3
2:
default: if probablyGood then 1.0 else 5.0
hinauslaufen würde.
Das nur zum (hoffentlich besseren) Verständnis.
Einen eigenen Parser zu bauen gehört ja nicht unbedingt zum Pflichtprogramm eines Router-Anbieters, das soll also keine Kritik an @abrensch sein.