[英]How to parse expression with implicit multiplication with Parsec in Haskell
[英]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.