parsec

    2熱度

    1回答

    我正在學習與Write yourself a scheme haskell。 我目前正試圖在計劃中實施char識別。字符是#\<character>或#\<character-name>,如#\a或#\或#\space。 所以我寫了下面的代碼: -- .. some code .. data LispVal = Atom String | List [LispVal]

    2熱度

    2回答

    問題,我有以下ADT: type Program = [Expr] data Expr = Num Int | Bool Bool | Binding String Expr deriving (Show) 這裏有一個變量綁定表達式形式lhs is rhs的,解析器。 binding :: Parser Expr binding = do

    3熱度

    1回答

    我試着爲lambda-calculus解釋器編寫解析器,該解釋器使用expression closures JavaScript 1.8的語法,這意味着function(x) x * x與function(x) { return x * x; }相同。 這是我的解析器代碼。 module Parser where import Text.Parsec import Text.Parsec.S

    2熱度

    1回答

    的BNF那場比賽的函數調用鏈(如x(y)(z)...): expr = term T T = (expr) T | EMPTY term = (expr) | VAR 它翻譯成秒差距的程序,看起來很棘手。 term :: Parser Term term = parens expr <|> var expr :: Parser Term expr = do

    4熱度

    2回答

    考慮下面的代碼: import Text.Parsec import Text.Parsec.Language import Text.Parsec.String import qualified Text.Parsec.Token as Token float :: Parser Double float = Token.float (Token.makeTokenParser em

    0熱度

    1回答

    我想用Haskell解析包含多個數據序列(列數相同,內容相同......)的文件。 我的數據序列將由關鍵字前後分隔。 BEGIN 1 882 2 809 3 435 4 197 5 229 6 425 ... END BEGIN 1 235 623 684 2 871 699 557 3 918 686 49 4 53 564 906 5 246 344 501 6

    2熱度

    1回答

    輸入意外結束我嘗試解析與關鍵詞之間的一系列數據下面的文本文件: many text many text many text BEGIN T LISTE2 1 154 2 321 3 519 4 520 5 529 6 426 END many text many text many text 通過下面的哈斯克爾程序 import Text.Parsec import

    3熱度

    1回答

    我明白Parsec模塊的parse功能,這需要一個規則的說法,錯誤信息,並輸入字符串: parse rule text = Parsec.parse rule "(source)" text 不過,我不明白的Parsec.Parsec含義,或者它是如何的不同。 Parsec.ParsecT。爲什麼自定義分析器的類型簽名使用這個名稱? 例如,在從this blogpost採取下面的代碼片段, m

    4熱度

    2回答

    我想從文件中解析Float值,使用逗號作爲小數點分隔符存儲它們。因此,我需要一個功能myParse :: String -> Float,例如,myParse "23,46" == 23.46。 我對如何做到這一點的一些想法,但他們似乎都過於複雜,例如: 與字符串中.更換,和使用read;或 關注this FP Complete blogpost (entitled Parsing Floats

    1熱度

    1回答

    有二郎相當於一個庫秒差距或attoparsec(書面哈斯克爾)?