parsec

    4熱度

    2回答

    我正在使用Parsec與自定義Stream類型。這個流本質上是String,但有時它會將它在字符串中找到的輸入擴展爲其他字符串(認爲別名擴展)。例如,給定「§4.1¶3」它可能將「Section 4.1 paragraph 3」提供給解析器。 我有這一切工作。我的類型是這樣的: data DealiasingStream = ... instance (Monad m) => Stream De

    1熱度

    1回答

    在下面的代碼,我可以每個令牌後使用正確解析空格秒差距: whitespace = skipMany (space <?> "") number :: Parser Integer number = result <?> "number" where result = do { ds <- many1 digit; whitespace; re

    0熱度

    1回答

    我需要從Parsec的整數函數中獲取一個Int類型。我此刻的代碼是 aTerm = parens aExpression <|> liftM GetV identifier <|> liftM N integer 其中N的類型是 N :: Num a => a -> Expr a 我越來越被 Shane.hs:227:18: Couldn't match ex

    6熱度

    1回答

    我想寫使用秒差距命題演算的分析器。解析器使用Text.Parsec.Expr中的buildExpressionParser函數。以下是定義邏輯運算符的代碼。 operators = [ [Prefix (string "~" >> return Negation)] , [binary "&" Conjunction] , [binary "|" Disjunction

    3熱度

    2回答

    我有這麼多: comment :: GenParser Char st() comment = (string "--" >> manyTill anyChar newline >> spaces >> return()) <|> (string "/*" >> manyTill anyChar (string "*/") >> spaces >> return()) e

    4熱度

    1回答

    我試圖在Haskell中實現組合邏輯,並且我想寫入語言的解析器。我無法通過Parsec解析器工作。基本的問題是我需要一種方法來確保解析器返回的對象輸入正確。有沒有人有關於如何做到這一點的創意? {-# Language GeneralizedNewtypeDeriving #-} import qualified Data.Map as Map import qualified Text.P

    1熱度

    1回答

    我正在解析一個相當大的文件,並且我想定期更新一個進度條以表明迄今爲止我已經解析了多少文件。 我能想到這樣做的最直接的方法是使用作爲一個單子轉換爲IO這樣我就可以解除印刷進步黨欄更新,並使用Handle作爲流供應商,所以我可以使用hFileSize檢查進度和hTell。 這意味着我需要一個實例Stream Handle IO Char。我不應該很難推出自己的(使用hGetChar),但我想我會看看是

    7熱度

    1回答

    我想爲Parsec分析器編寫測試。下面是解析器和數據結構的例子: data Event = Event { keyEvent :: String } deriving Show parseKey :: Parser Event parseKey = do char '<' k <- many1 (letter <|> digit <|> oneOf "_

    0熱度

    2回答

    在學習一個秒差距秒差距的規則,我發現有點繁瑣規則像 type PhonemeClassMap = Map Char String type ContextElement = Parser String phonemeContext :: Parsec String PhonemeClassMap ContextElement phonemeContext = do c <- lo

    5熱度

    3回答

    學習使用Parsec庫,作業的一部分。 編輯:歡迎使用其他庫的建議,重點是解析。 我想要的是從任何句子中提取大寫字母和四個指南針方向的所有單詞。例如:「比利時完全位於荷蘭南部。」應該找到並返回「比利時南荷蘭」。 我無法理解的是如何忽略(吃)任何不是指南針方向的輸入。 我希望找到沿 'many (not compassDirection >> space)' 但克(1H)oogle是沒有幫助我行