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