Привет всем. В настоящее время я внедряю простой язык программирования для обучения, но мне нужен совет. В настоящее время я разрабатываю свой интерпретатор, и у меня возникла проблема.
Мой язык является подмножеством C, и у меня проблема с реализацией интерпретатора стека. На языке будет скомпилировано следующее:
somefunc ()
{
1 + 2;
}
main ()
{
somefunc ();
}
Теперь все в порядке, но когда вычисляется «1 + 2», результат помещается в стек, а затем функция возвращается, но в стеке все еще есть число, которого не должно быть. Как я могу обойти эту проблему?
Я думал о сохранении «состояния» стека перед вызовом функции и восстановлении «состояния» после вызова функции. Например, сохранение количества элементов в стеке, затем выполнение кода функции, возврат, а затем извлечение из стека, пока у нас не будет такое же количество элементов, как и раньше (или, может быть, +1, если функция что-то вернула).
Есть идеи? Спасибо за любые советы!