2013-10-14 106 views
0

爲了模擬過程的運行時語義,已知通常需要堆棧。 1.如果語言不允許過程遞歸,我們是否必須有堆棧? 2.如果語言確實允許過程遞歸,但遞歸調用只能在過程結束時發生,那麼我們是否必須有堆棧?過程遞歸和堆棧

回答

0
  1. 不。但是,如果語言是圖靈完成,你可以模擬一個,如果你想。例如。 Brainf ** k沒有堆棧,我已經制作了一個支持程序和宏的LISP1 interpreter

  2. 這取決於。傳統上你需要一種方法來擁有多個嵌套參數,這是一個定義的堆棧。如果你的程序沒有任何參數,只能在代碼的最後調用其他的東西,就好像程序的價值不如goto。但是,如果你的意思是尾巴而不是結尾,那麼它就像沒有參數的goto一樣好。