簡體   English   中英

如何解析 Haskell 中的浮點數 (Parsec.Combinator)

[英]How to Parse a floating number in Haskell (Parsec.Combinator)

我正在嘗試使用 Parsec.Combinator 庫解析 haskell 中的字符串。 但我找不到如何解析浮點值。 我的 function 只讀到 integer(帶數字,但數字只解析一個 integer 值)。

parsePoint :: Parser Point
parsePoint = do
              string "Point"
              x <- many1 digit
              char ','
              y <- many1 digit
              return $ (Point (read x) (read y))

我搜索了 Text.Parsec.Number 庫,但沒有找到如何使用的示例。

謝謝閱讀

有幾個Parser可以解析浮點數,例如floating:: (Floating f, Stream sm Char) => ParsecT sumf Parser只是Parsec特例的別名,具體取決於您使用的模塊。 例如, type Parser = Parsec Text ()

如果您的Point因此接受例如兩個Float s,您可以使用parsec3-numbers package並使用:

import Text.Parsec.Char(char, string)
import Text.Parsec.Number(floating)
import Text.Parsec.Text(Parser)

data Point = Point Float Float

parsePoint :: Parser Point
parsePoint = do
              string "Point "
              x <- floating
              char ','
              y <- floating
              return (Point x y)

然后可以解析,在本例中是一個字符串"Point 3.14,2.718"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM