में पार्सिंग फ़ंक्शन मैं हास्केल के लिए नया हूं और मैं अभिव्यक्तियों का विश्लेषण करने की कोशिश कर रहा हूं। मुझे पारसेक के बारे में पता चला और मुझे कुछ लेख भी मिले लेकिन मुझे समझ में नहीं आता कि मुझे क्या करना है। मेरी समस्या यह है कि मैं "x^2 + 2 * x + 3" जैसी अभिव्यक्ति देना चाहता हूं और परिणाम एक ऐसा फ़ंक्शन होता है जो तर्क x लेता है और एक मान देता है। मुझे बहुत खेद है अगर यह एक आसान सवाल है लेकिन मुझे वास्तव में कुछ मदद की ज़रूरत है। धन्यवाद! मैंने जो कोड डाला है वह आलेख से है जिसे आप this link पर पा सकते हैं।हैकेल
import Control.Monad(liftM)
import Text.ParserCombinators.Parsec
import Text.ParserCombinators.Parsec.Expr
import Text.ParserCombinators.Parsec.Token
import Text.ParserCombinators.Parsec.Language
data Expr = Num Int | Var String | Add Expr Expr
| Sub Expr Expr | Mul Expr Expr | Div Expr Expr
| Pow Expr Expr
deriving Show
expr :: Parser Expr
expr = buildExpressionParser table factor
<?> "expression"
table = [[op "^" Pow AssocRight],
[op "*" Mul AssocLeft, op "/" Div AssocLeft],
[op "+" Add AssocLeft, op "-" Sub AssocLeft]]
where
op s f assoc
= Infix (do{ string s; return f}) assoc
factor = do{ char '('
; x <- expr
; char ')'
; return x}
<|> number
<|> variable
<?> "simple expression"
number :: Parser Expr
number = do{ ds<- many1 digit
; return (Num (read ds))}
<?> "number"
variable :: Parser Expr
variable = do{ ds<- many1 letter
; return (Var ds)}
<?> "variable"
मेरे पास कुछ लेख हैं जो मुझे कुछ लेखों में मिला है लेकिन यह पोस्ट करना ठीक है, भले ही यह मेरा नहीं है? – izayoi
कृपया इसे पोस्ट करें क्योंकि अन्य इसे भी उपयोगी पा सकते हैं। मूल स्रोत के लिए एक लिंक शामिल करना सुनिश्चित करें। –