Size: a a a

2020 March 02

VV

V V in pro.lua
Я говорю наоборот, о рассечении исходного текста на тепересекающиеся буферы
источник

VV

V V in pro.lua
*непересекающиеся
источник

VV

V V in pro.lua
Snusmumriken
Так, хорошо, а как нам тогда разбить на непересекающееся множество?
Исходные условия какими возьмём? От этого будет зависеть, понадобится ли нам буфер
источник

VV

V V in pro.lua
Я о размере исходного текста
источник

VV

V V in pro.lua
Размере блока
источник

VV

V V in pro.lua
Иерархии блоков типа дерева
источник

S

Snusmumriken in pro.lua
Вот тут появляется большая-большая проблема, что мы с вероятностью близкой к ста процентам не распилим наш исходный текст на целые блоки. В распилке будут куски блоков:
"<tag long-long content/><tag long-long content/>"

1. "<tag long-long"
2. " content/><tag"
3. " long-long con"
4.  "tent/>"
Это проблематично парсить : )
источник

VV

V V in pro.lua
Нам достаточно, чтобы внутри одного "распил" гарантированно встретился хотя бы один ьлок
источник

S

Snusmumriken in pro.lua
И мы его обработаем. А что делать с кусками по бокам? Приклеивать к соседям?
источник

VV

V V in pro.lua
Т.е. Если мы можем взять размер входного куска больше 1.5 блока - задача в лоб решается
источник

VV

V V in pro.lua
5-7 минут, вернуст
источник

S

Snusmumriken in pro.lua
Я когда-то чот делал такое, причём ровно на полтора размера блока, уже не помню зачем. Правда, блок обычно недетерминирован и порой весит гиги : )
источник

VV

V V in pro.lua
Snusmumriken
Я когда-то чот делал такое, причём ровно на полтора размера блока, уже не помню зачем. Правда, блок обычно недетерминирован и порой весит гиги : )
В этом и вопрос - если размер блока гиги, то в лоб не получится, нужен будет обходной путь
источник

S

Snusmumriken in pro.lua
Но таки чаво делать с обрезками?
Допустим мы выдрали "<tag long-long content/><tag lon" и даже вытащили блок. Его хвост нужно приклеить к следующему элементу множества?
источник

VV

V V in pro.lua
Snusmumriken
И мы его обработаем. А что делать с кусками по бокам? Приклеивать к соседям?
Спускаемся на уровень вложенности ниже, и идём по двум цепочка - одна собирается из обрезков "начал" с предыдущим блоком, а вторая - с обрезков "хвостов" с последующим.
источник

VV

V V in pro.lua
Snusmumriken
Но таки чаво делать с обрезками?
Допустим мы выдрали "<tag long-long content/><tag lon" и даже вытащили блок. Его хвост нужно приклеить к следующему элементу множества?
Точно
источник

S

Snusmumriken in pro.lua
Так, а что тут по вложенности? У нас условные плоские списки. Деревья не нужны, а если нужны — извлечённый блок просто распарсится отдельно.
источник

VV

V V in pro.lua
Snusmumriken
Так, а что тут по вложенности? У нас условные плоские списки. Деревья не нужны, а если нужны — извлечённый блок просто распарсится отдельно.
Вложеность циклов поиска. Т. Е. Ты следующий блок ищешь только там, где точно нет предыдущего
источник

VV

V V in pro.lua
Поэтому и ограничение - чтобы шаблоны поиска не входили в состав друг друга
источник

S

Snusmumriken in pro.lua
А чем это принципиально отличается от поиска с буфером, который я показал в виде кода? Плюс там нет ограничений.
источник