寫 Erlang 學 Forth

只是很單純想到 Forth compiler 怎麼寫的問題,感覺到 Erlang 很適合實現 Forth 的運作,於是開了一個案子: https://github.com/YauHsien/erl4th 。製作方式是把 Forth 當做子語言,在 Erlang 程式中跑。

Forth 的輸入是一串空白分隔的文字,因此基本上,輸入一串 Forth 程式,只要先用空格分開句子即可,而 Erlang string:tokens/2 可以做到句子分段的事。而這一段工作是 compiler 原理中的 lexer 。用 Erlang 分段之後,還要把每一個文字各別轉換為 atom 或數字。

再來, Forth 程式是後序式,也就是 compiler 原理中的語法樹與中介碼。

至於 compiler 原理的語法分析和語意檢查,我不知道是否要做。在執行 Forth 程式的時候,如果有參數不夠的情況,它自然會遇到錯誤而中斷執行。而執行用的 stack 要如何對應到輸入的 Forth 程式位置,尚未釐清。

另外,正在想著 Forth 的執行期是否有所謂 scope 可言。

廣告

About 黃耀賢 (Yau-Hsien Huang)

熱愛 Erlang ,並且有相關工作經驗。喜歡程式語言。喜歡邏輯。目前用 Python 工作。
本篇發表於 Programming 並標籤為 。將永久鏈結加入書籤。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s