LINUX.ORG.RU

История изменений

Исправление den73, (текущая версия) :

В Яре такой был. Стек такой:

1. Путём форка интерпретатора sb-eval из sbcl был сделан интерпретатор CL, способный прерваться и вернуть состояние.

2. Многоверсионные данные. Смысл тот же, что и в СУБД с многоверсионностью (Oracle/Postgres), но хранимые объекты имитируют консы, структуры и массивы.

3. В сумме (1) и (2) дают основу.

4. «Полностью кешированный поток» - это погружение потока (stream) в функциональную парадигму. Такой поток можно клонировать в любой точке и это будет как бы закладка, к которой можно вернуться и начать заново. И он нормально сочетается с интерпретатором из первой части.

5. На основе этого написана библиотека создания парсеров методом рекурсивного спуска с дополнительными операциями «установить закладку» и «вернуться к закладке». Точно уже не помню.

Всё это использовалось некоторое время для IDE и для собственно транспилятора. Но было оно очень медленным и оказалось в итоге непригодным для этой задачи.

Исходная версия den73, :

В Яре такой был. Стек такой:

1. Путём форка интерпретатора sb-eval из sbcl был сделан интерпретатор CL, способный прерваться и вернуть состояние.

2. Многоверсионные данные. Смысл тот же, что и в СУБД с многоверсионностью (Oracle/Postgres), но хранимые объекты имитируют консы, структуры и массивы.

3. В сумме (1) и (2) дают основу.

4. «Полностью кешированный поток» - это погружение потока (stream) в функциональную парадигму. Такой поток можно клонировать в любой точке и это будет как бы закладка, к которой можно вернуться и начать заново. И он нормально сочетается с интерпретатором из первой части.

5. На основе этого написана библиотека создания парсеров методом рекурсивного спуска.

Всё это использовалось некоторое время для IDE и для собственно транспилятора. Но было оно очень медленным и оказалось в итоге непригодным для этой задачи.