項目 >翻譯 | >
![]() |
|
|
編程語言翻譯 這是一個程序,自豪地做我的符號計算類的分配。 其中一個應用程序的符號計算是從一種語言翻譯到另一個。 這個程序的作用是什麼需要輸入,滿足輸入語法,輸出回使用輸出的語法。 在我們的情況下,輸入語法是“小Lisp的”文法,語法和輸出的一個子集的Haskell語法。 這樣的效果,這是一個程序,轉換成一個小Lisp程序Haskell程序。 它是如何工作的? 它的工作程序並沒有令牌的令牌翻譯。 這是因為“,”是翻譯成“,”在一個函數調用,但它被翻譯為“否則,如果”在條件表達式。 因此,一個標準的方法稱為“ 遞歸下降 ”字。 採樣輸入 /輸出 在翻譯 Haskell程序中,我們使用uncurry形式的函數調用。 由於要素的名單中輸入語法(小的Lisp)既可以是String和詮釋,我們介紹自定義的數據類型不變 ,並構造“樂善堂”,“數”和“三陽”,使所有列表名單是常數。 *粗體的是用戶輸入(在輸入語法符號)和那些與常規字體是程序的輸出(在哈斯克爾符號) 利弊[美國廣播公司()] 缺點(美國廣播公司(樂善堂[])) 利弊[“美國廣播公司";()] 缺點((三陽的“ABC”),(樂善堂[])) [缺點 [32;(2 )]-->"文“] 如果利弊((NUM個“32”),(樂善堂[(招“2 ")]))則(三陽”文森特“) [eqp [2,3] - >“富[1; 2]; endp [列表]-->"文森特”,否則 - “3] 如果eqp((NUM個“2”),(NUM個“3”)),那麼富((NUM個“1”),(NUM個“2”)) [缺點 [1;利弊[2;名單 ]]-->"文森特“;富” - > [一 - “乙; ç - >”ð]] 如果利弊((NUM個“1”),犯((NUM個“2”),列表)),那麼(三陽“文森特”) 編譯程序 這個翻譯計劃用Haskell寫。 我用格拉斯哥Haskell編譯器把它深入到一個可執行文件(在Windows中)。
|