2015-02-10 19 views
1

我是sml和ml-lex的新手。爲了將字符串轉換爲實數,我們使用函數real.fromstring。這是我的轉換代碼,其中yytext是一個字符或字符串數​​組。發生在real.fromstring的sml語法中的錯誤

getOpt ((Real.fromString(yytext)), 0.0); 

我在ml-lex中使用上述語法來標記實數。

{real} => (REAL(getOpt ((Real.fromString(yytext)), 0.0))); 

,但我得到的錯誤,

math.lex.sml:5.234-5.240 Error: type constructor Assembly.option given 0 arguments, wants 1 

請告訴我什麼是錯的fromstring功能。

+0

我不認爲錯誤是指您顯示的代碼。在文件中搜索參數化類型名稱'option'的用法,其中一個似乎缺少它的參數。 – 2015-02-10 13:39:52

+0

@AndreasRossberg其實,沒有其他功能或選項類型的參數。當我從我的文件中刪除上述代碼時,該程序正常工作。所以,這似乎是針對這個特定的部分。 – 2015-02-10 13:46:24

+0

然後它可能是由MLlex生成的代碼的一部分。你看過嗎?該錯誤消息特別提到了類型構造函數的(錯誤)應用,並且您的代碼段中沒有任何內容。 – 2015-02-10 17:23:41

回答

-1

警告:我不熟悉ML-Lex

Real.fromString語法不正確。這是一個咖喱功能和來電到getOpt應改爲:

getOpt(Real.fromString yytext, 0.0) 

示例代碼:

- getOpt(Real.fromString "1.0", 0.0); 
val it = 1.0 : real 
- getOpt(Real.fromString "a", 0.0); 
val it = 0.0 : real 
+0

它有幫助。謝謝。 – 2015-02-13 18:10:31

+0

這個回覆沒有意義。只有一個參數的函數不能被調用。此外,'f x'和'f(x)'和'(f(x))'完全相同,只是冗餘的括號。這絕對不是問題。 – 2015-02-14 08:35:42