parsec

    2熱度

    2回答

    我正在開發一個適合配置格式的GUI編輯器。基本上,編輯器將解析配置文件,顯示對象屬性,以便用戶可以從GUI進行編輯,然後將對象寫回文件。 我已經得到了解析 - 編輯 - 寫部分完成,除了: 解析的數據結構只包括對象屬性的信息,所以評論和空格被上寫 丟失,如果有任何語法錯誤,文件的其餘部分被跳過 你會如何解決這些問題?這個問題的常用方法是什麼?我正在使用Python和Parsec模塊https://

    -3熱度

    1回答

    同時學習教程秒差距,我試過fllowing命令 print (Parsec.parse (Parsec.many (Parsec.choice [Parsec.letter,Parsec.spaces ,(Parsec.char ','), Parsec.digit])) "" "hello1 , byebye2 ,") ,並在控制檯中的錯誤是 我不知道如何解決這個問題。這可以如何解決,任何想

    3熱度

    2回答

    我試圖解析,看起來像一個文件列表: a b c f e d 我想匹配每個符號的一行並解析一切都變成清單列表如: [[A, B, C], [D, E, F]] 爲了做到這一點我試過如下: import Control.Monad import Text.ParserCombinators.Parsec import Text.ParserCombinators.Parsec

    3熱度

    1回答

    我試圖用haskell中的Parsec解析Abap語言的一個片段。 Abap中的陳述是用點分隔的。函數定義的語法是: FORM <name> <arguments>. <statements>. ENDFORM. 我將使用它作爲最小示例。 這是我在編寫haskell和解析器中的對應類型時的嘗試。除了上面描述的函數定義之外,其他所有語句都可以使用該組件。 module Main wh

    0熱度

    1回答

    我是新來解析的世界,有一個非常簡單的,看似問題: 我有由Chunk正常的文字,並Key一個漫長的字符串編碼像<<key-label>>。 data Merge a = Chunk a | Key a deriving (Show) key :: Parser (Merge String) key = Key <$> between (string "<<") (str

    2熱度

    3回答

    我有很多字段的數據類型,如果不是由JSON配置文件手動指定,應隨機設置。我正在使用Aeson來解析配置文件。做這個的最好方式是什麼? 目前,我設置的值等於一些不可能的值,然後再檢查所述值進行編輯。 data Example = Example { a :: Int, b :: Int } default = Example 1 2 instance FromJSON Example where

    2熱度

    2回答

    我使用(濫用)解析器進行一些字符串轉換,例如normalizeWS :: Parser String刪除重複的空格,並且normalizeCase將特定字符串映射爲小寫。我使用分析器,因爲輸入數據有一些結構,例如文字字符串必須保持不變。有沒有一種優雅的方式來提供一個解析器的輸出作爲下一個輸入,從而形成一個轉換管道? normalizeWS . normalizeCase(這當然不起作用)的東西?

    7熱度

    1回答

    我想知道,如果Haskell中有一種標準的規範方式,不僅要爲特定的文件格式編寫解析器,而且還要編寫一個編寫器。 在我的情況下,我需要解析一個數據文件進行分析。但是,我也模擬要分析的數據並將其保存爲相同的文件格式。我現在可以使用Parsec或類似的東西編寫一個解析器,並編寫以需要的方式執行文本輸出的函數,但每當我更改文件格式時,我都必須更改我的代碼中的兩個函數。有沒有更好的方法來實現這個目標? 謝謝

    4熱度

    2回答

    給出以下類型和功能,這意味着到CSV字段的字段解析爲一個字符串: type Parser resultType = ParsecT String() Identity resultType cell :: Parser String 我有實現以下功能: customCell :: String -> Parser res -> Parser res customCell typeName

    3熱度

    2回答

    我想使用Parsec解析mediawiki文本。 mediawiki標記中的某些結構只能出現在行的開始處(例如標題標記==header level 2==)。在正則表達式中,我將使用錨點(例如^)來查找行的開始。在GHCI 的嘗試是 Prelude Text.Parsec> parse (char '\n' *> string "==" *> many1 letter <* string "=="