我已經寫了這個簡單的解析器,從命令行[ps auxww | ./myparser]並分析ps命令的輸出,以便將其插入到我創建的流程數據結構中。 我成功地解析了結果字符串的一行,但現在我卡住試圖解析整個字符串並返回一個[進程]而不是一個進程。問題是如何實現parsePS。它必須多次調用myParser才能解析每一行並返回一個Process列表並將其打印到終端中。 有人可以幫我嗎?Haskell命令系統解析器
0
A
回答
1
我不確定你有什麼失敗,但我猜測間距正在殺死你。如果是這樣,我有兩個想法可能會有所幫助。
修改myParser
以消耗末尾的空格,並且many
組合符應該有效。
myParser = do
...
spaces
command <- pCommand
spaces -- CONSUME END OF LINE
return Entry{ ... }
然後many myParser
應該工作。
或者,您可以先分別將輸入分成幾行,然後分別調用parse。
argLines <- fmap lines getContents
(我想你的意思是通過getLine
的hGetContents
之前燒的第一行?)
0
這聽起來像你對我正在尋找一種方法來解析序列中的每一行並返回解析結果列表。來自Prelude的mapM怎麼樣?
如果myParser :: String -> Parser Process
,然後mapM myParser :: [String] -> Parser [Process]
,這似乎是你在找什麼(使用通用名稱爲Parsec
的解析器類型)。因此,如果您有一系列需要按順序解析的行(稱爲lns
),則可以使用parse (mapM myParser) lns
來獲取所需內容。
相關問題
- 1. Haskell:解析命令行參數
- 2. Haskell:解析命令行參數
- 3. 用戶命令解析器
- 4. 如何解除污染系統命令
- 5. C++ - 系統命令
- 6. 系統命令bash
- 7. C++系統命令
- 8. MATLAB系統命令
- 9. 構建命令(Haskell構建系統)後的Cabal
- 10. Haskell JSON解析器不解析對象
- 11. (PHP)解析命令
- 12. 選擇Haskell解析器
- 13. Haskell解析器到AST
- 14. perl chdir和系統命令
- 15. 使用系統命令
- 16. awk的系統命令
- 17. 系統調用和命令
- 18. 系統命令 - Java的
- 19. Python操作系統命令
- 20. perl系統命令執行
- 21. perl中的系統命令
- 22. Matlab「系統」命令卡住
- 23. 系統命令中的R
- 24. MySQL的系統命令
- 25. php系統命令linux
- 26. C++ linux系統命令
- 27. Groovyscript grails系統命令
- 28. 使用getOpt解析Haskell的命令行參數
- 29. 從Haskell的命令行參數解析CSV列表
- 30. Twillio約會系統解析