New structural generator [WIP]#1345
Conversation
|
Это лучше не мёрджить, чтобы история в коммитах была почище. Но обсуждать можно. |
|
Мне кажется стоит обсудить способ "факторизации". А может быть так. Условия не превращаются в страшные temp и читаются легче. Но сама переменная selector вроде неочевидна (значений, конечно, может быть больше одного). Поэтому можно преобразовать как-то так. Или пойти ещё дальше и придумать хороших способ генерить имена по содержанию. Тут, хотя бы, __next_is_vlevo_1; |
|
Второй вариант имхо сильно лучше первого, последний конечно читается лучше, но есть чувство, что при хоть немного более сложной схеме по итогу там будет десяток __next_is subrogram_x (или текстовый аналог) и все совсем в кашу превратится из-за того, что придется писать иф-элзы и вот это вот все (тем более что есть чувство, что в таком варианте их надо будет все равно индексировать на случай глубоких деревьев, т.е. где нам надо сначала выйти на третью подпрограмму, а потом на первую). Так что вариант с селектром немного лучше (но у него тоже должна быть индексация, т.к. аналогично вышесказанному). |
|
Суть варианта с селектором в том, что доп переменная всего одна и только значения это уникальные числа. И вроде как в таких случаях не особо и понятно что за числа, а если делать next_is_, то становится читаемее. |
|
Хорошая идея выбирать для продолжения конкретный блок. Но лучше это сделать отдельно. Во-первых, лучше сначала получить что-то работающее, которое уже будет радовать людей. Во-вторых, есть схожая проблема в событийной схеме, например, в Lua для Пионера. Наверное, стоит погрузиться в ту проблему тоже, чтобы пытаться решать уже более общую задачу (если вдруг это та же задача). |
|
|
Да, я вот сейчас наконец до конца поняла логику с селектором и почему он действительно работает |
cd7a4ab to
ff6360f
Compare
dde4319 to
06af258
Compare
My concerns:
-- using string Ids in syntheticIfGenerator condition
-- new class StructurizerNode::CondtionTree itself
-- using ReadableLabelManager for more than one name type
-- DeepFirstSearcher used to visit some nodes more than once?!