[問題] 在自製語言中,如何表示函數和物件已刪文

看板Programming作者 (Neisseria)時間7年前 (2017/04/24 16:31), 7年前編輯推噓4(4020)
留言24則, 2人參與, 最新討論串1/3 (看更多)
小弟先前沒事寫一個計算機 目前寫了 lexer, parser, interpreter 有自製的 AST (abstract syntax tree) 為了練功,這些功能沒依賴 yacc 或其他外部套件 有以下功能: - 可處理整數和浮點數 - 有變數的概念,可 chained assignemnt - 簡易代數運算,像 (123 + 45)**(5 % 3) - 常見數學公式,像指對數、三角函數等 (直接 call host language 的相關功能) 卡在函數 (function) 和物件 (class) 不知道如何表示 希望板上各位大大提示一些方向 目前先以 interpreter 為目標 因 compiler 還牽涉到轉機械碼的過程 目前對小弟來說太硬了 先在這裡謝過各位大大 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 175.182.114.180 ※ 文章網址: https://www.ptt.cc/bbs/Programming/M.1493022666.A.175.html

04/24 18:03, , 1F
函數怎麼實現要看你的語言想用什麼paradi
04/24 18:03, 1F

04/24 18:03, , 2F
gm
04/24 18:03, 2F
先基本的吧 可以傳數字進去 會回傳結果 我個人喜歡 higher-order function 但不急著寫這種的 先會走再來跑

04/24 18:03, , 3F
如要用lambda那一套就照著他的規約來做就
04/24 18:03, 3F

04/24 18:03, , 4F
好啦
04/24 18:03, 4F

04/24 18:03, , 5F
class可以看成是邏輯的Λ,你傳進來的東
04/24 18:03, 5F

04/24 18:04, , 6F
西必須要有x而"且"要有y而"且"要有z之類
04/24 18:04, 6F

04/24 18:04, , 7F
的…
04/24 18:04, 7F

04/24 18:04, , 8F
x、y、z就是那個class的member
04/24 18:04, 8F
說實在這段看不太懂 QQ

04/24 18:04, , 9F
我的推文…QQ…
04/24 18:04, 9F
※ 編輯: Neisseria (175.182.114.180), 04/24/2017 19:20:08

04/24 21:14, , 10F
目前能宣告變數嗎?
04/24 21:14, 10F

04/24 21:22, , 11F
我猜你是要做一個軟體,這套軟體可直接執
04/24 21:22, 11F

04/24 21:22, , 12F
行文字檔中的程式碼?
04/24 21:22, 12F
這個是寫好玩的,單純練功 參考 bc(1) 做的,目前只做數字運算

04/24 21:37, , 13F
意思是class其實不過是讓幾個變數一起行
04/24 21:37, 13F

04/24 21:37, , 14F
動而已
04/24 21:37, 14F

04/24 21:37, , 15F
可能是我不懂你的問題,你是在煩惱要怎
04/24 21:37, 15F

04/24 21:37, , 16F
麼用某種統一的方法來儲存使用者定義的 c
04/24 21:37, 16F

04/24 21:37, , 17F
lass 這樣?
04/24 21:37, 17F

04/24 21:37, , 18F
還是?
04/24 21:37, 18F
我是想知道一個一般性的存函數和物件的策略 樓下有大大回文了,閱讀中

04/24 21:37, , 19F
函數可以先做單參數的,只要type對得上就
04/24 21:37, 19F

04/24 21:37, , 20F
可以丟進函數,要是函數尾對得上另一個
04/24 21:37, 20F

04/24 21:37, , 21F
函數頭,兩個函數就可以合併
04/24 21:37, 21F

04/24 21:37, , 22F
多參數可以先用class包起來當作一個參數
04/24 21:37, 22F

04/24 21:37, , 23F
來模擬
04/24 21:37, 23F
有喔,感謝大大提示

04/24 21:38, , 24F
為什麼現在推文都會變成這樣啊…很煩……
04/24 21:38, 24F
大大可能要檢查一下你的電腦 ※ 編輯: Neisseria (175.182.114.180), 04/24/2017 22:47:37
文章代碼(AID): #1O_RVA5r (Programming)
文章代碼(AID): #1O_RVA5r (Programming)