Как превратить рекурсию в итерациюJavascript

Форум по Javascript
Ответить
Anonymous
 Как превратить рекурсию в итерацию

Сообщение Anonymous »

Я создаю библиотеку комбинаторов синтаксического анализатора, которая компилируется в императивный код.
Я понял, как скомпилировать хвостовую рекурсию, простую рекурсию и перекрестную рекурсию, но не могу понять, как скомпилировать l-рекурсию.
Предположим, у нас есть следующее уравнение:

Код: Выделить всё

const nums = lazy(() => alt(seq(nums, nums)), just("num"))
При моем нынешнем подходе я бы перешел к бесконечной рекурсии, и мой стек будет бесконечно расти. Я думаю, мне нужно как-то скомпилировать это в ленивый анализ, но я не уверен, как это сделать.
Я ожидаю, что ввод «1 2 3 4 5» будет разобран в [[[[1, 2], 3], 4], 5].

Подробнее здесь: https://stackoverflow.com/questions/798 ... -iteration
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»