parsec

    6熱度

    1回答

    我想使用Parsec的makeTokenParser來構建我的解析器,但我想使用我自己的定義whiteSpace。以下步驟用我的定義替換whiteSpace,但所有lexeme解析器仍使用舊定義(例如P.identifier lexer將使用舊的whiteSpace)。 ... lexer :: P.TokenParser() lexer = l { P.whiteSpace = myWhi

    6熱度

    1回答

    什麼是秒差距,提高錯誤(ParseError)的首選方式是什麼?我得到了執行檢查,如果檢查失敗,ParseError應返回一個分析器內的一些代碼(即Left ParseError運行parse時)。

    3熱度

    4回答

    我想要做的事似乎很簡單,但由於我是一個parsec Haskell newb,解決方案正在逃避我。 我有兩個解析器,讓我們說foo1和foo2其中foo1可以解析intermedate項和foo2解析結束任期。術語用符號分隔,"."。 的句子,我需要解析的 foo2 foo1.foo2 foo1.foo1.foo2 等。 我最初的想法是做 do k <- sepBy foo1 (char'.')

    1熱度

    1回答

    我使用Text.ParserCombinators.Parsec和Text.XHtml解析輸入並獲取HTML輸出。 如果我輸入的是: * First item, First level ** First item, Second level ** Second item, Second level * Second item, First level

    3熱度

    3回答

    我想解析F#類型的語法。我開始寫一個[F]秒差距語法,遇到了問題,所以我簡化the grammar到這一點: type ::= identifier | type -> type identifier ::= [A-Za-z0-9.`]+ 運行與FParsec問題之後,我切換到秒差距,因爲我有一個full chapter of a book dedicated to explaining i

    22熱度

    2回答

    我讀過Haskell解析器組合器(在Parsec中)可以解析上下文敏感的語法。對於Scala解析器組合器,這也是如此嗎?如果是這樣,這是「入」(又名「>>」)功能是什麼? Scala的解析器組合器的實現與Haskell的實現有什麼長處/短處?他們接受同一類語法嗎?更容易產生錯誤信息或用其他方法做其他雜項有用的事情? packrat解析(在Scala 2.8中引入)如何適合這張圖片? 是否有網頁或其

    8熱度

    4回答

    我有一個列表,我需要解析除了最後一個元素以外的所有元素都需要被一個解析器解析,而最後一個元素需要被另一個解析器解析。 a = "p1 p1b ... p2" or a = "p2" 本來我想 parser = do parse1 <- many parser1 parse2 <- parser2 return AParse parse1 parse2 的問題

    3熱度

    1回答

    parsec-3.1.0(http://hackage.haskell.org/package/parsec-3.1.0) 適用於任何標記類型。然而,像Text.Parsec.Char.satisfy這樣的組合器只能爲Char數據類型定義。似乎沒有更多的普通對象可用。 我應該定義自己的版本還是錯過了某些東西? 也許還有在Haskell不同的解析器庫,允許: 定製令牌類型 定製解析器的狀態(我需要解

    11熱度

    6回答

    我最近在Python中使用Ply編寫了一個解析器(這是yacc的python重新實現)。當我幾乎完成解析器時,我發現我需要解析的語法需要我在解析過程中查看一些信息以通知詞法分析器。如果不查看通知詞法分析器,我無法正確解析語言中的字符串。 鑑於我能從語法規則中控制詞法分析器的狀態,我想我會在解析器模塊中使用查找表來解決我的使用案例,但維護/測試可能會變得非常困難。所以我想知道其他一些選擇。 在Has

    3熱度

    1回答

    工程從2.x中,代碼中使用many1更新到3.1秒差距後,如word = many1 letter失敗 No instance for (Stream s m Char) arising from a use of `letter' 我發現了一個郵件列表後,聲稱將{-#LANGUAGE NoMonomorphismRestriction #-}到源文件的頂部將解決該問題,但它沒有。