Path Mapper (Сопоставитель Пути)
Выполняет лексические операции над деревьями данных. Лексические операции — это операции логического сопоставления между путями данных (data paths) и индексами (indices), определяемого текстовыми (лексуальными) масками (masks) и шаблонами (patterns). Например, Вы могли бы определить лексическое правило, как "Take the original path but ignore the last index" (Использовать оригинальный путь, но игнорировать последний индекс), используя английский язык. Это было бы очень читабельным для человека, но не для компьютера. Так как мы — умные, то справедливо, что именно мы можем адаптироваться. Валидные Маски Источника (Valid Source Masks) {A} {A;B}(i) {first;second}(index) Некорректные Маски Источника (Invalid Source Masks) {}(i) {A;}(i) {first;second}{i} Целевые Маски (Target Masks) {0} {i}(B) {10*first+second}(index)
Лексические же правила должны придерживаться очень специфических ограничений синтаксиса:
Кроме того, действительно ли Лексическую Маску (Lexical Mask) считают валидной, зависит от того, где она используется. Если маска используется для создания лексического шаблона (lexical pattern), (т. е. маски источника (source mask)), то Вам разрешается использовать метки-заполнители (placeholders) для пути и индексов элементов. Однако, если маска используется, чтобы видоизменить лексический шаблон, (то есть целевую маску (target mask)), тогда каждый элемент может быть записан в форме постоянного числа (constant number), метки-заполнителя или выражения (expression).
Ниже приведены все допустимые маски источника (source mask):
В вышеприведённой таблице "A", "B", "i", "first", "second" и "index" - все являются метками-заполнителями (placeholders). Метки-заполнители — это имена, определяемые при написании шаблона. Имена меток-заполнителей должны соответствовать тем же правилам, что и имена переменных (variable) в выражениях (expression) Grasshopper. Когда сегмент элемента опущен (как в первом примере), все элементы в соответствующих ветвях будут применены к результирующим.
Первая маска недействительна, потому что не определяет элементов пути, вторая маска некорректна потому, что, при наличии нестандартной точки с запятой и третьей маски, она использует фигурные скобки для сегмента элемента вместо круглой скобки.
Целевые Маски (Target Masks) являются более гибкими, так как они скорее оценочные, чем описательные. С учетом приведённых выше валидных Масок Источника (valid Source Masks), все эти Целевые Маски (Target Masks) тоже были бы корректными:
При использовании в логическом умножении, первая маска Источника и первая маска Цели соберут в дерево данных все ветви, которые имеют только единственный индекс и сгладят их в одну ветвь с путём {0}.
Вторые маски Источника и Цели комбинирует две операции, а именно, удаляет первую часть пути ("A", который не представлен в целевой маске и поэтому исчезает), и инвертирует индексы элементов и пути. Эти комбинация масок «переворачивает» матрицу данных вдоль диагонали.
Есть и другие дополнительные метки-заполнители маски цели, которые позволяют отслеживать ваш общий прогресс итерации дерева данных.
Метка-заполнитель "path_index" (индекс_пути) является целым числом, которое увеличивается для каждой новой загруженной цели дерева данных. Например, маска цели "{path_index}" (индекс_пути) упростила бы все ветви во всём дереве, сохраняя при этом все ветви раздельными.
Маска-заполнитель "path_count" (индекс_пути) представляет общее число ветвей в текущем дереве.
Маска-заполнитель "path_count" (индекс_пути) представляет общее число элементов в текущей ветви.