Сдается мне, что во многих случаях, где этого можно бы было избежать в предложении vvk000, придется дробить отрезки между перекрестками на отдельные части, иначе иногда невозможно будет разобраться относится ли описание полос к началу отрезка или к его концу. И, если в случае изменения числа полос перед перекрестком такое дробление оправдано, то в случае, если их число не меняется, еще одна излишняя операция.
У vvk000 это реализовывалось с помощью begin/end. Сейчас оценить это сложно, возможно, издержки и не большие. Покажет практика.
Каждый, кто более-менее свободно владеет английским. К сожалению, рядовая советская школа и советский ВУЗ таких навыков не давали. Мы, видно, хотели, чтоб они все читали по-русски, ан-нет, они не захотели. Наш язык для них слишком богат и ясно выразить мысль на нем не получается. Имеено поэтому у них no smoking, а у нас - курение запрещено, курение строго запрещено, курение категорически запрещено и т.д. и т.п. и пр. др. Кстати, видимо, именно в силу бедности их языка они и законы по 200 лет не меняют, а принятые вчера не переписывают на следующий день, потому, что, как оказалось, сказали не то, что хотели. И никак у них не получается по одной и той же статье за пару миллиардов дать два года условно, а за мешок картошки впаять семь лет. Да здравствует великий и могучий во веки веков.
(Это были сетования по поводу собственной необразованности, сори).
Т.о., попытка постичь ангельские буквы привела к такому алгоритму:
**lanes [[[ | [:type]] ] [:direction]] = ***, где
*lanes = number
maneuver<through | turnright | turnleft | turnback> = number
type<merge | psv | bus | hgv> = number
location = right | left | sides | number
direction<forward | backward> = **
Звездочка в данном случае означает любое допустимое значение для используемых тегов, а number - количество полос соотвествующего типа. Верно?
И все равно, хоть убейте, но описание
lanes:forward:bus:location = right
мне нравится больше, чем
lanes:bus:location:forward = right
Первое более лигично, ибо использует общепринятый принцип описания составного объекта: “от общего - к частному”. Т.е. составляющие объекты описываются по принципу все более подробного уточнения их свойств (характеристик). Да и логика хромает, хоть с точки зрения синтаксиса разговорного языка, хоть с позиции программирования. Вот что локейшн может быть справа, это я понимаю, а вот что форвард, это еще осмыслить надо.
Проверил здесь. Тег lanes:psv на картах России (эвропейская часть), Украины и Белоруссии вместе взятых применен всего 1 (!!!) раз, еще 34 раза применен тег lanes:bus. Так что это не революция и не бунт.