在我寫下我的問題之前,只是提供一些背景信息。我正在用Java編寫玩具編程語言,因爲我已經對編譯器/解釋器等感興趣。我已經掌握了這個小語言的基礎知識,它的沿線是:在解釋性編程語言中實現函數
ADD 5, 6 -> c
PRINT c
# will store 11 into c
這是非常基本的,但它是一個開始。因爲我只有16歲,所以我不能閱讀關於技術方面的書籍,他們對我來說非常沉悶/平淡,我喜歡閱讀互聯網上的文章,或者在HN上發佈的小教程(例如用C編寫計劃) 。總之,我真的很困惑如何在語言實現的功能,e.g
# only integers since that's easier than multiple data types
FUNC whatever(a, b) -> return a + b
# used like
PRINT whatever(5, 6)
我可以實現的功能將是真正破解-Y,變成麪條的一個混亂的爛攤子的唯一途徑。我想知道在編程語言中實現函數的「適當」方法。關於該語言的一些信息:我還沒有實現AST,因爲我還沒有學會它,我爲這種語言編寫了一個詞法分析器,分析器非常簡單,只是從上到下,從左到右分析(忘記了這個遞歸下降解析器的技術術語?)。
對不起,如果這是一個壞問題,模糊,類似的東西。之前從未發佈任何有關堆棧溢出的內容,而且我已經編寫了一些代碼來嘗試實現函數,但由於它沒有太好(這是幾天前),所以刪除了它,並且我問這個,因爲我想有一套完整的實施計劃,而且我相信它會起作用。
謝謝!
這是完美的,謝謝!是否有任何資源可以向我推薦我可以學習語言如何在堆棧級別上工作的資源? – dean 2014-11-07 12:21:45
這似乎是一個很好的起點:http://en.wikipedia.org/wiki/X86_calling_conventions – 2014-11-07 20:48:52
非常感謝! – dean 2014-11-07 23:14:26