170 похожих чатов

А слабо парсер произвольного жисона без использования рекурсивных функций закодить?

6 ответов

12 просмотров

а слабо v8 переписать? там в 19942 строке есть неоптимальный код!

Эт ж делается на стеках, нет?

Aleksandr-Vyatkin Автор вопроса
Егор' OR (1=1) --
Эт ж делается на стеках, нет?

ммм, не представляю, как на стеках обойти дерево произвольное, без рекурсии

Aleksandr Vyatkin
ммм, не представляю, как на стеках обойти дерево п...

Возможно, у меня что-то из головы вылетело, но задача очень хорошо пересекается с задачей о вложенных скобках. У тебя есть изначальный пустой стек a = []. Вершина стека — текущий (под)объект, внутри которого ты ведёшь запись. Потом ты проходишься по токенам в строке. Вход в словарь 0-го уровня выносим в отдельное пограничное условие. Имеем стек [ x = Object () ] Дальше мы идём и видим ключи и значения. Эдак «"key": smth,» Допустим smth это словарь, начинается с {. Тогда внутри элемента на вершине нашего стека добавляет этот ключ и входим в него, добавляя получившийся на вершину стека Имеем x.key = {} Стек [ x, x.key ] Дальше всё внутри этого словаря, до тех пор, пока не найдём соответствующую закрывающую скобку, добавляем в x.key

Похожие вопросы

Обсуждают сегодня

кому не сложно распишите пожалуйста для какой цели тут вот эти скобки и в них пихается указатель?
Михаил Helper
15
Комрады, посоветуйте, куда копать? Стал прикручивать кастомизацию тем. В OnShow главной главной формы пытаюсь загрузить из файла настроек и применить тему (на скрине, как долж...
Ed Doc
13
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Такс, блин, таки кто-то знает, каким образом работают макросы stdin/stdout/stderr? Я влез в stdio.h, там определения нет, отладил через асмокод - вызывается функция со странны...
The Bird of Hermes
18
OnShow один раз вызывается? или возможен Hide?
Iluha Companets
14
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Если у меня есть такой класс: Object = {} function Object:new(a_name, a_transform, a_color, a_mesh, a_material, a_shader, a_textures) local private = {} private.n...
Cuarno Vile
4
Всем привет, на линуксе лучше на fasm или nasm учиться писать для начала ?
meszjol
14
@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
зачем же переименовывать ? чтобы кол-во участников возросло или вдруг IBM от этого снова на свифте начнет кодить ? Я не понимаю что страшного в том что свифт гавно, если это т...
Oleh Nerzh
10
Карта сайта